Initializing help system before first use

XSLP_ALGORITHM, SLPALGORITHM

Description
Bit map describing the SLP algorithm(s) to be used
Type
Integer
Values
Bit
Meaning
0 
Do not apply step bounds.
1 
Apply step bounds to SLP delta vectors only when required.
2 
Estimate step bounds from early SLP iterations.
3 
Use dynamic damping.
4 
Do not update values which are converged within strict tolerance.
5 
Retain previous value when cascading if determining row is zero.
6 
Reset XSLP_DELTA_Z to zero when converged and continue SLP.
7 
Quick convergence check.
8 
Escalate penalties.
9 
Use the primal simplex algorithm when all error vectors become inactive.
11 
Continue optimizing after penalty cost reaches maximum.
12 
Accept a solution which has converged even if there are still significant active penalty error vectors.
13 
Skip the solution polishing step if the LP postsolve returns a slightly infeasible, but claimed optimal solution.
14 
Step bounds are updated to accomodate cascaded values (otherwise cascaded values are pushed to respect step bounds).
15 
Apply clamping when converged on extended criteria only with some variables having active step bounds.
16 
Apply clamping when converged on extended criteria only.
Default value
166 (sets bits 1, 2, 5, 7)
Notes

Bit 0: Do not apply step bounds. The default algorithm uses step bounds to force convergence. Step bounds may not be appropriate if dynamic damping is used.

Bit 1: Apply step bounds to SLP delta vectors only when required. Step bounds can be applied to all vectors simultaneously, or applied only when oscillation of the delta vector (change in sign between successive SLP iterations) is detected.

Bit 2: Estimate step bounds from early SLP iterations. If initial step bounds are not being explicitly provided, this gives a good method of calculating reasonable values. Values will tend to be larger rather than smaller, to reduce the risk of infeasibility caused by excessive tightness of the step bounds.

Bit 3: Use dynamic damping. Dynamic damping is sometimes an alternative to step bounding as a means of encouraging convergence, but it does not have the same power to force convergence as do step bounds.

Bit 4: Do not update values which are converged within strict tolerance. Models which are numerically unstable may benefit from this setting, which does not update values which have effectively hardly changed. If a variable subsequently does move outside its strict convergence tolerance, it will be updated as usual.

Bit 5: Retain previous value when cascading if determining row is zero. If the determining row is zero (that is, all the coefficients interacting with it are either zero or in columns with a zero activity), then it is impossible to calculate a new value for the vector being cascaded. The choice is to use the solution value as it is, or to revert to the assumed value

Bit 6: Reset XSLP_DELTA_Z to zero when converged and continue SLP. One of the mechanisms to avoid local optima is to retain small non-zero coefficients between delta vectors and constraints, even when the coefficient should strictly be zero. If this option is set, then a converged solution will be continued with zero coefficients as appropriate.

Bit 7: Quick convergence check. Normally, each variable is checked against all convergence criteria until either a criterion is found which it passes, or it is declared "not converged". Later (extended convergence) criteria are more expensive to test and, once an unconverged variable has been found, the overall convergence status of the solution has been established. The quick convergence check carries out checks on the strict criteria, but omits checks on the extended criteria when an unconverged variable has been found.

Bit 8: Escalate penalties. Constraint penalties are increased after each SLP iteration where penalty vectors are present in the solution. Escalation applies an additional scaling factor to the penalty costs for active errors. This helps to prevent successive solutions becoming "stuck" because of a particular constraint, because its cost will be raised so that other constraints may become more attractive to violate instead and thus open up a new region to explore.

Bit 9: Use the primal simplex algorithm when all error vectors become inactive. The primal simplex algorithm often performs better than dual during the final stages of SLP optimization when there are relatively few basis changes between successive solutions. As it is impossible to establish in advance when the final stages are being reached, the disappearance of error vectors from the solution is used as a proxy.

Bit 11: Continue optimizing after penalty cost reaches maximum. Normally if the penalty cost reaches its maximum (by default the value of XPRS_PLUSINFINITY), the optimization will terminate with an unconverged solution. If the maximum value is set to a smaller value, then it may make sense to continue, using other means to determine when to stop.

Bit 12: Accept a solution which has converged even if there are still significant active penalty error vectors. Normally, the optimization will continue if there are active penalty vectors in the solution. However, it may be that there is no feasible solution (and so active penalties will always be present). Setting bit 12 means that, if other convergence criteria are met, then the solution will be accepted as converged and the optimization will stop.

Bit 13: Due to the nature of the SLP linearizations, and in particular because of the large differences in the objective function (model objective against penalty costs) some dual reductions in the linear presolver might introduce numerically instable reductions that cause slight infeasibilities to appear in postsolve. It is typically more efficient to remove these infeasibilities with an extra call to the linear optimizer; compared to switching these reductions off, which usually has a significant cost in performance. This bit is provided for numerically very hard problems, when the polishing step proves to be too expensive (XSLP will report these if any in the final log summary).

Bit 14: Normally, cascading will respect the step bounds of the SLP variable being cascaded. However, allowing the cascaded value to fall outside the step bounds (i.e. expanding the step bounds) can lead to better linearizations, as cascading will set better values for the SLP variables regarding their determining rows; note, that this later strategy might interfere with convergence of the cascaded variables.

Bit 15: When clamping is applied, then in any iteration when the solution would normally be deemed converged on extended criteria only, an extra step bound shrinking step is applied to help imposing strict convergence. In this variant, clamping is only applied on variables that have converged on extended criteria only and have active step bounds.

Bit 16: When clamping is applied, then in any iteration when the solution would normally be deemed converged on extended criteria only, an extra step bound shrinking step is applied to help imposing strict convergence. In this variant, clamping is applied on all variables that have converged on extended criteria only.

The following constants are provided for setting these bits:

Setting bit 0 XSLP_NOSTEPBOUNDS
Setting bit 1 XSLP_STEPBOUNDSASREQUIRED
Setting bit 2 XSLP_ESTIMATESTEPBOUNDS
Setting bit 3 XSLP_DYNAMICDAMPING
Setting bit 4 XSLP_HOLDVALUES
Setting bit 5 XSLP_RETAINPREVIOUSVALUE
Setting bit 6 XSLP_RESETDELTAZ
Setting bit 7 XSLP_QUICKCONVERGENCECHECK
Setting bit 8 XSLP_ESCALATEPENALTIES
Setting bit 9 XSLP_SWITCHTOPRIMAL
Setting bit 11 XSLP_MAXCOSTOPTION
Setting bit 12 XSLP_RESIDUALERRORS
Setting bit 13 XSLP_NOLPPOLISHING
Setting bit 14 XSLP_CASCADEDBOUNDS
Setting bit 15 XSLP_CLAMPEXTENDEDACTIVESB
Setting bit 16 XSLP_CLAMPEXTENDEDALL

Recommended setting: Bits 1, 2, 5, 7 and usually bits 8 and 9.

Affects routines
See also

© 2001-2025 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.