When all else fails, try the following parameters to make the
algorithms more robust:
- ScaleFlag, ObjScale (All models)
- It is always best to reformulate a model yourself. However, for cases
when that is not possible, these two parameters provide some of the
same benefits. Set ScaleFlag=2 for aggressive scaling of
the coefficient matrix. ObjScale rescales the objective
row; a negative value will use the largest
objective coefficient to choose the scaling. For example, ObjScale=-0.5 will divide all objective coefficients by the square
root of the largest objective coefficient.
- NumericFocus (All models)
- The NumericFocus parameter controls how the solver manages numerical
issues. Settings 1-3 increasingly shift the focus towards more care
in numerical computations, which can impact performance. The
NumericFocus parameter employs a number of strategies to
improve numerical behavior, including the use of quad precision and
a tighter Markowitz tolerance. It is generally
sufficient to try different values of NumericFocus. However, when NumericFocus helps
numerics but makes everything much slower, you can try setting
Quad=1 and/or larger values of MarkowitzTol
such as 0.1 or 0.5.
- NormAdjust (Simplex)
- In some cases, the solver can be more robust with different values of
the simplex pricing norm. Try setting NormAdjust to 0, 1,
2 or 3.
- BarHomogeneous (Barrier)
- For models that are infeasible or unbounded, the default barrier
algorithm may have numerical issues. Try setting BarHomogeneous=1.
- CrossoverBasis (Barrier)
- Setting CrossoverBasis=1 takes more time but can be more robust when creating
the initial crossover basis.
- GomoryPasses (MIP)
- In some MIP models, Gomory cuts can contribute to numerical issues.
Setting GomoryPasses=0 may help numerics, but it may make the MIP
more difficult to solve.
- Cuts (MIP)
- In some MIP models, various cuts can contribute to numerical issues. Setting Cuts=1 or Cuts=0 may help numerics, but it may make the MIP more difficult to solve.