XPRBbegincb
XPRBbegincb |
Purpose
Synopsis
int XPRBbegincb(XPRBprob bprob, XPRSprob oprob);
Arguments
bprob
|
Reference to a BCL problem.
|
oprob
|
Reference to an Xpress Optimizer problem.
|
Return value
0 if function executed successfully, 1 otherwise.
Example
The example shows how to set up the integer solution callback of Xpress Optimizer to use BCL to display the results.
XPRBprob bprob; XPRBvar x; void XPRS_CC printsol(XPRSprob oprob, void *my_object){ int num; XPRSgetintattrib(oprob, XPRS_MIPSOLS, &num); /* Get number of the solution */ XPRBbegincb(bprob, oprob); /* Use local Optimizer problem */ XPRBsync(bprob, XPRB_XPRS_SOL); /* Update BCL solution values */ XPRBprintf(bprob, "Solution %d: Objective value: %g\n", num, XPRBgetobjval(bprob)); XPRBprintf(bprob, "%s: %g\n", XPRBgetvarname(x), XPRBgetsol(x)); XPRBendcb(bprob); /* Reset BCL to main problem */ } int main(int argc, char **argv) { XPRSprob oprob; bprob = XPRBnewprob("cbexample"); ... /* Define the problem */ oprob = XPRBgetXPRSprob(bprob); /* Get Optimizer problem */ XPRSsetcbintsol(oprob, printsol, NULL); /* Set the callback */ XPRBmipoptimize(bprob, ""); /* Solve the MIP problem */ }
Further information
This function switches from the original problem to the specified (local) optimizer problem for all BCL accesses to Xpress Optimizer (in particular, for solution updates and the definition of cuts). A call to this function must precede any call to such BCL functions in optimizer MIP callbacks when the default multi-threaded MIP search is used for solving a problem. A call to
XPRBbegincb must always be matched by a call to
XPRBendcb to reset the optimizer problem within BCL and to release the BCL problem (access to the BCL problem is locked to the particular thread in between the two function calls).
Related topics