From 6d458fe68ef1d625fe5940a49eb9de8d8d498dce Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk>
Date: Thu, 15 Feb 2024 17:58:03 +0000
Subject: [PATCH] Initialise duration summation with 0.

---
 src/all_sequences/base_sequences.jl | 2 +-
 src/all_sequences/sequences.jl      | 8 +++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/all_sequences/base_sequences.jl b/src/all_sequences/base_sequences.jl
index 11fbda0..b6b4bbe 100644
--- a/src/all_sequences/base_sequences.jl
+++ b/src/all_sequences/base_sequences.jl
@@ -75,7 +75,7 @@ TR(bs::BaseSequence) = duration(bs)
 
 
 duration(bs::BaseSequence{0}) = 0.
-duration(bs::BaseSequence) = sum(duration.(bs))
+duration(bs::BaseSequence) = sum(duration.(bs); init=0.)
 
 
 end
diff --git a/src/all_sequences/sequences.jl b/src/all_sequences/sequences.jl
index 0f7cbc2..d58bf0a 100644
--- a/src/all_sequences/sequences.jl
+++ b/src/all_sequences/sequences.jl
@@ -23,12 +23,14 @@ struct Sequence{N} <: BaseSequence{N}
 end
 
 function Sequence(blocks::AbstractVector; TR=:min)
+    blocks = to_block.(blocks)
+    actual_duration = sum(duration, blocks; init=0.)
     if TR == :min
-        TR = sum(duration, blocks; init=0.)
+        TR = actual_duration
     end
-    res = Sequence{length(blocks)}(SVector{length(blocks)}(to_block.(blocks)), get_free_variable(TR))
+    res = Sequence{length(blocks)}(SVector{length(blocks)}(blocks), get_free_variable(TR))
     if !(res.TR isa Number) || !(duration(res) isa Number)
-        @constraint global_model() res.TR >= sum(duration, blocks; init=0.)
+        @constraint global_model() res.TR >= actual_duration
     end
 end
 
-- 
GitLab