From c2f7ede6f13641c728cc602e7035db1dfcb2db85 Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <MichielCottaar@protonmail.com>
Date: Tue, 30 Jul 2024 15:40:14 +0100
Subject: [PATCH] Add final cost function to minimise sequence length

---
 src/containers/base_sequences.jl | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/containers/base_sequences.jl b/src/containers/base_sequences.jl
index d595640..9d024e7 100644
--- a/src/containers/base_sequences.jl
+++ b/src/containers/base_sequences.jl
@@ -4,7 +4,7 @@ Defines [`BaseSequence`](@ref) and [`Sequence`](@ref)
 module BaseSequences
 import StaticArrays: SVector
 import JuMP: @constraint
-import ...Variables: get_free_variable, VariableType, variables, set_simple_constraints!, make_generic, get_gradient, get_pulse, get_gradient, @defvar
+import ...Variables: get_free_variable, VariableType, variables, set_simple_constraints!, make_generic, get_gradient, get_pulse, get_gradient, @defvar, add_cost_function!
 import ...BuildSequences: global_scanner
 import ...Components: EventComponent, NoGradient, edge_times
 import ...Scanners: Scanner, B0
@@ -151,10 +151,11 @@ struct Sequence{S, N} <: BaseSequence{N}
     scanner :: Scanner
 end
 
-function Sequence(blocks::AbstractVector; name=:Sequence, scanner=nothing, variables...)
+function Sequence(blocks::AbstractVector; name=:Sequence, scanner=nothing, vars...)
     blocks = to_block_pair.(blocks)
     res = Sequence{name, length(blocks)}(SVector{length(blocks)}(blocks), isnothing(scanner) ? global_scanner() : scanner)
-    set_simple_constraints!(res, variables)
+    set_simple_constraints!(res, vars)
+    add_cost_function!(variables.duration(res), 3)
     return res
 end
 
-- 
GitLab