[Coin-ipopt] Re: Putt-Putt, Sputter, Solved -- IPOPT tuning help?

Frank J. Iannarilli franki at aerodyne.com
Tue Jun 13 23:55:55 EDT 2006


Following up on my initial post:

I'm now using IPOPT3.1.0.

Here is some hopefully telling behavior that I've gleaned from scanning 
output file contents.

I've tried a slightly larger problem instance with various IPOPT option 
settings.  This problem is indeed feasible, as verified by several 
IPOPT-founded solutions.  But for default and many option variations, there 
are either way too many iterations, or pre-mature termination (after 
hundreds of iterations) to infeasible points.

 * At the outset of iterations, the iteration matrix has zero-valued 
eigenvalues, thus delta_c is employed for conditioning. To achieve 
convergence (tol=1e-4) in about 400-500 iterations, I needed to boost 
  jacobian_regularization_value 1e-3  # delta_c  (default: 1e-8)
  jacobian_regularization_exponent 1e-1    (default: 2.5e-1)
Otherwise, default option setting leads to infeasible pt termination. 
Interestingly, with default value of delta_c, the iteration matrix breaks 
free of zero-valued eigenvalues after the first few iterations.

 * (With boosted delta_c), the IPOPT filter "coughs" at about 90 
iterations, thereby beginning the Restoration Phase.  Before this, delta_c 
conditoning continues to be employed; thereafter not.  Also, before this, 
the lagrange multiplier terms and their gradients ||.||_inf start climbing 
to ~1e6, 1e7, whereas the primal terms are around 1e1; thereafter, all the 
primal and dual variables and gradients are comparable ~ 1e2.

 * The restoration phase continues for about 300 iterations, at the end of 
which we get:

  Optimal solution found!
  Optimal Objective Value = 1.5189365323352031E+003
  Number of Iterations = 348
  Step size for bound multipliers: 4.42e-007
  Bound multipliers after restoration phase too large (max=6.33e+006). Set 
all to 1.

That bit about the bound multipliers doesn't make sense to me, since just 
above, they were printed as:
  ||curr_v_L||_inf = 1.8544836972327396e+001
  ||curr_v_U||_inf = 1.0513570111533468e+002
  ||delta_v_L||_inf = 5.4028411824574746e+001
  ||delta_v_U||_inf = 2.1209207829198019e+002

 * Anyway, after end of restoration phase, another 200 iterations commence 
before optimal solution is reached.

==== my ipopt.opt contents for achieving convergence: =====
 ma27_pivtol 1e-14   # default: 1e-8
 tol 1e-4  # > 0 default: 1e-8
 mu_strategy adaptive
 quality_function_centrality cubed-reciprocal
 quality_function_balancing_term cubic
 jacobian_regularization_value 1e-3  # delta_c
 jacobian_regularization_exponent 1e-1

 * I tried various perturbations on the above theme:

 - pivtol made no difference; if anything, relaxing it caused infeasible pt 

 - toggling the following was of no help:
alpha_for_y # primal (default)

 - To perturb problem scaling, in my model I tried taking square-roots of 
vector inner-products rather than working with raw inner products, to no 
avail.  The IPOPT behavior was about the same.


I continue to toy with the notion of initializing the variables to feasible 
values, but at issue is that I can't initialize them ALL to feasible 
values.  And it seems partial initialization would be pointless.

Any ideas for IPOPT tuning against the aforementioned behaviors appreciated!


Frank J. Iannarilli, franki at aerodyne.com
Aerodyne Research, Inc., 45 Manning Rd., Billerica, MA 01821 USA

More information about the Coin-ipopt mailing list