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.