diff --git a/src/all_sequences/base_sequences.jl b/src/all_sequences/base_sequences.jl index 11fbda0a2722da1f6c208a94c0e9ddac82962ca9..b6b4bbeb3a152c310a8a198f5eb85022807e68ad 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 0f7cbc2bdaf6f2c17f52e1941efa05913f5cb352..d58bf0a2aeb7a7bbacfef0a946a81f0fb4ea5a40 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