[Ipopt] Bound-constrained solution worst than initial guess

Andreas Waechter andreasw at watson.ibm.com
Thu Jun 5 13:54:42 EDT 2008


Hi Rafael,

> I've found a solution for my problem by adjusting the value of the
> option bound_mult_init_val from 1 to 0.001.
>
> I'm not sure about the actual meaning of that option but it did the
> trick.

It means that the dual variables are not initialized to 1, but to 0.001 
instead.

A related option is the bound_mult_init_method option.  By default, it is 
set to "constant", which means that all bound multiplier variables get the 
same value (determined by bound_mult_init_val).  But if you have a good 
starting point, it might be better to initialize the multipliers according 
to how close the variables are to their bounds.  If you set the 
bound_mult_init_method option to "mu-based", it will set the initial value 
for each bound multiplier z_i to

z_i  =  mu/s_i

where mu is the initial value of the barrier parameter (mu_init), and s_i 
is the value of the slack corresponding to the bound, i.e., the distance 
of the initial value to the bound.

So, in your context, it might be useful to choose bound_mult_init_method 
as mu-based, and to choose a relatively small value of the initial barrier 
parameter (mu_iniy = 1e-3 or so).  But maybe it doesn't help ;-)

Another thing:  For your case it might also be useful to increase the 
"weight" of the objective function - if the objective function gradients 
are small, the algorithm might satisfy the termination criteria too easily 
and you get a suboptimal solution.  So, it might be worth tring to 
increase the value of "obj_scaling_factor"

Regards,

Andreas

>
> Regards.
>
> On Thu, 2008-06-05 at 12:00 -0400, ipopt-request at list.coin-or.org wrote:
>> Dear all,
>>
>> I'm trying to solve a small bound-constrained problem with Ipopt. I'm
>> giving the analytic first-order derivatives and no hessian information.
>>
>> The problem is, I have a very good initial estimation of the optimum.
>> With my initial estimative, the objective function evaluates to
>> -2.6903480e+01. My initial estimate is feasible with respect to the
>> bounds and there is no additional constraints. My doubt is: how can
>> Ipopt find a solution which is worst ?(-2.6826471985692432e+01) than my
>> initial guess, if the initial guess is a feasible solution? Is that
>> something related with the tolerances or options?
>>
>> Thank you in advance.
>>
>> By the way, the derivative checker cannot find any errors on my
>> derivatives.
>>
>> It follows the output for the problem:


More information about the Ipopt mailing list