From fe26f8406040330e6a198fb1db7a0ff89524d1c1 Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk>
Date: Sat, 27 Jan 2024 17:08:49 +0000
Subject: [PATCH] Add constraint to TR

---
 src/containers/sequences.jl | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/containers/sequences.jl b/src/containers/sequences.jl
index 21e44c3..1ecf200 100644
--- a/src/containers/sequences.jl
+++ b/src/containers/sequences.jl
@@ -1,5 +1,5 @@
 module Sequences
-import JuMP: Model
+import JuMP: Model, @constraint
 import ...BuildSequences: @global_model_constructor
 import ...Variables: variables, start_time, duration, VariableType, get_free_variable, TR
 import ...BuildingBlocks: BuildingBlock, to_block
@@ -15,11 +15,13 @@ struct Sequence <: BuildingBlock
     blocks :: Vector{<:BuildingBlock}
     TR :: VariableType
     function Sequence(model::Model, blocks::Vector; TR=nothing)
-        new(
+        seq = new(
             model,
             to_block.(blocks),
             get_free_variable(model, TR),
         )
+        @constraint model seq.TR >= duration(seq)
+        return seq
     end
 end
 
@@ -27,8 +29,8 @@ end
 
 Sequence(model::Model, blocks...; TR=nothing) = Sequence(model, [blocks...]; TR=TR)
 
-Base.length(seq::Sequence) = length(seq)
-Base.getindex(seq::Sequence, index) = seq[index]
+Base.length(seq::Sequence) = length(seq.blocks)
+Base.getindex(seq::Sequence, index) = seq.blocks[index]
 
 """
     start_time(sequence::Sequence, index::Integer, args...)
-- 
GitLab