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