lpi_xprs.c
Go to the documentation of this file.
26 * Xpress requires that column and row names are unique. Since column and row names are not needed we ignore all column 30 /*--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 54 /* this macro is only called in functions returning SCIP_Bool; thus, we return retval if there is an error in optimized mode */ 65 typedef SCIP_DUALPACKET COLPACKET; /* each column needs two bits of information (basic/on_lower/on_upper) */ 67 typedef SCIP_DUALPACKET ROWPACKET; /* each row needs two bit of information (basic/on_lower/on_upper) */ 105 int par_presolve; /**< need to distinguish between the users setting and the optimizer setting of presolve */ 183 /** resizes larray and uarray to have at least num entries and fill it with 'L' and 'U' for the lower and upper bound 527 /** converts Xpress' sen/rhs/rng triplets into SCIP's lhs/rhs pairs, only storing the left hand side */ 572 /** converts Xpress' sen/rhs/rng triplets into SCIP's lhs/rhs pairs, only storing the right hand side */ 711 assert(sizeof(SCIP_Real) == sizeof(double)); /* Xpress only works with doubles as floating points */ 720 SCIPmessagePrintWarning(messagehdlr, "Please use Xpress version 26 or higher, you are using %d\n", XPVERSION); 760 /* turn logging off until the user explicitly turns it on; this should prevent any unwanted Xpress output from 765 /* we need to create an empty LP in this prob since SCIP might attempt to add rows or columns to it */ 766 CHECK_ZERO( messagehdlr, XPRSloadlp((*lpi)->xprslp, (*lpi)->name, 0, 0, NULL, NULL, NULL, NULL, &zero, NULL, NULL, NULL, NULL, NULL) ); 844 /* convert lhs/rhs into sen/rhs/range tuples the sen/rhs/range are stored in the temporary arrays in lpi structure */ 860 CHECK_ZERO( lpi->messagehdlr, XPRSloadlp(lpi->xprslp, lpi->name, ncols, nrows, lpi->senarray, lpi->rhsarray, 900 CHECK_ZERO( lpi->messagehdlr, XPRSaddcols(lpi->xprslp, ncols, nnonz, obj, lpi->indarray, ind, val, lb, ub) ); 935 /** deletes columns from SCIP_LP; the new position of a column must not be greater that its old position */ 1017 CHECK_ZERO( lpi->messagehdlr, XPRSaddrows(lpi->xprslp, nrows, nnonz, lpi->senarray, lpi->rhsarray, lpi->rngarray, lpi->indarray, ind, val) ); 1051 /** deletes rows from SCIP_LP; the new position of a row must not be greater that its old position */ 1112 CHECK_ZERO( lpi->messagehdlr, XPRSloadlp(lpi->xprslp, lpi->name, 0, 0, NULL, NULL, NULL, NULL, &zero, NULL, NULL, NULL, NULL, NULL) ); 1136 CHECK_ZERO( lpi->messagehdlr, XPRSchgbounds(lpi->xprslp, ncols, ind, lpi->larray, (SCIP_Real*)lb) ); 1137 CHECK_ZERO( lpi->messagehdlr, XPRSchgbounds(lpi->xprslp, ncols, ind, lpi->uarray, (SCIP_Real*)ub) ); 1183 SCIPdebugMessage("changing coefficient row %d, column %d in Xpress to %g\n", row, col, newval); 1228 /** multiplies a row with a non-zero scalar; for negative scalars, the row's sense is switched accordingly */ 1254 SCIP_CALL( SCIPlpiGetRows(lpi, row, row, &lhs, &rhs, &nnonz, &beg, lpi->indarray, lpi->valarray) ); 1284 /** multiplies a column with a non-zero scalar; the objective value is multiplied with the scalar, and the bounds 1313 SCIP_CALL( SCIPlpiGetCols(lpi, col, col, &lb, &ub, &nnonz, &beg, lpi->indarray, lpi->valarray) ); 1409 /** gets columns from LP problem object; the arrays have to be large enough to store all values 1455 /* get number of nonzero in the whole problem; needed to pass a proper size to XPRSgetcols() function call 1457 * @note We are assuming that the arrays given by SCIP are large enough. Otherwise we are getting invalid writes 1462 CHECK_ZERO( lpi->messagehdlr, XPRSgetcols(lpi->xprslp, lpi->indarray, ind, val, ntotalnonz, nnonz, firstcol, lastcol) ); 1525 /* get number of nonzero in the whole problem; needed to pass a proper size to XPRSgetrows() function call 1527 * @note We are assuming that the arrays given by SCIP are large enough. Otherwise we are getting invalid writes 1532 CHECK_ZERO( lpi->messagehdlr, XPRSgetrows(lpi->xprslp, lpi->indarray, ind, val, ntotalnonz, nnonz, firstrow, lastrow) ); 1556 int namestoragesize, /**< size of namestorage (if 0, storageleft returns the storage needed) */ 1571 int namestoragesize, /**< size of namestorage (if 0, -storageleft returns the storage needed) */ 1668 CHECK_ZERO( lpi->messagehdlr, XPRSgetrhsrange(lpi->xprslp, lpi->rngarray, firstrow, lastrow) ); 1704 const char* method /**< indicates the method to use ('p' - primal, 'd' - dual, 'b' - barrier) */ 1726 CHECK_ZERO( lpi->messagehdlr, XPRSsetintcontrol(lpi->xprslp, XPRS_LPQUICKPRESOLVE, (lpi->par_presolve) ? 1 : 0) ); 1760 CHECK_ZERO( lpi->messagehdlr, XPRSgetintattrib(lpi->xprslp, XPRS_SIMPLEXITER, &lpi->iterations) ); 1763 CHECK_ZERO( lpi->messagehdlr, XPRSgetintattrib(lpi->xprslp, XPRS_PRIMALINFEAS, &primalinfeasible) ); 1764 CHECK_ZERO( lpi->messagehdlr, XPRSgetintattrib(lpi->xprslp, XPRS_DUALINFEAS, &dualinfeasible) ); 1792 /** calls barrier or interior point algorithm to solve the LP with crossover to simplex basis */ 1806 CHECK_ZERO( lpi->messagehdlr, XPRSsetintcontrol(lpi->xprslp, XPRS_CROSSOVER, crossover == TRUE ? -1 : 0) ); 1862 SCIPdebugMessage("calling Xpress strong branching on variable %d (%d iterations)\n", col, itlim); 1885 CHECK_ZERO( lpi->messagehdlr, XPRSstrongbranch(lpi->xprslp, 2, mbndind, cbndtype, dbndval, itlim, dobjval, mstatus) ); 1950 SCIPdebugMessage("calling Xpress strong branching on %d variables (%d iterations)\n", ncols, itlim); 1978 CHECK_ZERO( lpi->messagehdlr, XPRSstrongbranch(lpi->xprslp, 2*ncols, mbndind, cbndtype, dbndval, itlim, dobjval, mstatus) ); 2061 SCIP_CALL( lpiStrongbranches(lpi, cols, ncols, psols, itlim, down, up, downvalid, upvalid, iter) ); 2104 SCIP_CALL( lpiStrongbranches(lpi, cols, ncols, psols, itlim, down, up, downvalid, upvalid, iter) ); 2144 *primalfeasible = (SCIP_Bool) (lpi->solstat==XPRS_LP_OPTIMAL || lpi->solstat == XPRS_LP_OPTIMAL_SCALEDINFEAS || (lpi->solmethod == 'p' && lpi->solstat==XPRS_LP_UNBOUNDED)); 2145 *dualfeasible = (SCIP_Bool) (lpi->solstat==XPRS_LP_OPTIMAL || lpi->solstat == XPRS_LP_OPTIMAL_SCALEDINFEAS || (lpi->solmethod == 'd' && lpi->solstat==XPRS_LP_INFEAS)); 2150 /** returns TRUE iff LP is proven to have a primal unbounded ray (but not necessary a primal feasible point); 2164 /** returns TRUE iff LP is proven to have a primal unbounded ray (but not necessary a primal feasible point), 2194 /* If the solution status of Xpress is XPRS_LP_UNBOUNDED, it only means, there is an unbounded ray, 2228 return lpi->solstat == XPRS_LP_OPTIMAL || lpi->solstat == XPRS_LP_OPTIMAL_SCALEDINFEAS || (lpi->solstat == XPRS_LP_UNBOUNDED && lpi->solmethod == 'p'); 2231 /** returns TRUE iff LP is proven to have a dual unbounded ray (but not necessary a dual feasible point); 2245 /** returns TRUE iff LP is proven to have a dual unbounded ray (but not necessary a dual feasible point), 2303 return lpi->solstat == XPRS_LP_OPTIMAL || lpi->solstat == XPRS_LP_OPTIMAL_SCALEDINFEAS || (lpi->solstat == XPRS_LP_INFEAS && lpi->solmethod == 'd'); 2329 /* If the solution status of Xpress is XPRS_LP_UNBOUNDED, it only means, there is an unbounded ray, 2330 * but not necessarily a feasible primal solution. If primalfeasible == FALSE, we interpret this 2345 /* presolved problem was solved to optimality but infeasibilities were introduced by postsolve */ 2376 ABORT_ZERO( lpi->messagehdlr, TRUE, XPRSgetintattrib(lpi->xprslp, XPRS_SIMPLEXITER, &lpiter) ); 2377 ABORT_ZERO( lpi->messagehdlr, TRUE, XPRSgetintcontrol(lpi->xprslp, XPRS_LPITERLIMIT, &lpiterlimit) ); 2397 ABORT_ZERO( lpi->messagehdlr, TRUE, XPRSgetintattrib(lpi->xprslp, XPRS_SIMPLEXITER, &lpiter) ); 2398 ABORT_ZERO( lpi->messagehdlr, TRUE, XPRSgetintcontrol(lpi->xprslp, XPRS_LPITERLIMIT, &lpiterlimit) ); 2417 /** tries to reset the internal status of the LP solver in order to ignore an instability of the last solving call */ 2550 * Such information is usually only available, if also a (maybe not optimal) solution is available. 2551 * The LPI should return SCIP_INVALID for @p quality, if the requested quantity is not available. 2575 /** gets current basis status for columns and rows; arrays must be large enough to store the basis status */ 2615 /** returns the indices of the basic columns and rows; basic column n gives value n, basic row m gives value -1-m */ 2626 assert((0 == SCIP_BASESTAT_LOWER) && (1 == SCIP_BASESTAT_BASIC) && (2 == SCIP_BASESTAT_UPPER) && (3 == SCIP_BASESTAT_ZERO)); 2657 * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver 2658 * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated; 2693 * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver 2694 * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated; 2733 * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver 2734 * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated; 2742 const SCIP_Real* binvrow, /**< row in (A_B)^-1 from prior call to SCIPlpiGetBInvRow(), or NULL */ 2792 CHECK_ZERO( lpi->messagehdlr, XPRSgetcols(lpi->xprslp, NULL, lpi->indarray, lpi->valarray, nrows, &nnonz, c, c) ); 2808 * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver 2809 * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated; 2844 CHECK_ZERO( lpi->messagehdlr, XPRSgetcols(lpi->xprslp, NULL, lpi->indarray, lpi->valarray, nrows, &nnonz, c, c) ); 2880 /* if there is no basis information available (e.g. after barrier without crossover), or no state can be saved; if 2897 SCIPdebugMessage("storing Xpress LPI state in %p (%d cols, %d rows)\n", (void*)*lpistate, ncols, nrows); 2914 /** loads LPi state (like basis information) into solver; note that the LP might have been extended with additional 2941 /* the dimension of the lpi state should not be larger than the current problem; it might be that columns and rows 2947 SCIPdebugMessage("loading LPI state %p (%d cols, %d rows) into Xpress\n", (void*)lpistate, lpistate->ncols, lpistate->nrows); 3084 /** loads LPi pricing norms into solver; note that the LP might have been extended with additional 3195 CHECK_ZERO( lpi->messagehdlr, XPRSsetintcontrol(lpi->xprslp, XPRS_PRICINGALG, XPRS_PRICING_PARTIAL) ); 3198 CHECK_ZERO( lpi->messagehdlr, XPRSsetintcontrol(lpi->xprslp, XPRS_PRICINGALG, XPRS_PRICING_DEVEX) ); 3203 CHECK_ZERO( lpi->messagehdlr, XPRSsetintcontrol(lpi->xprslp, XPRS_PRICINGALG, XPRS_PRICING_DEFAULT) ); 3210 CHECK_ZERO( lpi->messagehdlr, XPRSsetintcontrol(lpi->xprslp, XPRS_KEEPBASIS, (ival == FALSE) ? 1 : 0) ); 3214 CHECK_ZERO( lpi->messagehdlr, XPRSsetintcontrol(lpi->xprslp, XPRS_SCALING, (ival == TRUE) ? 35 : 0) ); 3222 CHECK_ZERO( lpi->messagehdlr, XPRSsetintcontrol(lpi->xprslp, XPRS_OUTPUTLOG, (ival == TRUE) ? 1 : 0) );
static void convertSides(SCIP_LPI *lpi, int nrows, const SCIP_Real *lhss, const SCIP_Real *rhss) Definition: lpi_xprs.c:429 static void lpistateUnpack(const SCIP_LPISTATE *lpistate, int *cstat, int *rstat) Definition: lpi_xprs.c:349 SCIP_RETCODE SCIPlpiGetBase(SCIP_LPI *lpi, int *cstat, int *rstat) Definition: lpi_xprs.c:2576 SCIP_Bool SCIPlpiHasStateBasis(SCIP_LPI *lpi, SCIP_LPISTATE *lpistate) Definition: lpi_xprs.c:3019 SCIP_RETCODE SCIPlpiScaleCol(SCIP_LPI *lpi, int col, SCIP_Real scaleval) Definition: lpi_xprs.c:1287 SCIP_RETCODE SCIPlpiGetBounds(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *lbs, SCIP_Real *ubs) Definition: lpi_xprs.c:1620 SCIP_RETCODE SCIPlpiGetDualfarkas(SCIP_LPI *lpi, SCIP_Real *dualfarkas) Definition: lpi_xprs.c:2512 Definition: type_lpi.h:50 static SCIP_RETCODE ensureSidechgMem(SCIP_LPI *lpi, int num) Definition: lpi_xprs.c:216 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_xprs.c:1413 SCIP_RETCODE SCIPlpiGetIterations(SCIP_LPI *lpi, int *iterations) Definition: lpi_xprs.c:2533 SCIP_RETCODE SCIPlpiChgObj(SCIP_LPI *lpi, int ncols, int *ind, SCIP_Real *obj) Definition: lpi_xprs.c:1211 Definition: type_lpi.h:41 void SCIPdecodeDualBit(const SCIP_DUALPACKET *inp, int *out, int count) Definition: bitencode.c:298 static void lpistatePack(SCIP_LPISTATE *lpistate, const int *cstat, const int *rstat) Definition: lpi_xprs.c:333 interface methods for specific LP solvers static void reconvertSides(SCIP_LPI *lpi, int nrows, SCIP_Real *lhs, SCIP_Real *rhs) Definition: lpi_xprs.c:619 Definition: type_lpi.h:52 Definition: type_lpi.h:72 SCIP_RETCODE SCIPlpiGetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real *dval) Definition: lpi_xprs.c:3239 Definition: struct_message.h:35 SCIP_RETCODE SCIPlpiSetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int ival) Definition: lpi_xprs.c:3177 SCIP_RETCODE SCIPlpiCreate(SCIP_LPI **lpi, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_OBJSEN objsen) Definition: lpi_xprs.c:702 SCIP_RETCODE SCIPlpiSolveBarrier(SCIP_LPI *lpi, SCIP_Bool crossover) Definition: lpi_xprs.c:1793 SCIP_RETCODE SCIPlpiChgBounds(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *lb, const SCIP_Real *ub) Definition: lpi_xprs.c:1118 SCIP_RETCODE SCIPlpiGetRealSolQuality(SCIP_LPI *lpi, SCIP_LPSOLQUALITY qualityindicator, SCIP_Real *quality) Definition: lpi_xprs.c:2553 SCIP_RETCODE SCIPlpiDelRows(SCIP_LPI *lpi, int firstrow, int lastrow) Definition: lpi_xprs.c:1023 static void lpistateFree(SCIP_LPISTATE **lpistate, BMS_BLKMEM *blkmem) Definition: lpi_xprs.c:386 SCIP_RETCODE SCIPlpiSetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS *lpinorms) Definition: lpi_xprs.c:3087 Definition: lpi_cpx.c:191 SCIP_RETCODE SCIPlpiDelCols(SCIP_LPI *lpi, int firstcol, int lastcol) Definition: lpi_xprs.c:906 static void reconvertLhs(SCIP_LPI *lpi, int nrows, SCIP_Real *lhss) Definition: lpi_xprs.c:529 Definition: type_lpi.h:53 SCIP_RETCODE SCIPlpiFreeState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate) Definition: lpi_xprs.c:3001 SCIP_Bool SCIPlpiIsInfinity(SCIP_LPI *lpi, SCIP_Real val) Definition: lpi_xprs.c:3358 SCIP_RETCODE SCIPlpiGetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms) Definition: lpi_xprs.c:3071 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 **rownames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val) Definition: lpi_xprs.c:814 static void debugCheckObjsen(SCIP_LPI *lpi, SCIP_OBJSEN objsen) Definition: lpi_xprs.c:156 SCIP_RETCODE SCIPlpiReadLP(SCIP_LPI *lpi, const char *fname) Definition: lpi_xprs.c:3376 SCIP_RETCODE SCIPlpiFreeNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms) Definition: lpi_xprs.c:3100 SCIP_RETCODE SCIPlpiGetObjsen(SCIP_LPI *lpi, SCIP_OBJSEN *objsen) Definition: lpi_xprs.c:1580 SCIP_RETCODE SCIPlpiGetRowNames(SCIP_LPI *lpi, int firstrow, int lastrow, char **rownames, char *namestorage, int namestoragesize, int *storageleft) Definition: lpi_xprs.c:1565 packing single and dual bit values SCIP_RETCODE SCIPlpiGetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate) Definition: lpi_xprs.c:2866 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_xprs.c:1834 SCIP_RETCODE SCIPlpiSetBase(SCIP_LPI *lpi, int *cstat, int *rstat) Definition: lpi_xprs.c:2593 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_xprs.c:2067 Definition: type_lpi.h:34 SCIP_RETCODE SCIPlpiChgCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real newval) Definition: lpi_xprs.c:1173 Definition: type_lpi.h:44 void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...) Definition: message.c:411 SCIP_RETCODE SCIPlpiWriteLP(SCIP_LPI *lpi, const char *fname) Definition: lpi_xprs.c:3392 SCIP_RETCODE SCIPlpiIgnoreInstability(SCIP_LPI *lpi, SCIP_Bool *success) Definition: lpi_xprs.c:2418 SCIP_RETCODE SCIPlpiScaleRow(SCIP_LPI *lpi, int row, SCIP_Real scaleval) Definition: lpi_xprs.c:1229 Definition: type_lpi.h:51 Definition: type_retcode.h:33 Definition: type_lpi.h:33 Definition: type_lpi.h:45 static SCIP_RETCODE ensureBoundchgMem(SCIP_LPI *lpi, int num) Definition: lpi_xprs.c:187 SCIP_RETCODE SCIPlpiChgObjsen(SCIP_LPI *lpi, SCIP_OBJSEN objsense) Definition: lpi_xprs.c:1193 Definition: type_retcode.h:46 SCIP_RETCODE SCIPlpiGetBInvARow(SCIP_LPI *lpi, int r, const SCIP_Real *binvrow, SCIP_Real *coef, int *inds, int *ninds) Definition: lpi_xprs.c:2739 Definition: type_lpi.h:54 SCIP_RETCODE SCIPlpiGetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int *ival) Definition: lpi_xprs.c:3121 SCIP_RETCODE SCIPlpiGetBasisInd(SCIP_LPI *lpi, int *bind) Definition: lpi_xprs.c:2616 SCIP_RETCODE SCIPlpiGetBInvRow(SCIP_LPI *lpi, int row, SCIP_Real *coef, int *inds, int *ninds) Definition: lpi_xprs.c:2663 void SCIPencodeDualBit(const int *inp, SCIP_DUALPACKET *out, int count) Definition: bitencode.c:228 SCIP_RETCODE SCIPlpiGetSolFeasibility(SCIP_LPI *lpi, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible) Definition: lpi_xprs.c:2131 static SCIP_RETCODE lpiStrongbranches(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_xprs.c:1918 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_xprs.c:2024 SCIP_Bool SCIPlpiIsPrimalUnbounded(SCIP_LPI *lpi) Definition: lpi_xprs.c:2184 SCIP_RETCODE SCIPlpiGetBInvCol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds) Definition: lpi_xprs.c:2699 static void reconvertBothSides(SCIP_LPI *lpi, int nrows, SCIP_Real *lhss, SCIP_Real *rhss) Definition: lpi_xprs.c:480 Definition: type_lpi.h:67 Definition: type_lpi.h:57 Definition: type_lpi.h:43 SCIP_RETCODE SCIPlpiGetRows(SCIP_LPI *lpi, int firstrow, int lastrow, SCIP_Real *lhss, SCIP_Real *rhss, int *nnonz, int *beg, int *ind, SCIP_Real *val) Definition: lpi_xprs.c:1483 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_xprs.c:2045 SCIP_RETCODE SCIPlpiChgSides(SCIP_LPI *lpi, int nrows, const int *ind, const SCIP_Real *lhs, const SCIP_Real *rhs) Definition: lpi_xprs.c:1143 SCIP_RETCODE SCIPlpiStartStrongbranch(SCIP_LPI *lpi) Definition: lpi_xprs.c:1815 SCIP_RETCODE SCIPlpiGetSides(SCIP_LPI *lpi, int firstrow, int lastrow, SCIP_Real *lhss, SCIP_Real *rhss) Definition: lpi_xprs.c:1648 SCIP_RETCODE SCIPlpiReadState(SCIP_LPI *lpi, const char *fname) Definition: lpi_xprs.c:3029 Definition: type_lpi.h:47 SCIP_RETCODE SCIPlpiAddRows(SCIP_LPI *lpi, int nrows, const SCIP_Real *lhs, const SCIP_Real *rhs, char **rownames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val) Definition: lpi_xprs.c:985 SCIP_RETCODE SCIPlpiGetObj(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *vals) Definition: lpi_xprs.c:1600 SCIP_RETCODE SCIPlpiWriteState(SCIP_LPI *lpi, const char *fname) Definition: lpi_xprs.c:3045 Definition: type_retcode.h:40 Definition: lpi_clp.cpp:121 SCIP_RETCODE SCIPlpiGetPrimalRay(SCIP_LPI *lpi, SCIP_Real *ray) Definition: lpi_xprs.c:2491 SCIP_RETCODE SCIPlpiSetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real dval) Definition: lpi_xprs.c:3294 SCIP_RETCODE SCIPlpiGetColNames(SCIP_LPI *lpi, int firstcol, int lastcol, char **colnames, char *namestorage, int namestoragesize, int *storageleft) Definition: lpi_xprs.c:1550 Definition: type_lpi.h:79 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_xprs.c:2088 Definition: type_lpi.h:69 Definition: lpi_clp.cpp:93 SCIP_RETCODE SCIPlpiAddCols(SCIP_LPI *lpi, int ncols, const SCIP_Real *obj, const SCIP_Real *lb, const SCIP_Real *ub, char **colnames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val) Definition: lpi_xprs.c:870 SCIP_RETCODE SCIPlpiGetBInvACol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds) Definition: lpi_xprs.c:2814 Definition: type_lpi.h:49 SCIP_RETCODE SCIPlpiGetObjval(SCIP_LPI *lpi, SCIP_Real *objval) Definition: lpi_xprs.c:2433 static SCIP_RETCODE lpistateCreate(SCIP_LPISTATE **lpistate, BMS_BLKMEM *blkmem, int ncols, int nrows) Definition: lpi_xprs.c:365 SCIP_Bool SCIPlpiIsPrimalInfeasible(SCIP_LPI *lpi) Definition: lpi_xprs.c:2203 SCIP_RETCODE SCIPlpiGetCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real *val) Definition: lpi_xprs.c:1677 static void debugCheckColrang(SCIP_LPI *lpi, int firstcol, int lastcol) Definition: lpi_xprs.c:128 Definition: type_lpi.h:66 SCIP_RETCODE SCIPlpiSetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE *lpistate) Definition: lpi_xprs.c:2917 Definition: type_lpi.h:46 static void debugCheckRowrang(SCIP_LPI *lpi, int firstrow, int lastrow) Definition: lpi_xprs.c:142 Definition: type_lpi.h:80 static void reconvertRhs(SCIP_LPI *lpi, int nrows, SCIP_Real *rhss) Definition: lpi_xprs.c:574 Definition: type_lpi.h:82 Definition: type_lpi.h:48 Definition: type_lpi.h:81 SCIP_RETCODE SCIPlpiGetSol(SCIP_LPI *lpi, SCIP_Real *objval, SCIP_Real *primsol, SCIP_Real *dualsol, SCIP_Real *activity, SCIP_Real *redcost) Definition: lpi_xprs.c:2449 |