[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
Hi,
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
delta_c:
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:
RESTORATION PHASE RESULTS
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
<snip>
||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
termination.
- toggling the following was of no help:
linear_scaling_on_demand
nlp_scaling_method
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!
Regards,
Frank J. Iannarilli, franki at aerodyne.com
Aerodyne Research, Inc., 45 Manning Rd., Billerica, MA 01821 USA
www.aerodyne.com/cosr/cosr.html
More information about the Coin-ipopt
mailing list