[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