[Coin-ipopt] Maximum constraint violation

Andreas Waechter andreasw at watson.ibm.com
Tue Sep 13 22:18:22 EDT 2005

Hi Danh,

I'm forwarding my reply to the mailing list, in case other users observe
issues with problem scaling, too.

> I am sorry for my late response.  I think I could understand why my problem
> meets the difficulty.
> I performed the problem in 5 cases (2 on Linux and 3 on AIX) yesterday. I
> attached 5 outputs of Ipopt in this email.
> I scaled variables 1000 larger than original ones. The problem convergered
> on Linux and I got the result (equivalent result are obtained by multiply
> the results by 1000 times).  The bigger scaled factor I used, the faster
> convergence the problem reached.
> Is there any algorithmic parameter or method in Ipopt to avoid such problem?

By default, Ipopt tries to do some obvious scaling, namely scaling down
constraints and objective function if necessary, so that none of the first
derivatives is larger than 100 at the starting point.

In your case, it seems that you had the opposite kind of bad scaling,
where the nonzero-elements in the constraint Jacobian were much smaller
than 1.

Ipopt (not yet the new C++ version) has some options that try different
ways to scale the problem (option ISCALE), but do not necessarily work
always well.

There are different views of what a "well scaled problems" is, but I think
that following is a good guideline:  A problem is well scaled, if the
typical values of sensitivities of the functions with respect to the
variables (i.e. the non-zero elements in the objective function gradient
and constraint Jacobian) are mostly on the order of 1 or so - very large
values as well as very small values (as you have seen) should be avoided.

It probably pays off to think about those issues when writing down an
optimization problem.  Note that one can change the order of magnitude of
the sensitivities both by multiplying a function with some number, as
well as change the scale by replacing a variable x by y = a*x (which is
what you did).

We are planning to have a section on the new Ipopt webpages, where we want
to collect modeling tips like this - this webpage is Wiki-based, i.e.
everybody can add to the tips and tell about his/her experience...

In any case, I'm glad that you are now able to solve your problem.



More information about the Coin-ipopt mailing list