Search code examples
optimizationjuliajulia-jumpipopt

Initializing filter in IPOPT


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.


Solution

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