Switching between libraries
Generally speaking, there are two types of Optimizer library functions: those that access information about a problem or change settings for the search algorithms, and those that make changes to the problem definition. The first group of functions may be used in a BCL program without any problem. The second group requires the user to switch completely to the Optimizer library, for instance after a problem has been defined in BCL and the matrix has been loaded into the Optimizer.
BCL-compatible Optimizer functions
The following Optimizer library functions may be used with BCL (however, some caution is required with all functions that take column or row indices as input parameters, see Section Indices of matrix elements below. Furthermore, the solution information in BCL is only updated automatically at the end of the search, in the global callbacks—not for parallelized MIP—it needs to be updated by calling XPRBsync with the parameter XPRB_XPRS_SOL or XPRB_XPRS_SOLMIP):
- setting and accessing problem and control parameters: functions XPRSsetintcontrol, XPRSgetintcontrol, XPRSgetintattrib etc.;
- output and saving: functions XPRSsave, XPRSwritebasis, XPRSrange, XPRSiis, XPRSwriteprtsol, XPRSwritesol, XPRSwriteprtrange, XPRSwriterange, XPRSgetlpsol, XPRSgetmipsol,XPRSwriteomni, XPRSwriteprob, all logging and solution callbacks with the exception of XPRSsetcbmessage that is used by BCL and must not be re-defined by the user;
- accessing information: all functions XPRSget...,;
- settings for algorithms: XPRSreaddirs, XPRSloaddirs, XPRSreadbasis, XPRSloadbasis, XPRSloadsecurevecs, XPRSscale, XPRSftran, XPRSbtran, all global callbacks;
- cut manager.
Incompatible Optimizer functions
The following Optimizer library functions may be used only after or in place of BCL:
- changing, adding, and deleting matrix elements: all functions XPRSadd..., XPRSchg..., XPRSdel...;
- solution algorithms: XPRSlpoptimize, XPRSmipoptimize;
- input of data or problem(s): XPRSreadprob, XPRSloadlp, XPRSloadglobal, XPRSloadqglobal, XPRSloadqp, XPRSalter, XPRSsetprobname;
- manipulation of the matrix: XPRSrestore;
- callback: XPRSsetcbmessage
Once any of the functions in the preceding list have been called for a given problem, the information held in BCL may be different from the problem in the Optimizer and it is not possible to update BCL accordingly. The program must therefore continue using only Optimizer library functions on that problem, that is, switch completely to the Optimizer library. The `switching' from BCL to the Optimizer library always refers to a single problem. If other problems are being worked on in parallel, for which none of the above incompatible function have been called, users can continue to work with them using BCL functions.
© 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.