Purpose
Synopsis
int XPRBaddcuts(XPRBprob prob, XPRBcut *cta, int num);
Arguments
prob
|
Reference to a problem.
|
cta
|
Array of previously defined cuts.
|
num
|
Number of cuts in cta.
|
Return value
0 if function executed successfully, 1 otherwise.
Example
The example shows how to set up the cut manager node callback to add three previously defined cuts ca in node 2 of the MIP search.
XPRBcut ca[3];
XPRBprob expl1;
int XPRS_CC usrcme(XPRSprob oprob, void* vd)
{
int num;
XPRSgetintattrib(oprob, XPRS_NODES, &num);
if(num == 2) XPRBaddcuts(expl1, ca, 3);
return 0;
}
int main(int argc, char **argv)
{
XPRSprob oprob;
expl1 = XPRBnewprob("cutexample");
... /* Define the problem and the cuts 'ca' */
XPRBsetcutmode(expl1, 1); /* Enable the cut mode */
oprob = XPRBgetXPRSprob(expl1); /* Get Optimizer problem */
XPRSsetcbcutmgr(oprob, usrcme, NULL); /* Set cut mgr. callback */
XPRBsolve(expl1, "g"); /* Solve the MIP problem */
}
Further information
This function adds previously defined cuts to the problem
in Xpress-Optimizer. It may only be called from within the Xpress-Optimizer cut manager
callback functions. BCL does not check for doubles, that is, if the
user defines the same cut twice it will be added twice to the matrix.
Cuts added at a node during the branch and bound search remain valid
for all child nodes but are removed at all other nodes.
Related topics
If you have any comments or suggestions about these pages,
please send mail to docs@dashoptimization.com.