[Ipopt] is this a bug? bad evaluation of the objective function at the optimum

Pedro C. Alvarez pedroc at eio.uva.es
Tue May 5 14:31:21 EDT 2015


Thank you very much Stefan and Tony for your answers!!

Thanks to them I've discovered 'my bug'. The derivatives were ok, but the 
objective function had a mistake I couldn't see due to the number of the 
decimal digits shown (by R) for the controls at the optimum. I saw

Optimal value of controls: 0.25  0.50  0.75  1.00

but the values with more decimal digits are:

Optimal value of controls: 0.2500000026 0.5000000051 0.7500000076 1.00000001

and when the controls exceed 1.0 there was a bug in my objective function.


Thanks again, and sorry for my clumsiness,

Pedro.

El Martes, 5 de mayo de 2015 08:04:48 Tony Kelman escribió:
> I don't see anything unexpected here. Are you sure there's a primal-dual
> feasible solution with objective value of -9.0328125e+01? At iteration 16
> the primal infeasibility inf_pr was zero, but the dual infeasibility inf_du
> was nonzero. It looks like it maybe should have converged after iteration 6,
> but maybe the Newton step wasn't quite small enough yet. From iteration 7
> until 16 the dual infeasibility was increasing, which is a bit strange.
> Check your derivatives as Stefan said.
> 
> -Tony
> 
> 
> -----Original Message-----
> From: Stefan Vigerske
> Sent: Tuesday, May 05, 2015 7:56 AM
> To: Pedro C. Alvarez ; ipopt at list.coin-or.org
> Subject: Re: [Ipopt] is this a bug? bad evaluation of the objective function
> at the optimum
> 
> Hi,
> 
> bugreports should probably better go into the bugtracking system. There,
> you could also attach your R code to reproduce the issue.
> I don't know if anyone would actually look at it in the near future, though.
> 
> If you want to investigate by yourself, then enabling the derivative
> checker is usually a good first iteration.
> 
> Stefan
> 
> On 05/04/2015 05:56 PM, Pedro C. Alvarez wrote:
> > Hi all,
> > 
> > I am starting to use Ipopt (through R interface), and I found this
> > surprising
> > 'bug'(?) related to the value of the objective function at the optimum.
> > Ipopt
> > finds correctly the optimum, but the value of the objective at the optimum
> > is
> > incorrect.
> > I paste below the output of IPopt. Observe that at iteration #17 the value
> > of
> > the objective is worst that at #16 (which is approx the good value of the
> > objective at the optimum).
> > 
> > The problem I am trying to solve is a very easy convex problem with linear
> > constraints.
> > 
> > Any clue would be appreciated?
> > 
> > thank very much,
> > Pedro.
> > 
> > --------------------------------------------------------------------------
> > ---------------------- This is Ipopt version 3.12.0, running with linear
> > solver mumps.
> > NOTE: Other linear solvers might be more efficient (see Ipopt
> > documentation).
> > 
> > Number of nonzeros in equality constraint Jacobian...:        0
> > Number of nonzeros in inequality constraint Jacobian.:        8
> > Number of nonzeros in Lagrangian Hessian.............:        4
> > 
> > Total number of variables............................:        4
> > 
> >                       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...............:        5
> > 
> >          inequality constraints with only lower bounds:        0
> >     
> >     inequality constraints with lower and upper bounds:        5
> >     
> >          inequality constraints with only upper bounds:        0
> > 
> > iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du
> > alpha_pr
> > ls
> > 
> >     0 -7.3757500e+01 0.00e+00 3.23e+01  -1.0 0.00e+00    -  0.00e+00
> > 
> > 0.00e+00
> > 0
> > 
> >     1 -8.9257486e+01 0.00e+00 3.20e+01  -1.0 1.70e+00    -  3.01e-02
> > 
> > 1.10e-01f
> > 1
> > 
> >     2 -8.9941241e+01 0.00e+00 4.12e+01  -1.0 2.66e-01    -  9.10e-01
> > 
> > 4.03e-02f
> > 1
> > 
> >     3 -8.9814517e+01 0.00e+00 1.42e-14  -1.0 3.57e-03    -  1.00e+00
> > 
> > 1.00e+00f
> > 1
> > 
> >     4 -9.0308405e+01 0.00e+00 1.42e-14  -2.5 6.09e-03    -  1.00e+00
> > 
> > 1.00e+00f
> > 1
> > 
> >     5 -9.0327373e+01 0.00e+00 1.42e-14  -3.8 2.34e-04    -  1.00e+00
> > 
> > 1.00e+00f
> > 1
> > 
> >     6 -9.0328119e+01 0.00e+00 1.42e-14  -5.7 9.21e-06    -  1.00e+00
> > 
> > 1.00e+00f
> > 1
> > 
> >     7 -9.0328122e+01 0.00e+00 2.11e+00  -8.6 1.13e-07    -  1.00e+00
> > 
> > 3.95e-01f
> > 2
> > 
> >     8 -9.0328124e+01 0.00e+00 6.53e+00  -8.6 6.53e-08    -  1.00e+00
> > 
> > 3.40e-01f
> > 2
> > 
> >     9 -9.0328125e+01 0.00e+00 1.60e+01  -8.6 3.70e-08    -  1.00e+00
> > 
> > 3.00e-01f
> > 2
> > iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du
> > alpha_pr
> > ls
> > 
> >    10 -9.0328125e+01 0.00e+00 3.75e+01  -8.6 1.74e-08    -  1.00e+00
> > 
> > 3.99e-02f
> > 5
> > 
> >    11 -9.0328125e+01 0.00e+00 4.80e+01  -8.6 1.23e-08    -  1.00e+00
> > 
> > 2.64e-02f
> > 6
> > 
> >    12 -9.0328125e+01 0.00e+00 5.15e+01  -8.6 1.06e-08    -  1.00e+00
> > 
> > 7.46e-03f
> > 8
> > 
> >    13 -9.0328125e+01 0.00e+00 5.25e+01  -8.6 1.01e-08    -  1.00e+00
> > 
> > 4.84e-04f
> > 12
> > 
> >    14 -9.0328125e+01 0.00e+00 5.27e+01  -8.6 1.00e-08    -  1.00e+00
> > 
> > 2.44e-04f
> > 13
> > 
> >    15 -9.0328125e+01 0.00e+00 5.28e+01  -8.6 9.98e-09    -  1.00e+00
> > 
> > 1.22e-04h
> > 14
> > 
> >    16 -9.0328125e+01 0.00e+00 5.28e+01  -8.6 9.97e-09    -  1.00e+00
> > 
> > 6.10e-05h
> > 15
> > 
> >    17 -8.1203126e+01 0.00e+00 1.42e-14  -8.6 9.97e-09    -  1.00e+00
> > 
> > 1.00e+00w
> > 1
> > 
> > Number of Iterations....: 17
> > 
> >                                     (scaled)                 (unscaled)
> > 
> > jective...............:  -8.1203125989310649e+01   -8.1203125989310649e+01
> > Dual infeasibility......:   1.4210854715202004e-14
> > 1.4210854715202004e-14
> > Constraint violation....:   0.0000000000000000e+00
> > 0.0000000000000000e+00
> > Complementarity.........:   2.5161412838377742e-09
> > 2.5161412838377742e-09
> > Overall NLP error.......:   2.5161412838377742e-09
> > 2.5161412838377742e-09
> > 
> > 
> > Number of objective function evaluations             = 91
> > Number of objective gradient evaluations             = 18
> > Number of equality constraint evaluations            = 0
> > Number of inequality constraint evaluations          = 91
> > Number of equality constraint Jacobian evaluations   = 0
> > Number of inequality constraint Jacobian evaluations = 18
> > Number of Lagrangian Hessian evaluations             = 17
> > Total CPU secs in IPOPT (w/o function evaluations)   =      0.009
> > Total CPU secs in NLP function evaluations           =      0.024
> > 
> > EXIT: Optimal Solution Found.
> 
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt

-- 

--
-----------------------------------------------------
-----------------------------------------------------
        Pedro César Alvarez Esteban
        Dpto. de Estadística e Investigación Operativa
        Facultad de Ciencias
        Universidad de Valladolid
        Paseo de Belén, 7
        47011 Valladolid (SPAIN)
-----------------------------------------------------
        Tfo: +34 983 423930
        Fax: +34 983 423013
        E-mail: pedroc at eio.uva.es
-----------------------------------------------------



More information about the Ipopt mailing list