problem.setcbprenode
problem.setcbprenode |
Purpose
Set a user callback to be called during MISLP after the set-up of the SLP problem to be solved at a node, but before SLP optimization
Synopsis
problem.setcbprenode(callback, data)
feas = callback(prob, data)
Arguments
prob
|
The current SLP problem.
|
callback
|
The function to be called after the set-up of the SLP problem to be solved at a node.
callback returns an integer value. If the return value is nonzero, then further processing of the node will be terminated (it is declared infeasible).
|
prob
|
The problem passed to the callback function.
|
data
|
The user-defined object passed as
Object to
setcbprenode.
|
feas
|
feasibility flag. If
callback return a nonzero, the node is declared infeasible.
|
Example
The following example sets up a callback function to be executed at each node before the SLP optimization starts. The array
IntList contains a list of integer variables, and the function prints the bounds on these variables.
IntList = [...] prob.setcbprenode(CBPreNode, IntList)
A suitable callback function might resemble the following:
def CBPreNode(myProb, intlist): for i in intlist: LO,UP = [],[] myProb.getlb(LO,i,i); myProb.getub(UP,i,i); lb,ub = LO[0], UP[0] if lb > 0 or ub < xp.infinity: print("Col {0}: {1} <= {2}".format(i,lb,ub) return 0
Further information
If a node can be identified as infeasible by the callback function, then the initial optimization at the current node is avoided, as well as further exploration of the node.
Related topics