|
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
lpi_spx2.cpp
Go to the documentation of this file.
22 * This is an implementation of SCIP's LP interface for SoPlex using the extended and improved interface of SoPlex 2.0
24 * For debugging purposes, the SoPlex results can be double checked with CPLEX if WITH_LPSCHECK is defined. This may
25 * yield false positives, since the LP is dumped to a file for transfering it to CPLEX, hence, precision may be lost.
28 /*--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
30 #define STRONGBRANCH_RESTOREBASIS /**< if defined then in SCIPlpiStrongbranch() we restore the basis after the
39 #define CHECK_SPXSOLVE true /**< shall the SoPlex results in spxSolve() be double checked using CPLEX? */
40 #define CHECK_SPXSTRONGBRANCH true /**< shall the SoPlex results in SCIPlpStrongbranch() be double checked using CPLEX? */
42 #define EXIT_AT_WRONG_RESULT false/**< shall program be exited if CPLEX returns different result than SoPlex? */
50 SCIPmessagePrintWarning(_messagehdlr, "CPLEX error <%d>; SoPlex result unchecked\n", _cpxstat_); \
86 #if (SOPLEX_VERSION < 200 || (SOPLEX_VERSION == 200 && SOPLEX_SUBVERSION < 2) || (SOPLEX_VERSION > 200 && SOPLEX_VERSION < 201))
115 /** Macro for a single SoPlex call for which exceptions have to be catched - return an LP error. We
116 * make no distinction between different exception types, e.g., between memory allocation and other
231 // we might need these methods to return the original values SCIP provided, even if they could not be set
232 /** return feastol set by SCIPlpiSetRealpar(), which might be tighter than what SoPlex accepted */
246 /** return opttol set by SCIPlpiSetRealpar(), which might be tighter than what SoPlex accepted */
490 if( getDoubleCheck() && (spxStatus == SPxSolver::OPTIMAL || spxStatus == SPxSolver::UNBOUNDED || spxStatus == SPxSolver::INFEASIBLE || spxStatus == SPxSolver::ABORT_VALUE) )
524 _probname, spxStatus, spxStatusString(spxStatus), cpxstat, cpxStatusString(cpxstat), _checknum);
536 SCIPerrorMessage("In %s: SoPlex returned status=%d (%s) while CPLEX claims obj=%.10f %s %.10f=obj.limit (%s) (checknum=%d)\n",
544 SCIPerrorMessage("In %s: SoPlex returned status=%d (%s) while CPLEX claims obj=%.10f %s %.10f=obj.limit (%s) (checknum=%d)\n",
553 SCIPerrorMessage("In %s: SoPlex returned status=%d (%s) while CPLEX claims obj=%.10f %s %.10f=obj.limit (%s) (checknum=%d)\n",
562 _probname, spxStatus, spxStatusString(spxStatus), cpxstat, cpxStatusString(cpxstat), _checknum);
569 _probname, spxStatus, spxStatusString(spxStatus), cpxstat, cpxStatusString(cpxstat), _checknum);
579 /* SCIPerrorMessage("In %s: LP optimal; SoPlex value=%.10f %s CPLEX value=%.10f too good (checknum=%d)\n", value(),
585 SCIPerrorMessage("In %s: LP optimal; SoPlex value=%.10f %s CPLEX value=%.10f suboptimal (checknum=%d)\n", objValueReal(),
681 typedef SCIP_DUALPACKET COLPACKET; /* each column needs two bits of information (basic/on_lower/on_upper) */
683 typedef SCIP_DUALPACKET ROWPACKET; /* each row needs two bit of information (basic/on_lower/on_upper) */
698 SCIP_Real conditionlimit; /**< maximum condition number of LP basis counted as stable (-1.0: no limit) */
731 )
753 )
782 {
791 {
856 )
907 {
911 sprintf(spxname, "SoPlex2 %d.%d.%d.%d", SOPLEX_VERSION/100, (SOPLEX_VERSION % 100)/10, SOPLEX_VERSION % 10, SOPLEX_SUBVERSION); /*lint !e778*/
913 sprintf(spxname, "SoPlex2 %d.%d.%d", SOPLEX_VERSION/100, (SOPLEX_VERSION % 100)/10, SOPLEX_VERSION % 10); /*lint !e778*/
922 {
923 sprintf(spxdesc, "%s", "Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de)");
935 {
963 /* we use this construction to allocate the memory for the SoPlex class also via the blockmemshell */
989 (*lpi)->spx->spxout.setVerbosity((SPxOut::Verbosity)((*lpi)->spx->getLpInfo() ? SOPLEX_VERBLEVEL : 0));
1001 {
1069 (void) spx->setIntParam(SoPlex::OBJSENSE, (objsen == SCIP_OBJSEN_MINIMIZE ? SoPlex::OBJSENSE_MINIMIZE : SoPlex::OBJSENSE_MAXIMIZE));
1100 const int* beg, /**< start index of each column in ind- and val-array, or NULL if nnonz == 0 */
1177 /** deletes columns from SCIP_LP; the new position of a column must not be greater that its old position */
1199 /* SoPlex removeCols() method deletes the columns with dstat[i] < 0, so we have to negate the values */
1292 /** deletes rows from SCIP_LP; the new position of a row must not be greater that its old position */
1314 /* SoPlex removeRows() method deletes the rows with dstat[i] < 0, so we have to negate the values */
1327 {
1457 )
1468 SOPLEX_TRY( lpi->messagehdlr, (void) lpi->spx->setIntParam(SoPlex::OBJSENSE, objsen == SCIP_OBJSEN_MINIMIZE ? SoPlex::OBJSENSE_MINIMIZE : SoPlex::OBJSENSE_MAXIMIZE ) );
1514 /** multiplies a row with a non-zero scalar; for negative scalars, the row's sense is switched accordingly */
1579 /** multiplies a column with a non-zero scalar; the objective value is multiplied with the scalar, and the bounds
1667 )
1684 )
1701 )
1711 /* SoPlex has no direct method to return the number of nonzeros, so we have to count them manually */
1727 /** gets columns from LP problem object; the arrays have to be large enough to store all values
1864 int namestoragesize, /**< size of namestorage (if 0, storageleft returns the storage needed) */
1878 // lpi->spx->getColNames(firstcol, lastcol, colnames, namestorage, namestoragesize, storageleft);
1890 int namestoragesize, /**< size of namestorage (if 0, -storageleft returns the storage needed) */
1904 // lpi->spx->getRowNames(firstrow, lastrow, rownames, namestorage, namestoragesize, storageleft);
1913 )
1921 *objsen = (lpi->spx->intParam(SoPlex::OBJSENSE) == SoPlex::OBJSENSE_MINIMIZE) ? SCIP_OBJSEN_MINIMIZE : SCIP_OBJSEN_MAXIMIZE;
2038 /** solves LP -- used for both, primal and dual simplex, because SoPlex doesn't distinct the two cases */
2043 {
2050 lpi->spx->spxout.setVerbosity((SPxOut::Verbosity)(lpi->spx->getLpInfo() ? SOPLEX_VERBLEVEL : 0));
2052 SCIPdebugMessage("calling SoPlex solve(): %d cols, %d rows\n", lpi->spx->numColsReal(), lpi->spx->numRowsReal());
2082 SCIPdebugMessage(" -> SoPlex status: %d, basis status: %d\n", lpi->spx->status(), lpi->spx->basisStatus());
2109 {
2123 {
2133 /** calls barrier or interior point algorithm to solve the LP with crossover to simplex basis */
2137 )
2149 {
2160 {
2197 lpi->spx->spxout.setVerbosity((SPxOut::Verbosity)(lpi->spx->getLpInfo() ? SOPLEX_VERBLEVEL : 0));
2199 SCIPdebugMessage("calling SCIPlpiStrongbranch() on variable %d (%d iterations)\n", col, itlim);
2276 /* if cycling or singular basis occured and we started not from the pre-strong-branching basis, then we restore the
2278 if( (status == SPxSolver::ABORT_CYCLING || status == SPxSolver::SINGULAR) && !fromparentbasis && spx->numIterations() < itlim )
2280 SCIPdebugMessage(" --> Repeat strong branching down with %d iterations after restoring basis\n",
2355 /* if cycling or singular basis occured and we started not from the pre-strong-branching basis, then we restore the
2357 else if( (status == SPxSolver::ABORT_CYCLING || status == SPxSolver::SINGULAR) && !fromparentbasis && spx->numIterations() < itlim )
2359 SCIPdebugMessage(" --> Repeat strong branching up with %d iterations after restoring basis\n", itlim - spx->numIterations());
2462 retcode = lpiStrongbranch(lpi, cols[j], psols[j], itlim, &(down[j]), &(up[j]), &(downvalid[j]), &(upvalid[j]), iter);
2536 retcode = lpiStrongbranch(lpi, cols[j], psols[j], itlim, &(down[j]), &(up[j]), &(downvalid[j]), &(upvalid[j]), iter);
2564 {
2589 /** returns TRUE iff LP is proven to have a primal unbounded ray (but not necessary a primal feasible point);
2595 {
2604 /** returns TRUE iff LP is proven to have a primal unbounded ray (but not necessary a primal feasible point),
2610 {
2623 {
2629 assert(lpi->spx->status() != SPxSolver::UNBOUNDED || lpi->spx->basisStatus() == SPxBasis::UNBOUNDED);
2631 /* if SoPlex returns unbounded, this may only mean that an unbounded ray is available, not necessarily a primal
2641 {
2654 {
2664 /* note that the solver status may be ABORT_VALUE and the basis status optimal; if we are optimal, isPerturbed() may
2672 /** returns TRUE iff LP is proven to have a dual unbounded ray (but not necessary a dual feasible point);
2678 {
2687 /** returns TRUE iff LP is proven to have a dual unbounded ray (but not necessary a dual feasible point),
2693 {
2706 {
2712 return lpi->spx->status() == SPxSolver::INFEASIBLE && lpi->spx->basisStatus() == SPxBasis::DUAL;
2719 {
2732 {
2738 /* note that the solver status may be ABORT_VALUE and the basis status optimal; if we are optimal, isPerturbed() may
2741 assert(lpi->spx->basisStatus() == SPxBasis::OPTIMAL || lpi->spx->status() != SPxSolver::OPTIMAL);
2743 return (lpi->spx->basisStatus() == SPxBasis::OPTIMAL) || lpi->spx->basisStatus() == SPxBasis::DUAL;
2750 {
2757 /* note that the solver status may be ABORT_VALUE and the basis status optimal; if we are optimal, isPerturbed() may
2767 {
2776 /* only if we have a regular basis and the condition limit is set, we compute the condition number of the basis;
2802 {
2815 {
2828 {
2841 {
2850 /** tries to reset the internal status of the LP solver in order to ignore an instability of the last solving call */
2854 )
2871 )
2941 )
2969 )
2997 )
3011 * Such information is usually only available, if also a (maybe not optimal) solution is available.
3012 * The LPI should return SCIP_INVALID for @p quality, if the requested quantity is not available.
3069 /** gets current basis status for columns and rows; arrays must be large enough to store the basis status */
3244 /** returns the indices of the basic columns and rows; basic column n gives value n, basic row m gives value -1-m */
3248 )
3265 * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver
3266 * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated;
3295 * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver
3296 * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated;
3326 * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver
3327 * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated;
3333 const SCIP_Real* binvrow, /**< row in (A_B)^-1 from prior call to SCIPlpiGetBInvRow(), or NULL */
3386 * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver
3387 * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated;
3482 /** loads LPi state (like basis information) into solver; note that the LP might have been extended with additional
3592 )
3601 )
3617 )
3676 SCIPdebugMessage("storing SoPlex LPi pricing norms in %p (%d rows, %d cols)\n", (void *) *lpinorms, nrows, ncols);
3699 /** loads LPi pricing norms into solver; note that the LP might have been extended with additional
3723 SCIPdebugMessage("loading LPi simplex norms %p (%d rows, %d cols) into SoPlex LP with %d rows and %d cols\n",
3724 (void *) lpinorms, lpinorms->nrows, lpinorms->ncols, lpi->spx->numRowsReal(), lpi->spx->numColsReal());
3838 (void) lpi->spx->setIntParam(SoPlex::SIMPLIFIER, (ival ? SoPlex::SIMPLIFIER_AUTO : SoPlex::SIMPLIFIER_OFF));
3869 (void) lpi->spx->setIntParam(SoPlex::SCALER, ( ival ? SoPlex::SCALER_BIEQUI : SoPlex::SCALER_OFF));
3992 {
4002 )
4026 {
4042 )
4076 )
SCIP_RETCODE SCIPlpiGetBInvRow(SCIP_LPI *lpi, int r, SCIP_Real *coef, int *inds, int *ninds) Definition: lpi_spx2.cpp:3272 SCIP_RETCODE SCIPlpiDelColset(SCIP_LPI *lpi, int *dstat) Definition: lpi_spx2.cpp:1181 Definition: type_lpi.h:58 SCIP_RETCODE SCIPlpiReadLP(SCIP_LPI *lpi, const char *fname) Definition: lpi_spx2.cpp:4042 SCIP_RETCODE SCIPlpiStrongbranchFrac(SCIP_LPI *lpi, int col, SCIP_Real psol, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter) Definition: lpi_spx2.cpp:2404 Definition: type_lpi.h:50 SCIP_RETCODE SCIPlpiSetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int ival) Definition: lpi_spx2.cpp:3814 Definition: type_lpi.h:41 void SCIPdecodeDualBit(const SCIP_DUALPACKET *inp, int *out, int count) Definition: bitencode.c:298 interface methods for specific LP solvers SCIP_Bool SCIPlpiIsPrimalInfeasible(SCIP_LPI *lpi) Definition: lpi_spx2.cpp:2641 SCIP_RETCODE SCIPlpiDelRows(SCIP_LPI *lpi, int firstrow, int lastrow) Definition: lpi_spx2.cpp:1274 Definition: type_lpi.h:52 static SCIP_RETCODE lpistateCreate(SCIP_LPISTATE **lpistate, BMS_BLKMEM *blkmem, int ncols, int nrows) Definition: lpi_spx2.cpp:832 SCIP_RETCODE SCIPlpiDelRowset(SCIP_LPI *lpi, int *dstat) Definition: lpi_spx2.cpp:1296 Definition: type_lpi.h:72 Definition: struct_message.h:35 SCIP_Bool SCIPlpiIsPrimalFeasible(SCIP_LPI *lpi) Definition: lpi_spx2.cpp:2654 SCIP_RETCODE SCIPlpiEndStrongbranch(SCIP_LPI *lpi) Definition: lpi_spx2.cpp:2160 Definition: type_lpi.h:89 SCIP_RETCODE SCIPlpiAddCols(SCIP_LPI *lpi, int ncols, const SCIP_Real *obj, const SCIP_Real *lb, const SCIP_Real *ub, char **, int nnonz, const int *beg, const int *ind, const SCIP_Real *val) Definition: lpi_spx2.cpp:1095 SCIP_RETCODE SCIPlpiGetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int *ival) Definition: lpi_spx2.cpp:3769 SCIP_RETCODE SCIPlpiSetState(SCIP_LPI *lpi, BMS_BLKMEM *, SCIP_LPISTATE *lpistate) Definition: lpi_spx2.cpp:3488 SCIP_RETCODE SCIPlpiFreeNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms) Definition: lpi_spx2.cpp:3736 Definition: type_retcode.h:38 static void lpistateFree(SCIP_LPISTATE **lpistate, BMS_BLKMEM *blkmem) Definition: lpi_spx2.cpp:856 static SCIP_RETCODE ensureRstatMem(SCIP_LPI *lpi, int num) Definition: lpi_spx2.cpp:753 SCIP_RETCODE SCIPlpiGetObjsen(SCIP_LPI *lpi, SCIP_OBJSEN *objsen) Definition: lpi_spx2.cpp:1913 SCIP_RETCODE SCIPlpiSetBase(SCIP_LPI *lpi, int *cstat, int *rstat) Definition: lpi_spx2.cpp:3162 SCIP_RETCODE SCIPlpiGetPrimalRay(SCIP_LPI *lpi, SCIP_Real *ray) Definition: lpi_spx2.cpp:2941 SCIP_RETCODE SCIPlpiIgnoreInstability(SCIP_LPI *lpi, SCIP_Bool *success) Definition: lpi_spx2.cpp:2854 SCIP_RETCODE SCIPlpiGetCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real *val) Definition: lpi_spx2.cpp:2009 Definition: lpi_cpx.c:191 Definition: type_lpi.h:53 Definition: type_lpi.h:70 SCIP_RETCODE SCIPlpiReadState(SCIP_LPI *lpi, const char *fname) Definition: lpi_spx2.cpp:3601 SCIP_RETCODE SCIPlpiGetBInvARow(SCIP_LPI *lpi, int r, const SCIP_Real *binvrow, SCIP_Real *coef, int *inds, int *ninds) Definition: lpi_spx2.cpp:3333 SCIP_RETCODE SCIPlpiGetObjval(SCIP_LPI *lpi, SCIP_Real *objval) Definition: lpi_spx2.cpp:2871 SCIP_RETCODE SCIPlpiLoadColLP(SCIP_LPI *lpi, SCIP_OBJSEN objsen, int ncols, const SCIP_Real *obj, const SCIP_Real *lb, const SCIP_Real *ub, char **colnames, int nrows, const SCIP_Real *lhs, const SCIP_Real *rhs, char **, int nnonz, const int *beg, const int *ind, const SCIP_Real *val) Definition: lpi_spx2.cpp:1034 static SCIP_RETCODE ensureCstatMem(SCIP_LPI *lpi, int num) Definition: lpi_spx2.cpp:731 Definition: type_lpi.h:90 packing single and dual bit values Definition: type_retcode.h:36 SCIP_RETCODE SCIPlpiScaleRow(SCIP_LPI *lpi, int row, SCIP_Real scaleval) Definition: lpi_spx2.cpp:1518 SCIP_Bool SCIPlpiIsInfinity(SCIP_LPI *lpi, SCIP_Real val) Definition: lpi_spx2.cpp:4002 SCIP_RETCODE SCIPlpiSetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS *lpinorms) Definition: lpi_spx2.cpp:3705 Definition: type_lpi.h:34 Definition: type_lpi.h:44 void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...) Definition: message.c:411 SCIP_RETCODE SCIPlpiScaleCol(SCIP_LPI *lpi, int col, SCIP_Real scaleval) Definition: lpi_spx2.cpp:1585 Definition: type_lpi.h:51 Definition: type_retcode.h:33 Definition: type_lpi.h:33 Definition: type_lpi.h:45 static void setIntParam(SCIP_LPI *lpi, int const param, int const parval) Definition: lpi_cpx.c:635 static SCIP_RETCODE lpiStrongbranch(SCIP_LPI *lpi, int col, SCIP_Real psol, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter) Definition: lpi_spx2.cpp:2173 Definition: type_retcode.h:46 SCIP_Bool SCIPlpiIsPrimalUnbounded(SCIP_LPI *lpi) Definition: lpi_spx2.cpp:2623 SCIP_RETCODE SCIPlpiStrongbranchInt(SCIP_LPI *lpi, int col, SCIP_Real psol, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter) Definition: lpi_spx2.cpp:2478 void SCIPencodeDualBit(const int *inp, SCIP_DUALPACKET *out, int count) Definition: bitencode.c:228 Definition: type_lpi.h:68 SCIP_RETCODE SCIPlpiCreate(SCIP_LPI **lpi, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_OBJSEN objsen) Definition: lpi_spx2.cpp:954 SCIP_RETCODE SCIPlpiGetDualfarkas(SCIP_LPI *lpi, SCIP_Real *dualfarkas) Definition: lpi_spx2.cpp:2969 SCIP_RETCODE SCIPlpiWriteLP(SCIP_LPI *lpi, const char *fname) Definition: lpi_spx2.cpp:4076 SCIP_RETCODE SCIPlpiGetBounds(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *lbs, SCIP_Real *ubs) Definition: lpi_spx2.cpp:1953 static void setFeastol(SCIP_NLPIPROBLEM *nlpiproblem, SCIP_Real feastol) Definition: nlpi_ipopt.cpp:435 Definition: type_lpi.h:71 SCIP_RETCODE SCIPlpiChgCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real newval) Definition: lpi_spx2.cpp:1433 SCIP_RETCODE SCIPlpiGetSides(SCIP_LPI *lpi, int firstrow, int lastrow, SCIP_Real *lhss, SCIP_Real *rhss) Definition: lpi_spx2.cpp:1981 SCIP_RETCODE SCIPlpiGetSolFeasibility(SCIP_LPI *lpi, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible) Definition: lpi_spx2.cpp:2574 Definition: type_lpi.h:67 SCIP_RETCODE SCIPlpiStrongbranchesFrac(SCIP_LPI *lpi, int *cols, int ncols, SCIP_Real *psols, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter) Definition: lpi_spx2.cpp:2434 static void lpistatePack(SCIP_LPISTATE *lpistate, const int *cstat, const int *rstat) Definition: lpi_spx2.cpp:800 SCIP_RETCODE SCIPlpiGetIterations(SCIP_LPI *lpi, int *iterations) Definition: lpi_spx2.cpp:2997 SCIP_RETCODE SCIPlpiGetSol(SCIP_LPI *lpi, SCIP_Real *objval, SCIP_Real *primsol, SCIP_Real *dualsol, SCIP_Real *activity, SCIP_Real *redcost) Definition: lpi_spx2.cpp:2888 SCIP_RETCODE SCIPlpiDelCols(SCIP_LPI *lpi, int firstcol, int lastcol) Definition: lpi_spx2.cpp:1159 SCIP_RETCODE SCIPlpiStrongbranchesInt(SCIP_LPI *lpi, int *cols, int ncols, SCIP_Real *psols, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter) Definition: lpi_spx2.cpp:2508 SCIP_RETCODE SCIPlpiGetRealSolQuality(SCIP_LPI *lpi, SCIP_LPSOLQUALITY qualityindicator, SCIP_Real *quality) Definition: lpi_spx2.cpp:3017 Definition: type_lpi.h:43 SCIP_RETCODE SCIPlpiGetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms) Definition: lpi_spx2.cpp:3650 SCIP_RETCODE SCIPlpiGetRowNames(SCIP_LPI *lpi, int firstrow, int lastrow, char **rownames, char *namestorage, int namestoragesize, int *storageleft) Definition: lpi_spx2.cpp:1887 SCIP_RETCODE SCIPlpiChgObjsen(SCIP_LPI *lpi, SCIP_OBJSEN objsen) Definition: lpi_spx2.cpp:1457 SCIP_RETCODE SCIPlpiAddRows(SCIP_LPI *lpi, int nrows, const SCIP_Real *lhs, const SCIP_Real *rhs, char **, int nnonz, const int *beg, const int *ind, const SCIP_Real *val) Definition: lpi_spx2.cpp:1212 SCIP_RETCODE SCIPlpiGetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate) Definition: lpi_spx2.cpp:3444 Definition: type_lpi.h:47 SCIP_Bool SCIPlpiIsDualInfeasible(SCIP_LPI *lpi) Definition: lpi_spx2.cpp:2719 SCIP_Bool SCIPlpiHasStateBasis(SCIP_LPI *lpi, SCIP_LPISTATE *lpistate) Definition: lpi_spx2.cpp:3592 SCIP_RETCODE SCIPlpiChgBounds(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *lb, const SCIP_Real *ub) Definition: lpi_spx2.cpp:1345 Definition: type_retcode.h:40 Definition: lpi_clp.cpp:121 SCIP_RETCODE SCIPlpiGetCols(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *lb, SCIP_Real *ub, int *nnonz, int *beg, int *ind, SCIP_Real *val) Definition: lpi_spx2.cpp:1734 static void lpistateUnpack(const SCIP_LPISTATE *lpistate, int *cstat, int *rstat) Definition: lpi_spx2.cpp:816 SCIP_RETCODE SCIPlpiGetBase(SCIP_LPI *lpi, int *cstat, int *rstat) Definition: lpi_spx2.cpp:3073 public methods for message output Definition: type_lpi.h:79 Definition: type_lpi.h:69 Definition: lpi_clp.cpp:93 SCIP_RETCODE SCIPlpiChgObj(SCIP_LPI *lpi, int ncols, int *ind, SCIP_Real *obj) Definition: lpi_spx2.cpp:1477 SCIP_RETCODE SCIPlpiGetColNames(SCIP_LPI *lpi, int firstcol, int lastcol, char **colnames, char *namestorage, int namestoragesize, int *storageleft) Definition: lpi_spx2.cpp:1861 SCIP_RETCODE SCIPlpiFreeState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate) Definition: lpi_spx2.cpp:3574 SCIP_RETCODE SCIPlpiGetBasisInd(SCIP_LPI *lpi, int *bind) Definition: lpi_spx2.cpp:3248 SCIP_RETCODE SCIPlpiGetObj(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *vals) Definition: lpi_spx2.cpp:1930 SCIP_RETCODE SCIPlpiSolveBarrier(SCIP_LPI *lpi, SCIP_Bool crossover) Definition: lpi_spx2.cpp:2137 SCIP_RETCODE SCIPlpiGetRows(SCIP_LPI *lpi, int firstrow, int lastrow, SCIP_Real *lhs, SCIP_Real *rhs, int *nnonz, int *beg, int *ind, SCIP_Real *val) Definition: lpi_spx2.cpp:1799 Definition: type_lpi.h:66 Definition: type_retcode.h:37 Definition: type_lpi.h:46 Definition: type_lpi.h:80 SCIP_RETCODE SCIPlpiSetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real dval) Definition: lpi_spx2.cpp:3933 SCIP_RETCODE SCIPlpiStartStrongbranch(SCIP_LPI *lpi) Definition: lpi_spx2.cpp:2149 SCIP_RETCODE SCIPlpiWriteState(SCIP_LPI *lpi, const char *fname) Definition: lpi_spx2.cpp:3617 Definition: type_retcode.h:43 SCIP_RETCODE SCIPlpiChgSides(SCIP_LPI *lpi, int nrows, const int *ind, const SCIP_Real *lhs, const SCIP_Real *rhs) Definition: lpi_spx2.cpp:1389 SCIP_RETCODE SCIPlpiGetBInvCol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds) Definition: lpi_spx2.cpp:3302 Definition: type_lpi.h:55 SCIP_RETCODE SCIPlpiGetBInvACol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds) Definition: lpi_spx2.cpp:3393 SCIP_RETCODE SCIPlpiGetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real *dval) Definition: lpi_spx2.cpp:3888 Definition: type_lpi.h:82 Definition: type_lpi.h:48 Definition: type_lpi.h:81 Definition: type_lpi.h:59 |