[Ipopt-tickets] [Ipopt] #250: MATLAB crashes when IPOPT converges to machine precision

Ipopt coin-trac at coin-or.org
Sat Apr 30 07:23:49 EDT 2016


#250: MATLAB crashes when IPOPT converges to machine precision
-------------------------------+------------------------
  Reporter:  drosos.kourounis  |      Owner:  ipopt-team
      Type:  defect            |     Status:  closed
  Priority:  normal            |  Component:  Ipopt
   Version:  3.11              |   Severity:  major
Resolution:  wontfix           |   Keywords:
-------------------------------+------------------------
Changes (by stefan):

 * status:  new => closed
 * resolution:   => wontfix


Old description:

> Dear all,
>
>   I observed, that MATLAB crashes when IPOPT converges very close or even
> beyond the machine precision. I tried that both with the mex binaries
> provided at the site version  3.11.8 and the mex files compiled manually
> following the instructions for version 3.11.9. Both Matlab R2012b and
> R2014a were tested. It seems that it is independent of any compilation
> details and appears only when some of the several tolerances (it is not
> clear which one) converges to or below machine precision. Below
>   I am running the examplelasso.m, where the tolerance was set to 1e-17
> to force the reproduction of the bug. At iteration 14 MATLAB crashes so
> we do not see the iteration 15. The same thing happens for several
> different examples when the tolerance is set close to machine epsilon.
>
>   This is Ipopt version 3.11.9, running with linear solver ma57.
>
>   Number of nonzeros in equality constraint Jacobian...:        0
>   Number of nonzeros in inequality constraint Jacobian.:       32
>   Number of nonzeros in Lagrangian Hessian.............:       36
>
>   Total number of variables............................:       16
>                        variables with only lower bounds:        0
>                   variables with lower and upper bounds:        0
>                        variables with only upper bounds:        0
>   Total number of equality constraints.................:        0
>   Total number of inequality constraints...............:       16
>           inequality constraints with only lower bounds:       16
>      inequality constraints with lower and upper bounds:        0
>           inequality constraints with only upper bounds:        0
>
>   iter    objective    inf_pr   inf_du lg(mu)  |d|  lg(rg) alpha_du
> alpha_pr  ls
>      0  2.0362309e+03 0.00e+00 3.39e+01   0.0 0.00e+00    -  0.00e+00
> 0.00e+00   0
>      1  1.2058144e+03 0.00e+00 2.54e+01  -6.0 3.86e+00    -  2.12e-01 2
> .56e-01f  1
>      2  7.1857478e+01 0.00e+00 5.91e-01   0.1 7.22e+00    -  7.18e-01
> 1.00e+00f  1
>      3  6.7127651e+01 0.00e+00 6.28e-07  -1.2 7.90e-01    -  1.00e+00
> 1.00e+00f  1
>      4  5.6437844e+01 0.00e+00 2.21e-03  -2.0 1.86e+00    -  1.00e+00 9
> .53e-01f  1
>      5  5.5727100e+01 0.00e+00 3.43e-03  -7.8 1.88e-01    -  9.91e-01 8
> .26e-01f  1
>      6  5.5643835e+01 0.00e+00 1.31e-02  -4.4 3.30e-02    -  1.00e+00 7
> .77e-01f  1
>      7  5.5629288e+01 0.00e+00 5.37e-03  -5.1 1.07e-02    -  1.00e+00 8
> .69e-01f  1
>      8  5.5626581e+01 0.00e+00 7.28e-05  -6.2 5.04e-03    -  1.00e+00 9
> .97e-01f  1
>      9  5.5626338e+01 0.00e+00 1.02e-12  -7.0 1.46e-03    -  1.00e+00
> 1.00e+00f  1
>   iter    objective    inf_pr   inf_du lg(mu)  |d|  lg(rg) alpha_du
> alpha_pr  ls
>     10  5.5626323e+01 0.00e+00 5.13e-06 -11.9 2.14e-04    -  1.00e+00 9
> .95e-01f  1
>     11  5.5626323e+01 0.00e+00 6.58e-15 -13.7 5.83e-06    -  1.00e+00
> 1.00e+00h  1
>     12  5.5626323e+01 0.00e+00 4.52e-15 -17.0 2.89e-09    -  1.00e+00
> 1.00e+00h  1
>     13  5.5626323e+01 0.00e+00 5.75e-15 -17.3 1.36e-15    -  1.00e+00
> 1.00e+00   0
>     14  5.5626323e+01 5.02e-17 4.19e-15 -17.3 4.27e-16    -  1.00e+00
> 1.00e+00T  0

New description:

 Dear all,

   I observed, that MATLAB crashes when IPOPT converges very close or even
 beyond the machine precision. I tried that both with the mex binaries
 provided at the site version  3.11.8 and the mex files compiled manually
 following the instructions for version 3.11.9. Both Matlab R2012b and
 R2014a were tested. It seems that it is independent of any compilation
 details and appears only when some of the several tolerances (it is not
 clear which one) converges to or below machine precision. Below
   I am running the examplelasso.m, where the tolerance was set to 1e-17 to
 force the reproduction of the bug. At iteration 14 MATLAB crashes so we do
 not see the iteration 15. The same thing happens for several different
 examples when the tolerance is set close to machine epsilon.
 {{{
   This is Ipopt version 3.11.9, running with linear solver ma57.

   Number of nonzeros in equality constraint Jacobian...:        0
   Number of nonzeros in inequality constraint Jacobian.:       32
   Number of nonzeros in Lagrangian Hessian.............:       36

   Total number of variables............................:       16
                        variables with only lower bounds:        0
                   variables with lower and upper bounds:        0
                        variables with only upper bounds:        0
   Total number of equality constraints.................:        0
   Total number of inequality constraints...............:       16
           inequality constraints with only lower bounds:       16
      inequality constraints with lower and upper bounds:        0
           inequality constraints with only upper bounds:        0

   iter    objective    inf_pr   inf_du lg(mu)  |d|  lg(rg) alpha_du
 alpha_pr  ls
      0  2.0362309e+03 0.00e+00 3.39e+01   0.0 0.00e+00    -  0.00e+00
 0.00e+00   0
      1  1.2058144e+03 0.00e+00 2.54e+01  -6.0 3.86e+00    -  2.12e-01 2
 .56e-01f  1
      2  7.1857478e+01 0.00e+00 5.91e-01   0.1 7.22e+00    -  7.18e-01
 1.00e+00f  1
      3  6.7127651e+01 0.00e+00 6.28e-07  -1.2 7.90e-01    -  1.00e+00
 1.00e+00f  1
      4  5.6437844e+01 0.00e+00 2.21e-03  -2.0 1.86e+00    -  1.00e+00 9
 .53e-01f  1
      5  5.5727100e+01 0.00e+00 3.43e-03  -7.8 1.88e-01    -  9.91e-01 8
 .26e-01f  1
      6  5.5643835e+01 0.00e+00 1.31e-02  -4.4 3.30e-02    -  1.00e+00 7
 .77e-01f  1
      7  5.5629288e+01 0.00e+00 5.37e-03  -5.1 1.07e-02    -  1.00e+00 8
 .69e-01f  1
      8  5.5626581e+01 0.00e+00 7.28e-05  -6.2 5.04e-03    -  1.00e+00 9
 .97e-01f  1
      9  5.5626338e+01 0.00e+00 1.02e-12  -7.0 1.46e-03    -  1.00e+00
 1.00e+00f  1
   iter    objective    inf_pr   inf_du lg(mu)  |d|  lg(rg) alpha_du
 alpha_pr  ls
     10  5.5626323e+01 0.00e+00 5.13e-06 -11.9 2.14e-04    -  1.00e+00 9
 .95e-01f  1
     11  5.5626323e+01 0.00e+00 6.58e-15 -13.7 5.83e-06    -  1.00e+00
 1.00e+00h  1
     12  5.5626323e+01 0.00e+00 4.52e-15 -17.0 2.89e-09    -  1.00e+00
 1.00e+00h  1
     13  5.5626323e+01 0.00e+00 5.75e-15 -17.3 1.36e-15    -  1.00e+00
 1.00e+00   0
     14  5.5626323e+01 5.02e-17 4.19e-15 -17.3 4.27e-16    -  1.00e+00
 1.00e+00T  0
 }}}

--

Comment:

 Probably some mixup of gcc libraries and very hard to reproduce.

--
Ticket URL: <https://projects.coin-or.org/Ipopt/ticket/250#comment:5>
Ipopt <http://projects.coin-or.org/Ipopt>
Interior-point optimizer for nonlinear programs.



More information about the Ipopt-tickets mailing list