Initializing help system before first use

XPRBbegincb

XPRBbegincb


Purpose
Start using the local optimizer problem with BCL in a callback.
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

© 2001-2019 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.