Monday, August 23, 2010

Long running horizon

I am experimenting with a timber model. These models have typically long horizons, which can cause some problems with some solvers. As the model has a nonlinear objective I tried a few NLP solvers:

Solver Objective (maximize)
Conopt 104599.7740
Minos 53746.0234
Snopt 6651.1413

This looks pretty bad. Fortunately, a simple option setting: SCALE OPTION = 0, can make things much better:

Solver Objective (maximize)
Minos (no scaling) 104599.7740
Snopt (no scaling) 104599.6879

Intuitively this makes some sense: MINOS and SNOPT scale by default only the linear variables. This strategy is actually not without merit: the Jacobian elements for these nonlinear variables can change quite a lot during the optimization, so scaling based on the initial Jacobian elements may not be very wise. However, in some cases making this distinction between linear and nonlinear variables can make things worse. In this case it is better not to scale at all.

I was first tinkering with the optimality tolerance, as I have seen with other forestry models (LP and NLP) that for these ridiculously long time horizons, tightening the optimality tolerance can help getting better solutions. For this model that was not the case.