From b05952820b81cd516e5ac9f8f49ad86555745296 Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <MichielCottaar@protonmail.com>
Date: Wed, 11 Sep 2024 16:45:20 +0100
Subject: [PATCH] Compute cost function value on the fly rather than passing it
 around

---
 src/build_sequences.jl | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/build_sequences.jl b/src/build_sequences.jl
index f6dc6a0..6a4b1f6 100644
--- a/src/build_sequences.jl
+++ b/src/build_sequences.jl
@@ -76,12 +76,11 @@ function build_sequence(f::Function, scanner::Union{Nothing, Scanner}, model::Tu
             if !iszero(num_variables(jump_model))
                 optimise_with_cost_func!(jump_model, total_cost_func(), n_attempts)
                 prev_cost_func = nothing
-                prev_opt_value = nothing
                 for cost_func in iterate_cost()
                     if !isnothing(prev_cost_func)
-                        @constraint jump_model prev_cost_func <= prev_opt_value
+                        @constraint jump_model prev_cost_func <= value(prev_cost_func)
                     end
-                    prev_opt_value = optimise_with_cost_func!(jump_model, cost_func, n_attempts)
+                    optimise_with_cost_func!(jump_model, cost_func, n_attempts)
                     prev_cost_func = cost_func
                 end
             end
@@ -152,7 +151,6 @@ function optimise_with_cost_func!(jump_model::Model, cost_func, n_attempts)
         error("Optimisation failed to converge. The following errors were raised: $err_string. Example errors for each type are printed above.")
     end
     backend(jump_model).optimizer.model.inner.x .= min_values
-    return min_objective
 end
 
 function build_sequence(f::Function, scanner::Union{Nothing, Scanner}=Default_Scanner; optimise=true, n_attempts=20, print_level=0, mu_strategy="adaptive", max_iter=1000, kwargs...)
-- 
GitLab