Xpress-SLP Solution Process



This section gives a brief overview of the sequence of operations within Xpress-SLP once the data has been set up. The positions of the possible user callbacks are also shown.

[Call out to user callback if set by XSLPsetcbslpstart]
Augment the matrix (create the linearized structure) if not already done
DO
 [Call out to user callback if set by XSLPsetcbiterstart]
 Solve linearized problem using the Xpress Optimizer
 Recover SLP variable and delta solution values
 [Call out to user callback if set by XSLPsetcbcascadestart]
 Sequentially update values of SLP variables (cascading) and re-calculate coefficients
 For each variable (in a suitable evaluation order):
   Update solution value (cascading) and re-calculate coefficients
   [Call out to user callback if set by XSLPsetcbcascadevar]
 [Call out to user callback if set by XSLPsetcbcascadeend]
 Test convergence against specified tolerances and other criteria
 For each variable:
   Test convergence against specified tolerances
   [Call out to user callback if set by XSLPsetcbitervar]
 If not all variables have converged, check for other extended convergence criteria
 If the solution has converged, then BREAK
 For each SLP variable:
   Update history
   Reset step bounds
 [Call out to user callback if set by XSLPsetcbiterend]
 Update coefficients, bounds and RHS in linearized matrix
 Change row types for DC rows as required
 If SLP iteration limit is reached, then BREAK
END DO
[Call out to user callback if set by XSLPsetcbslpend]

For MISLP (mixed-integer SLP) problems, the above solution process is normally repeated at each node. The standard procedure for each node is as follows:

Initialize node
[Call out to user callback if set by XSLPsetcbprenode]
Solve node using SLP procedure
If an optimal solution is obtained for the node then
 [Call out to user callback if set by XSLPsetcboptnode]
If an integer optimal solution is obtained for the node then
 [Call out to user callback if set by XSLPsetcbintsol]
When node is completed
 [Call out to user callback if set by XSLPsetcbslpnode]

When a problem is destroyed, there is a call out to the user callback set by XSLPsetcbdestroy.



If you have any comments or suggestions about these pages, please send mail to docs@dashoptimization.com.