[Coin-ipopt] slacks vs. ||C||, and presolve issue
Andreas Waechter
andreasw at us.ibm.com
Mon Dec 27 08:13:34 EST 2004
Hi Jon,
Happy Holidays to you and everyone else reading this, too!
Let me start with the second point you brought up: If you pose inequality
constraints to Ipopt, they are automatically reformulated into equality
constraints after adding slacks. In the statistics, Ipopt includes the
slack variables when counting the number of variables, whereas Knitro
doesn't. So, in your case, there were 7 original variables, and you have
16 inequality constraints.
As for the constraint violation at the initial point: First of all, I
don't really know what the slack field for constraints says, but I take
your word for it that only a negative value corresponds to constraint
violation (also for equality constraints, and for inequality constraint
with both lower and upper bounds?). Is it possible that some of the
variables are outside their bounds? In that case, Ipopt would move them
inside the bounds; see the parameters "dbndpush" and "dbndfrac" (Ipopt also
changes the initial values of variables when they are too close to the
bounds), and then your constraint might be violated again. Furthermore, I
don't know if the presolve step in AMPL could make inequality constraints
being violated at the modified initial point.
I hope this helps,
Andreas
"Jonathan Berry"
<jberry at sandia.gov> To: coin-ipopt at list.coin-or.org
Sent by: cc:
coin-ipopt-bounces at list. Subject: [Coin-ipopt] slacks vs. ||C||, and presolve issue
coin-or.org
12/23/2004 08:34 PM
Happy holidays to the ipopt project!
Thanks again for sharing it.
In the course of debugging an application, I've come across
two issues:
- I use ampl's display <constraint>.slack command for all of
my constraints, and there are no negative slacks. I interpret
this to mean that I have successfully initialized all of my
variables to represent a feasible solution. However, the
value of ||C|| at iteration 0 is about 1e+03. This value is
affected by the setting of ISCALE, but never starts at 0.
- In debugging this, I've fixed most variables to their initial
values in ampl, and let IPOPT try to determine the unfixed
ones. Ampl thinks that there are 7 variables after the presolve;
ipopt thinks that there are 23. I tried running KNITRO on
NEOS using the same ampl model and script, and knitro thought
that there were 7 variables after the presolve. Back in the IPOPT
world, I can't match the X(..) values in IPOPT.OUT to the ampl
variables in xxx.col. Has anybody dealt with this before?
-Jon
_______________________________________________
Coin-ipopt mailing list
Coin-ipopt at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/coin-ipopt
More information about the Coin-ipopt
mailing list