Initializing help system before first use

XPRBendcb

XPRBendcb


Purpose
Reset BCL to the original optimizer problem in a callback.
Synopsis
int XPRBendcb(XPRBprob bprob);
Argument
bprob 
Reference to a BCL problem.
Return value
0 if function executed successfully, 1 otherwise.
Example
The example shows how to set up the MIP solution callback 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 back to the original optimizer problem for all BCL accesses to Xpress Optimizer. A call to this function terminates a block of calls to BCL functions in an optimizer callback that is preceded by XPRBbegincb. The call to XPRBendcb releases the BCL problem (access to the BCL problem is locked to the particular thread between the two function calls).
Related topics