[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