[Ipopt] inf_du doesn't get smaller
Stefan Vigerske
stefan at math.hu-berlin.de
Fri Dec 12 12:42:36 EST 2014
Hi,
acceptable_tol only applies if there were acceptable_iter (15 by
default) iterations in a row that were acceptable.
If you set
acceptable_tol 1e-4
acceptable_constr_viol_tol 1e-4
acceptable_obj_change_tol 0.01
Ipopt should stop if there have been 15 iterations in a row with
- inf_pr < 1e-4,
- violation of complementarity < 0.01 (default for
acceptable_compl_inf_tol),
- objective change < 1%
- arbitary inf_du (default for
acceptable_dual_inf_tol)
If 15 iterations is too much, then set acceptable_iter to a smaller value.
I don't remember an option to stop if ||d|| is small, but this is
somewhat related to the objective change.
Hope that helps,
Stefan
On 12/10/2014 06:20 PM, Sean C McDuffee wrote:
> I have a problem that results in output like:
>
> iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du
> alpha_pr ls
> 0 3.7869112e-03 0.00e+00 3.20e-04 0.0 0.00e+00 - 0.00e+00
> 0.00e+00 0
> 1 3.7869106e-03 3.10e-35 3.24e-04 -11.0 3.32e-08 - 1.00e+00
> 1.00e+00f 1
> 2 3.7869101e-03 1.76e-37 2.26e-04 -11.0 1.92e-09 - 1.00e+00
> 1.00e+00f 1
> 3 3.7869104e-03 5.29e-37 2.59e-04 -11.0 7.08e-10 - 1.00e+00
> 1.00e+00h 1
> 4 3.7869100e-03 6.88e-36 2.57e-04 -11.0 8.14e-10 - 1.00e+00
> 1.00e+00f 1
> 5 3.7869104e-03 4.41e-37 2.59e-04 -11.0 8.08e-10 - 1.00e+00
> 1.00e+00h 1
> 6 3.7869100e-03 1.41e-36 2.59e-04 -11.0 8.13e-10 - 1.00e+00
> 1.00e+00f 1
> 7 3.7869104e-03 7.05e-36 2.59e-04 -11.0 8.13e-10 - 1.00e+00
> 1.00e+00h 1
> 8 3.7869100e-03 2.91e-36 2.59e-04 -11.0 8.13e-10 - 1.00e+00
> 1.00e+00f 1
> 9 3.7869104e-03 2.03e-36 2.59e-04 -11.0 8.13e-10 - 1.00e+00
> 1.00e+00h 1
> iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du
> alpha_pr ls
> 10 3.7869100e-03 1.94e-36 2.59e-04 -11.0 8.13e-10 - 1.00e+00
> 1.00e+00f 1
> 11 3.7869104e-03 9.79e-36 2.59e-04 -11.0 8.13e-10 - 1.00e+00
> 1.00e+00h 1
> 12 3.7869100e-03 2.38e-36 2.59e-04 -11.0 8.13e-10 - 1.00e+00
> 1.00e+00f 1
> 13 3.7869104e-03 8.38e-36 2.59e-04 -11.0 8.13e-10 - 1.00e+00
> 1.00e+00h 1
> 14 3.7869100e-03 5.29e-36 2.59e-04 -11.0 8.13e-10 - 1.00e+00
> 1.00e+00f 1
> 15 3.7869104e-03 1.23e-35 2.59e-04 -11.0 8.13e-10 - 1.00e+00
> 1.00e+00h 1
> 16 3.7869100e-03 8.82e-37 2.59e-04 -11.0 8.13e-10 - 1.00e+00
> 1.00e+00f 1
> 17 3.7869104e-03 3.17e-36 2.59e-04 -11.0 8.13e-10 - 1.00e+00
> 1.00e+00h 1
>
> ...
>
> What could cause this and can I stop the solver effectively when the
> inf_du can't be lowered anymore? I've tried using acceptable_tol and
> acceptable_dual_inf_tol but inf_du is still being considered for the
> acceptable_tol. I'd like to accept an iteration here if ||d||, inf_pr,
> and change in obj are all small.
>
>
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>
More information about the Ipopt
mailing list