[Ipopt] Acceptance Criteria

Tony Kelman kelman at berkeley.edu
Fri May 10 18:15:57 EDT 2013


Marco,

See the source for OptimalityErrorConvergenceCheck::CurrentIsAcceptable(), 
from line 265 to 329 of 
https://projects.coin-or.org/Ipopt/browser/releases/3.11.0/Ipopt/src/Algorithm/IpOptErrorConvCheck.cpp
Note the return condition at the end. ALL of the acceptable_* options need 
to be satisfied at the same time.

-Tony


-----Original Message----- 
From: Marco Rozgic <marco.rozgic at hsu-hh.de>
Date: Fri, 10 May 2013 16:26:27 +0200
To: ipopt at list.coin-or.org
Subject: [Ipopt] Acceptance Criteria

Hi everybody,

I was trying to figure out how the acceptable_tol features in IPOPT work
and got stuck by trying to force the algorithm to terminate if the
objective value of the function is not change by a threshold. I was
playing around with the h_071 example and did the following:

options.ipopt.acceptable_tol = 5e-1;
options.ipopt.acceptable_iter = 1;
options.ipopt.print_level = 7;
options.ipopt.acceptable_obj_change_tol = 5e-1;

Taking a closer look at the output showed that even at iteration 4 the
acceptable_obj_change_tol criterion is fulfilled (I think its even at
iteration 3 or something like that). But the algorithm stops at
iteration 6 due to the table below. For me it seems like the
acceptable_to options only take into account the values of
acceptable_dual_inf_tol and acceptable_constr_viol_tol and
acceptable_compl_inf_tol.
As I understand with the options given above IPOPT should terminate with
an acceptable solution after it had 1 iteration where the objective
value (relative error divided by max(1,f(x))) changed by a factor of 5e-1.
Or am I mistaking the acceptance options?

Best,

Marco



More information about the Ipopt mailing list