[Ipopt] Problem setting the convergence tolerance using the "tol" option in Matlab

Uwe Sander sander at tum.de
Tue Mar 2 03:39:37 EST 2010

Hi Andreas,

thanks for these useful tips. :-)

I am now sure that the Matlab interface is not the problem. The "tol" 
option is passed correctly to Ipopt. The problem rather seems to be in 
the computation of the NLP error which is significant for the 
convergence tolerance. When the optimisation stops at e.g. -0.999 (-1 is 
the optimimum) the corresponding NLP error will be of the order of 10^0, 
instead of the order of 10^(-3) (what I would expect in all my naivety 
for this example).
I am not sure if setting the "obj_scaling_factor" is the right thing to 
do in this case or if there is something else I have overlooked.

Thanks again,

On 02/26/2010 10:37 PM, Andreas Waechter wrote:
> Hallo Uwe,
> I just tried it myself (using the new MatlabInterface) in Ipopt (trunk
> version), and, in the example problem examplehs038, I set
> options.ipopt.tol = 1e-2;
> After I did this, Ipopt took much fewer iterations, and terminated with a
> tolerance of 1.2e-3  - the iteration before that had an error of 2e-2.
> Maybe you are not correctly communicating the options to Ipopt?  What
> happens if you set the options in an options file (ipopt.opt)?  Also, if
> you set the print_level high enough, you can see what options are given to
> Ipopt and you can verify if Ipopt sees the options you are setting.
> Also, maybe your problems is solved so quickly that the first iteration
> with an error better than 1e-2 has an error of already 1e-8?
> Anyway, I hope this helps,
> Andreas
> On Mon, 22 Feb 2010, Uwe Sander wrote:
>> Hi everybody,
>> I have a minimisation problem where the minimal function value is -1.
>> But I'm happy when Ipopt gets close enough, let's say to -0.99. So I set
>> the "tol" option (in Matlab) to 10^-2 and started the optimisation. But
>> Ipopt still converged with an accuracy of 10^-8 which is the default for
>> "tol". In the documentation I saw that three other criteria play a role
>> when the algorithm terminates: "dual_inf_tol", "primal_inf_tol", and
>> "cmpl_inf_tol". I could set the first and the third of these options but
>> found no way to set the second ("primal_inf_tol"). I ran the
>> optimisation again, having set all accessible options to 10^-2, but got
>> the same result as before: a convergence tolerance of 10^-8.
>> What am I doing wrong?
>> Is there even a direct way to tell Ipopt to stop at -0.99?
>> Best regards,
>> Uwe
>> _______________________________________________
>> Ipopt mailing list
>> Ipopt at list.coin-or.org
>> http://list.coin-or.org/mailman/listinfo/ipopt

More information about the Ipopt mailing list