problem.setcboptnode
problem.setcboptnode |
Purpose
Set a user callback to be called during MISLP when an optimal SLP solution is obtained at a node
Synopsis
problem.setcboptnode(callback, object)
feas = callback(prob, object)
Arguments
callback
|
The function to be called when an optimal SLP solution is obtained at a node. It must returns an integer value. If the return value is nonzero, or if the feasibility flag is set nonzero, then further processing of the node will be terminated (it is declared infeasible).
|
prob
|
The problem passed to the callback function.
|
object
|
The user-defined object passed to
setcboptnode.
|
feas
|
Integer containing the feasibility flag. If nonzero, the node is declared infeasible.
|
Example
The following example defines a callback function to be run at each node when an SLP optimal solution is found. If there are significant penalty errors in the solution, the node is declared infeasible.
p.setcboptnode(CBOptNode, None)
A suitable callback function might resemble the following:
def CBOptNode(prob, data) { total = prob.attributes.xslp_errorcosts objval = prob.attributes.xslp_objval if abs(total) > abs(objval) * 0.001 and abs(total) > 1: return 1 else: return 0
Further information
If a node is declared infeasible from the callback function, the cost of exploring the node further will be avoided.
This callback must be used in place of setcboptnode when optimizing with MISLP.
Related topics