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