[Ipopt] Same initialization but different solutions (not thecase with fmincon or KNitro)

Tony Kelman kelman at berkeley.edu
Tue May 27 17:58:15 EDT 2014


Arnaud,

Can you describe details of what OS you're using, version of Matlab, where 
you obtained (or how exactly you compiled) the Ipopt mex file, etc? How 
different are the results between successive runs? Are they all within 
convergence tolerances of optimal?

The usual best-guess explanation for this is if the linear solver is using 
multithreaded non-deterministic BLAS routines that can differ within 
roundoff errors for repeated calls on the same input data. I believe if 
you're using Matlab's MA57 library, it calls Matlab's included MKL BLAS 
which can be multithreaded and potentially subject to this issue. If the mex 
file was one that I precompiled, then I think if you switch the option 
linear_solver to 'mumps' it should use serial reference BLAS and hopefully 
give deterministic results (though likely slower than MA57).

-Tony


-----Original Message----- 
From: Arnaud Barré
Sent: Tuesday, May 27, 2014 2:42 PM
To: ipopt at list.coin-or.org
Subject: Re: [Ipopt] Same initialization but different solutions (not 
thecase with fmincon or KNitro)

I continue to dig the problem. I modified the Malab examples ‘examplehs038’ 
and ‘examplehs071’ furnished with Ipopt to use only approximation methods 
(i.e approximation of the gradient and the hessian). I have approximately 
the same result than the original example (absolute max difference around 
5e-7) and the results are the same when I run the functions several times.

So my problem seems not related to my configuration of Ipopt. On the other 
hand, as my Matlab code works fine with other solvers (fmincon and KNitro), 
I would say that this part is also good …

Is there anything else I could attempt to find my problem?

Thanks,

Arnaud

On May 22, 2014, at 4:46 PM, Arnaud Barré <arnaud.barre at gmail.com> wrote:

> Hi,
>
> I use Ipopt in Matlab and I have approximately the same results than 
> fmincon (interior-point) or KNitro (direct).
>
> I did a test where I run multiple times the same problem (i.e same initial 
> conditions, same configurations) with the three algorithms. I have exactly 
> the same results each time for fmincon and KNitro but not for Ipopt.
>
> If I look in the output of Ipopt (print level 5), I can see a difference 
> in the objective value after some iterations (see the end of this message 
> for some examples). What could be the reason?
>
> My problem is bound constrained only (as summarized below) using a 
> monotone mu strategy, a partial derivate gradient approximation, a hessian 
> approximation (limited-bfgs, max history 10) and the linear solver ma57. 
> The other algorithms (fmincon, KNitro) are configured exactly with the 
> same optons.
>
> Thanks,
>
> Arnaud
>
> This is Ipopt version 3.11.0, running with linear solver ma57.
>
> Number of nonzeros in equality constraint Jacobian...: 0
> Number of nonzeros in inequality constraint Jacobian.: 0
> Number of nonzeros in Lagrangian Hessian.............: 0
>
> Total number of variables……………………….: 9
> variables with only lower bounds: 0
> variables with lower and upper bounds: 9
> variables with only upper bounds: 0
> Total number of equality constraints.................: 0
> Total number of inequality constraints……………: 0
> inequality constraints with only lower bounds: 0
> inequality constraints with lower and upper bounds: 0
> inequality constraints with only upper bounds: 0
>
> ------------------------------------------------------------------------------------
> First 10 iterations / run #1
> ------------------------------------------------------------------------------------
> iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
> alpha_pr  ls
>   0  6.8420967e+03 0.00e+00 1.00e+02  -1.0 0.00e+00    -  0.00e+00 
> 0.00e+00   0
>   1  4.9813866e+02 0.00e+00 3.67e+01  -1.0 4.35e+01    -  1.30e-02 
> 2.21e-02f  1
>   2  2.9178274e+02 0.00e+00 3.13e+01  -1.0 4.12e-01    -  8.23e-01 
> 7.58e-01f  1
>   3  1.5348471e+02 0.00e+00 1.85e+01  -1.0 8.93e-02    -  1.67e-01 
> 1.00e+00f  1
>   4  1.4216085e+02 0.00e+00 4.43e+00  -1.0 4.92e-02    -  9.90e-01 
> 1.00e+00f  1
>   5  1.3684436e+02 0.00e+00 1.89e+00  -1.0 2.75e-02    -  1.00e+00 
> 1.00e+00f  1
>   6  1.3270432e+02 0.00e+00 1.64e+00  -1.0 2.79e-02    -  1.00e+00 
> 1.00e+00f  1
>   7  9.0484123e+01 0.00e+00 4.07e+00  -1.0 2.08e-01    -  6.69e-01 
> 1.00e+00f  1
>   8  3.5107864e+01 0.00e+00 5.58e+00  -1.0 3.94e-01    -  1.00e+00 
> 7.24e-01f  1
>   9  4.3406913e+01 0.00e+00 8.46e+00  -1.0 5.44e-01    -  1.00e+00 
> 2.50e-01f  3
>
> ------------------------------------------------------------------------------------
> First 10 iterations / run #2 (the difference starts at the iteration 7)
> ------------------------------------------------------------------------------------
>   0  6.8420967e+03 0.00e+00 1.00e+02  -1.0 0.00e+00    -  0.00e+00 
> 0.00e+00   0
>   1  4.9813866e+02 0.00e+00 3.67e+01  -1.0 4.35e+01    -  1.30e-02 
> 2.21e-02f  1
>   2  2.9178274e+02 0.00e+00 3.13e+01  -1.0 4.12e-01    -  8.23e-01 
> 7.58e-01f  1
>   3  1.5348471e+02 0.00e+00 1.85e+01  -1.0 8.93e-02    -  1.67e-01 
> 1.00e+00f  1
>   4  1.4216085e+02 0.00e+00 4.43e+00  -1.0 4.92e-02    -  9.90e-01 
> 1.00e+00f  1
>   5  1.3684436e+02 0.00e+00 1.89e+00  -1.0 2.75e-02    -  1.00e+00 
> 1.00e+00f  1
>   6  1.3270432e+02 0.00e+00 1.64e+00  -1.0 2.79e-02    -  1.00e+00 
> 1.00e+00f  1
>   7  9.0484115e+01 0.00e+00 4.07e+00  -1.0 2.08e-01    -  6.69e-01 
> 1.00e+00f  1
>   8  3.5107870e+01 0.00e+00 5.58e+00  -1.0 3.94e-01    -  1.00e+00 
> 7.24e-01f  1
>   9  4.3406888e+01 0.00e+00 8.46e+00  -1.0 5.44e-01    -  1.00e+00 
> 2.50e-01f  3
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt


_______________________________________________
Ipopt mailing list
Ipopt at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/ipopt 



More information about the Ipopt mailing list