Initializing help system before first use

Cascading

Cascading is the process of recalculating the values of SLP variables to be more consistent with each other. The procedure involves sequencing the designated variables in order of dependence and then, starting from the current solution values, successively recalculating values for the variables, and modifying the stored solution values as required. Normal cascading is only possible if a determining row can be identified for each variable to be recalculated. A determining row is an equality constraint which uniquely determines the value of a variable in terms of other variables whose values are already known. Any variable for which there is no determining row will retain its original solution value. Defining a determining row for a column automatically makes the column into an SLP variable.

In extended MPS format, the SLPDATA record type "DR" is used to provide information about determining rows.

In the Xpress NonLinear function library, functions XSLPaddvars, XSLPloadvars, and XSLPchgvar allow the definition of a determining row for a column.

The cascading procedure is as follows:

  • Produce an order of evaluation to ensure that variables are cascaded after any variables on which they are dependent.
  • After each SLP iteration, evaluate the columns in order, updating coefficients only as required. If a determining row cannot calculate a new value for the SLP variable (for example, because the coefficient of the variable evaluates to zero), then the current value may be left unchanged, or (optionally) the previous value can be used instead.
  • If a feedback loop is detected (that is, a determining row for a variable is dependent indirectly on the value of the variable), the evaluation sequence is carried out in the order in which the variables are weighted, or the order in which they are encountered if there is no explicit weighting.
  • Check the step bounds, individual bounds and cascaded values for consistency. Adjust the cascaded result to ensure it remains within any explicit or implied bounds.

Normally, the solution value of a variable is exactly equal to its assumed value plus the solution value of its delta. Occasionally, this calculation is not exact (it may vary by up to the LP feasibility tolerance) and the difference may cause problems with the SLP solution path. This is most likely to occur in a quadratic problem when the quadratic part of the objective function contains SLP variables. Xpress NonLinear can re-calculate the value of an SLP variable to be equal to its assumed value plus its delta, rather than using the solution value itself.

XSLP_CASCADE is a bitmap which determines whether cascading takes place and whether the recalculation of solution values is extended from the use of determining rows to recalculation of the solution values for all SLP variables, based on the assumed value and the solution value of the delta.

In the following table, in the definitions under Category, error means the difference between the solution value and the assumed value plus the delta value. Bit settings in XSLP_CASCADE are used to determine which category of variable will have its value recalculated as follows:

Bit Constant name Category
0 XSLP_CASCADE_ALL SLP variables with determining rows
1 XSLP_CASCADE_COEF_VAR Variables appearing in coefficients where the error is greater than the feasibility tolerance
2 XSLP_CASCADE_ALL_COEF_VAR Variables appearing in coefficients where the error is greater than 1.0E-14
3 XSLP_CASCADE_STRUCT_VAR Variables not appearing in coefficients where the error is greater than the feasibility tolerance
4 XSLP_CASCADE_ALL_STRUCT_VAR Variables not appearing in coefficients where the error is greater than 1.0E-14

In the presence of determining rows that include instantiated functions, SLP can attempt to group the corresponding variables together in the cascading order. This can be achieved by setting

Bit Constant name Effect
0 XSLP_CASCADE_SECONDARY_GROUPS Create secondary order groupping DR rows with instantiated user functions together in the order

© 2001-2019 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.