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.
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.