[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