[Coin-ipopt] Inequality constraints problem.

Andreas Waechter andreasw at watson.ibm.com
Mon Jul 19 13:30:17 EDT 2004


Hi Henk,

Thanks for your message.

I had a look at the file that you attached. I was able to reproduce a
similar behavior to what you describe in your message.

I made one change which was to add the line

     G(6) = 0.d0

in the subroutine EV_G that computes the gradient of the objective
function, since this component of the new variables that you introduced is
zero.  With that, my version solved the problem in 8 iterations.

Before calling EV_G to obtain the gradient for the objective fuction, I
don't set the incoming double precision array G to 0, so it is up to EV_G
to make sure that ALL entries are set, even the zero ones.

I hope the above change also fixes this for you as well.  If not, please
let me know!

Regards

Andreas



On Mon, 19 Jul 2004, H Jansen wrote:

> I'm trying to extend the standard Fortran example (included with the
> Ipopt) with a single inequality constraint, namely:
>
>                  x1 + x2 <= 5
>
> where the optimal values for original problem gives x1 + x2 = 5.743. I
> have applied the following modifications to the example code so as to
> incorporate the above modifications (modified example code is attached):
>
> ...
>
> C Extra slack variable and constraint equation needed
> C      parameter  (N = 5, M = 2)
>       parameter  (N = 6, M = 3)
>
> ...
>
> C Lower bound on slack variable
> C      parameter  (NLB = 5, NUB = 4)
>       parameter  (NLB = 6, NUB = 4)
>
> ...
>
> C Slightly modified starting values
> C   - to have a feasible start (x1+x2=5)
> C   - for slack variable         (x6>0)
> C      data X      / 1d0, 5d0, 5d0, 1d0, -24d0 /
>       data X      / 1d0, 4d0, 5d0, 1d0, -24d0, 0.1d0 /
> C
> C      data ILB    /   1,   2,   3,   4,     5     /
> C      data BNDS_L / 1d0, 1d0, 1d0, 1d0,   0d0 /
> C Lower bound for slack variable
>       data ILB    /   1,   2,   3,   4,     5,     6 /
>       data BNDS_L / 1d0, 1d0, 1d0, 1d0,   0d0,   0d0 /
>
> ...
>       subroutine EV_C(N, X, M, C, DAT, IDAT)
>       implicit none
>       integer N, M
>       double precision C(M), X(N)
>       double precision DAT(*)
>       integer IDAT(*)
>       C(1) = X(1)*X(2)*X(3)*X(4) - X(5) - DAT(1)
>       C(2) = X(1)**2 + X(2)**2 + X(3)**2 + X(4)**2 - DAT(2)
> C
> C Extra constraint equation:
> C With X(6)>=0, this enforces that X(1)+X(2)-5 <= 0, so that
> C X(1)+X(2) <= 5  as required.
> C
>       C(3) = X(1)+X(2)-5.d0+X(6)
>       return
>       end
>
> C end of example.f
>
> I obtain the following IPOPT output:
>
> ....
> ....
> ITER     ERR       MU      ||C||    ||D||   ALFA(X) #LS        F
> Regu
>   550 .141E+02d .184E-05 .359E-02 .675E-01 .100E+01h  1 0.17944288E+02
> .000E+00
>   551 .141E+02d .184E-05 .224E-03 .171E-01 .100E+01h  1 0.17924547E+02
> .000E+00
>   552 .141E+02d .251E-08 .263E-05 .183E-02 .100E+01h  1 0.17922717E+02
> .000E+00
>   553 .141E+02d .251E-08 .263E-04 .489E-02 .100E+01h  1 0.17915952E+02
> .000E+00
>   554 .142E+02d .251E-08 .245E-02 .372E-01 .100E+01h  1 0.17863396E+02
> .000E+00
>   555 .142E+02d .251E-08 .308E-03 .160E-01 .100E+01h  1 0.17845212E+02
> .000E+00
>   556 .142E+02d .251E-08 .205E-04 .502E-02 .100E+01h  1 0.17840290E+02
> .000E+00
>   557 .142E+02d .251E-08 .733E-06 .967E-03 .100E+01h  1 0.17839397E+02
> .000E+00
>  Restoration phase problem converged.
>  Maximum constraint violation   1.11479479E-09 below tolerance.
>  filter: Error: resto_filter returns IERR =  18
>  solve_barrier: filter returns IERR =  18
>  mainloop: Error: solve_barrier ends with IERR =  18
>
> Number of iterations taken .............                    557
> Final value of objective function is.... 0.1783935780275719E+02
>
> Errors at final point                      (scaled)       (unscaled)
> Final maximal constraint violation is... 0.111479E-08    0.111479E-08
> Final value for dual infeasibility is... 0.142122E+02    0.142122E+02
> Final value of complementarity error is. 0.250594E-08    0.250594E-08
>
> The objective function was evaluated   3196 times.
> The constraints were evaluated         3196 times.
>
> EXIT: Restoration phase cannot further improve feasibility
>
> CPU seconds spent in IPOPT and function evaluations =          0.2700
>
>
>  An error occoured after  557 Iterations.
>  The error code is  18
>
> ======================
>
> Apparently there is a feasiblity problem but I can't figure this from
> the model (the complete Fortran code of which is attached).
>
> Has anyone some idea what's wrong?
> Help is much appreciated.
>
> --Henk
>
> --
> Henk Jansen <h.jansen at fel.tno.nl>
> TNO Physics and Electronics Laboratory
>
> --
> ------------------------------------------------------------------------------
> The disclaimer that applies to e-mail from
> TNO Physics and Electronics Laboratory
> can be found on: http://www.tno.nl/disclaimer/email.html
> ------------------------------------------------------------------------------
>





More information about the Coin-ipopt mailing list