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.
Check if problem is an SLP problem or not. Call the appropriate XPRS library function if not, and DONE. [Call out to user callback if set by XSLPsetcbslpstart] Augment the matrix (create the linearized structure) if not already done If determining row data supplied, calculate cascading order and detect determining columns DO [Call out to user callback if set by XSLPsetcbiterstart] If previous solution available, pre-process solution Execute line search [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] Update penalties Update coefficients, bounds and RHS in linearized matrix Solve linearized problem using the Xpress Optimizer Recover SLP variable and delta solution values 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] For each variable with a determining column: Check value of determining column and fix variable when necessary, or [Call out to user callback if set by XSLPsetcbdrcol] Reset variable convergence status if a change is made to a variable 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] 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.
© 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.