# [Coin-ipopt] Inequality constraints problem.

H Jansen h.jansen at fel.tno.nl
Mon Jul 19 10:46:25 EDT 2004

```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
------------------------------------------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: example.f
Type: text/x-fortran
Size: 11183 bytes
Desc: not available
Url : http://list.coin-or.org/pipermail/ipopt/attachments/20040719/b2f93f4a/attachment.bin
```