1

I am currently developing an algorithm where I am manually updating the barrier parameter when some conditions of mine are true, and than calling IPOPT optimize. Like this,

set_optimizer_attributes(model, "mu_target" => my_μ, "mu_init" => my_μ,
                                        "dual_inf_tol" =>  ϵ, "constr_viol_tol" => ϵ
                                        "compl_inf_tol" => ϵ, 
                                        "warm_start_init_point" => "yes"                );
optimize!(model)

However, If my condition is not true and I decide not to increase my_μ. I want to keep the filter from the previous 'iteration' (last time I called optimize!(model)). Is this possible? I want to clear the filter first when I decide to change my_μ. I feel like IPOPT is using a lot of iterations each time so my only suggestion is that it is because of the filter being cleared each time.

Annaquest
  • 131
  • 6
  • I want IPOPT to pick up right where it last ended (where optimize! (model) terminated). I am initializing the dual and primal variables. – Annaquest Mar 06 '23 at 13:26

1 Answers1

1

so my only suggestion is that it is because of the filter being cleared each time

This is probably correct. Ipopt.jl does not keep the low-level Ipopt model between solves, see https://github.com/jump-dev/JuMP.jl/issues/1185.

The JuMP interface is not really intended for this sort of thing. You might need to use the C API to get full control over your algorithm.

Oscar Dowson
  • 2,395
  • 1
  • 5
  • 13