42#define COLS_PER_PACKET SCIP_DUALPACKETSIZE
44#define ROWS_PER_PACKET SCIP_DUALPACKETSIZE
105#define __QS_PRINTLOC__ fprintf(stderr,", in (%s:%d)\n", __FILE__, __LINE__)
109#define QS_TESTG(A,B,C) do{{ \
111 fprintf(stderr, C); \
116#define QS_ERROR(A,...) do{{ \
118 fprintf(stderr,__VA_ARGS__); \
120 return SCIP_LPERROR;}}}while(0)
124#define QS_RETURN(A) do{ \
125 const int __RVAL__ = (A); \
127 fprintf(stderr,"LP Error: QSopt returned %d",__RVAL__); \
129 return SCIP_ERROR;} \
130 return SCIP_OKAY;}while(0)
134#define QS_CONDRET(A) do{ \
135 const int __RVAL__ = (A); \
137 fprintf(stderr,"LP Error: QSopt returned %d",__RVAL__); \
139 return SCIP_LPERROR;} \
310 const double*
const lhs,
311 const double*
const rhs
321 for(
i = 0 ;
i < nrows ; ++
i )
340 lpi->
irng[
i] = rhs[
i] - lhs[
i];
397 return "Linear Programming Solver developed by D. Applegate, W. Cook, S. Dash, and M. Mevenkamp (www.isye.gatech.edu/~wcook/qsopt)";
406 return (
void*) lpi->
prob;
420 SCIPerrorMessage(
"SCIPlpiSetIntegralityInformation() has not been implemented yet.\n");
469 assert(
sizeof(SCIP_Real) ==
sizeof(
double));
470 assert(
sizeof(SCIP_Bool) ==
sizeof(
int));
481 if ( (*lpi)->prob ==
NULL )
487 (*lpi)->rowspace = 1024;
494 (*lpi)->colspace = 1024;
502 (*lpi)->messagehdlr = messagehdlr;
553 const SCIP_Real*
obj,
558 const SCIP_Real* lhs,
559 const SCIP_Real* rhs,
572 for(
j = 0;
j < nnonz;
j++ )
590 SCIPdebugMessage(
"loading LP in column format into QSopt: %d cols, %d rows\n", ncols, nrows);
618 for(
i = 0;
i < ncols-1; ++
i )
626 lpi->
iccnt[ncols-1] = nnonz -
beg[ncols-1];
632 (SCIP_Real*) lb, (SCIP_Real*) ub, (
const char**)colnames) );
642 const SCIP_Real*
obj,
664 SCIPdebugMessage(
"adding %d columns with %d nonzeros to QSopt\n", ncols, nnonz);
681 for(
i = 0;
i < ncols; ++
i )
694 for (
i = 0;
i < nnonz; ++
i)
702 for(
i = 0;
i < ncols - 1; ++
i )
708 lpi->
iccnt[ncols-1] = nnonz -
beg[ncols-1];
715 (SCIP_Real*) lb, (SCIP_Real*) ub, (
const char**)colnames) );
778 for(
i=0,
ccnt=0;
i < ncols;
i++ )
794 const SCIP_Real* lhs,
795 const SCIP_Real* rhs,
813 SCIPdebugMessage(
"adding %d rows with %d nonzeros to QSopt\n", nrows, nnonz);
837 for (
i = 0;
i < nnonz; ++
i)
845 for(
i = 0 ;
i < nrows -1 ;
i++ )
851 lpi->
ircnt[nrows-1] = nnonz -
beg[nrows-1];
856 lpi->
isen, lpi->
irng, (
const char**)rownames) );
860 for(
i = 0;
i < nrows -1; ++
i )
868 lpi->
isen, lpi->
irng, (
const char**)rownames) );
918 if( colnames !=
NULL )
931 for(
j = 0;
j < ncols; ++
j )
980 if( rownames !=
NULL )
981 rownames[
i-firstrow] = s;
993 for(
i = 0;
i < nrows; ++
i )
1006 const int len =
lastrow - firstrow +1;
1046 for(
i = 0;
i < nrows; ++
i )
1056 for(
i=0,
ccnt=0;
i < nrows;
i++ )
1101 const SCIP_Real* lb,
1117 for (
i = 0;
i < ncols; ++
i)
1134 for(
i = 0;
i < ncols; ++
i )
1139 for(
i = 0;
i < ncols; ++
i )
1152 const SCIP_Real* lhs,
1153 const SCIP_Real* rhs
1174 for(
i = 0;
i < nrows; ++
i )
1180 if( lpi->
isen[
i] ==
'R' )
1202 SCIPdebugMessage(
"changing coefficient row %d, column %d in QSopt to %g\n", row, col, newval);
1239 const SCIP_Real*
obj
1253 for(
i = 0;
i < ncols; ++
i )
1280 SCIPdebugMessage(
"scaling row %d with factor %g in QSopt\n", row, scaleval);
1284 rval =
QSget_ranged_rows_list(lpi->
prob, 1,
rowlist, &
rowcnt, &
rowbeg, &
rowind, &
rowval, &rhs, &
sense, &
range, 0);
1299 if(
sense[0] ==
'R' )
1327 rhs[0] = (rhs[0] +
range[0]) * scaleval;
1387 SCIPdebugMessage(
"scaling column %d with factor %g in QSopt\n", col, scaleval);
1391 rval =
QSget_columns_list(lpi->
prob, 1,
collist, &
colcnt, &
colbeg, &
colind, &
colval, &
obj, &lb, &ub, 0);
1408 scaleval = -scaleval;
1548 for(
i = 0;
i < len; ++
i )
1552 if ( nnonz !=
NULL )
1553 rval =
QSget_columns_list(lpi->
prob, len, lpi->
iccnt, &
lcnt, &
lbeg, &
lind, &
lval,
NULL, lb ? (&
llb) :
NULL, ub ? (&
lub) :
NULL,
NULL);
1555 rval =
QSget_columns_list(lpi->
prob, len, lpi->
iccnt,
NULL,
NULL,
NULL,
NULL,
NULL, lb ? (&
llb) :
NULL, ub ? (&
lub) :
NULL,
NULL);
1570 *nnonz =
lbeg[len-1] +
lcnt[len-1];
1571 for(
i = 0 ;
i < len ;
i++ )
1573 for(
i = 0;
i < *nnonz; ++
i )
1590 for(
i = 0;
i < len; ++
i )
1630 const int len =
lastrow - firstrow + 1;
1651 for(
i = 0;
i < len; ++
i )
1655 if ( nnonz !=
NULL )
1656 rval =
QSget_ranged_rows_list(lpi->
prob, len, lpi->
ircnt, &
lcnt, &
lbeg, &
lind, &
lval, rhs ? (&
lrhs) :
NULL, rhs ? (&
lsense) :
NULL, rhs ? (&
lrng) :
NULL,
NULL);
1658 rval =
QSget_ranged_rows_list(lpi->
prob, len, lpi->
ircnt,
NULL,
NULL,
NULL,
NULL, rhs ? (&
lrhs) :
NULL, rhs ? (&
lsense) :
NULL, rhs ? (&
lrng) :
NULL,
NULL);
1673 *nnonz =
lbeg[len-1] +
lcnt[len-1];
1674 for(
i = 0 ;
i < len;
i++ )
1676 for(
i = 0;
i < *nnonz; ++
i )
1693 for(
i = 0;
i < len; ++
i )
1783 for(
i = 0;
i < len; ++
i )
1790#ifdef SCIP_DISABLED_CODE
1794 QS_CONDRET(
QSget_columns_list(lpi->
prob, len, lpi->
iccnt,
NULL,
NULL,
NULL,
NULL, &
qsoptvals,
NULL,
NULL,
NULL) );
1795 for (
i = 0;
i < len; ++
i)
1822 for(
i = 0;
i < len; ++
i )
1840 const int len =
lastrow - firstrow + 1;
1856 for(
i = 0;
i < len; ++
i )
1860 rval =
QSget_ranged_rows_list(lpi->
prob, len, lpi->
ircnt, 0, 0, 0, 0, &
lrhs, &
lsense, &
lrng, 0);
1864 for(
i = 0;
i < len; ++
i )
2027 SCIPdebugMessage(
"calling QSopt strong branching on variable %d with fractional value (%d it lim)\n", col,
itlim);
2075 SCIPdebugMessage(
"calling QSopt strong branching on %d variables with fractional value (%d it lim)\n", ncols,
itlim);
2078 for(
j = 0;
j < ncols; ++
j )
2121 SCIPdebugMessage(
"calling QSopt strong branching on variable %d with integral value (%d it lim)\n", col,
itlim);
2168 SCIPdebugMessage(
"calling QSopt strong branching on %d variables with integral value (%d it lim)\n", ncols,
itlim);
2174 for(
j = 0;
j < ncols; ++
j )
2223 SCIP_Bool* primalfeasible,
2224 SCIP_Bool* dualfeasible
2236 *primalfeasible =
TRUE;
2238 *primalfeasible =
FALSE;
2241 *dualfeasible =
TRUE;
2243 *dualfeasible =
FALSE;
2518 SCIP_Real* activity,
2546 for(
i = 0;
i < nrows; ++
i )
2548 switch( lpi->
isen[
i] )
2566#ifdef SCIP_DISABLED_CODE
2586 for(
i = ncols ;
i-- ; )
2646 SCIP_Real* dualfarkas
2729 SCIPdebugMessage(
"saving QSopt basis into %p/%p\n", (
void*)cstat, (
void*)rstat);
2751 for(
i = 0;
i < nrows; ++
i )
2756 if ( lpi->
isen[
i] ==
'L' )
2773 for(
i = 0;
i < ncols; ++
i )
2820 SCIPdebugMessage(
"loading basis %p/%p into QSopt\n", (
void*)cstat, (
void*)rstat);
2832 for(
i = 0;
i < nrows; ++
i )
2843 if ( lpi->
isen[
i] ==
'L' )
2854 for(
i = 0;
i < ncols; ++
i )
2912 for(
i = 0;
i < nrows; ++
i )
2914 if(
bind[
i] >= ncols )
2958 for (
i = 0;
i < nrows;
i++)
3042 for (
i = 0;
i < ncols; ++
i)
3112 SCIPdebugMessage(
"storing QSopt LPI state in %p (%d cols, %d rows)\n", (
void*)*lpistate, ncols, nrows);
3120 (*lpistate)->ncols = ncols;
3121 (*lpistate)->nrows = nrows;
3147 if( lpistate ==
NULL )
3159 SCIPdebugMessage(
"loading LPI state %p (%d cols, %d rows) into QSopt LP with %d cols and %d rows\n", (
void*)lpistate, lpistate->
ncols,
3160 lpistate->
nrows, ncols, nrows);
3162 if( lpistate->
ncols == 0 || lpistate->
nrows == 0 )
3180 for(
i = lpistate->
ncols;
i < ncols; ++
i )
3198 for(
i = lpistate->
nrows;
i < nrows; ++
i )
3202 for(
i = 0;
i < nrows; ++
i )
3213 if ( lpi->
isen[
i] ==
'L' )
3225 for(
i = 0;
i < ncols; ++
i )
3273 if ( ncols == 0 || nrows == 0 )
3279 for (
i = 0;
i < ncols; ++
i)
3281 for (
i = 0;
i < nrows; ++
i)
3303 if( *lpistate !=
NULL )
3316 return (lpistate !=
NULL);
3359 QS_ERROR(
bas == 0,
"Could not get basis from problem.");
3407 (*lpinorms)->ncols = ncols;
3408 (*lpinorms)->nrows = nrows;
3420 (*lpinorms)->cstat =
NULL;
3421 (*lpinorms)->rstat =
NULL;
3422 (*lpinorms)->norms =
NULL;
3449 if ( nrows != lpinorms->
nrows || ncols != lpinorms->
ncols )
3469 if ( (*lpinorms)->norms !=
NULL )
3471 assert( (*lpinorms)->cstat !=
NULL && (*lpinorms)->rstat !=
NULL );
3765 if( lpi->
prob == 0 )
void SCIPdecodeDualBit(const SCIP_DUALPACKET *inp, int *out, int count)
void SCIPencodeDualBit(const int *inp, SCIP_DUALPACKET *out, int count)
packing single and dual bit values
unsigned int SCIP_DUALPACKET
SCIP_RETCODE SCIPlpiChgSides(SCIP_LPI *lpi, int nrows, const int *ind, const SCIP_Real *lhs, const SCIP_Real *rhs)
SCIP_RETCODE SCIPlpiSetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, const SCIP_LPISTATE *lpistate)
SCIP_RETCODE SCIPlpiGetBInvACol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds)
SCIP_RETCODE SCIPlpiGetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real *dval)
SCIP_Real SCIPlpiInfinity(SCIP_LPI *lpi)
SCIP_Bool SCIPlpiIsObjlimExc(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiChgObjsen(SCIP_LPI *lpi, SCIP_OBJSEN objsen)
SCIP_Bool SCIPlpiIsInfinity(SCIP_LPI *lpi, SCIP_Real val)
SCIP_RETCODE SCIPlpiClear(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiClearState(SCIP_LPI *lpi)
SCIP_Bool SCIPlpiExistsDualRay(SCIP_LPI *lpi)
SCIP_Bool SCIPlpiExistsPrimalRay(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiGetBase(SCIP_LPI *lpi, int *cstat, int *rstat)
SCIP_RETCODE SCIPlpiReadState(SCIP_LPI *lpi, const char *fname)
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)
SCIP_RETCODE SCIPlpiGetPrimalRay(SCIP_LPI *lpi, SCIP_Real *ray)
SCIP_RETCODE SCIPlpiGetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int *ival)
SCIP_RETCODE SCIPlpiWriteLP(SCIP_LPI *lpi, const char *fname)
SCIP_RETCODE SCIPlpiSetIntegralityInformation(SCIP_LPI *lpi, int ncols, int *intInfo)
SCIP_Bool SCIPlpiIsDualInfeasible(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiSetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real dval)
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)
SCIP_RETCODE SCIPlpiSetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, const SCIP_LPINORMS *lpinorms)
SCIP_RETCODE SCIPlpiGetNNonz(SCIP_LPI *lpi, int *nnonz)
SCIP_Bool SCIPlpiHasPrimalSolve(void)
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)
SCIP_RETCODE SCIPlpiGetBounds(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *lbs, SCIP_Real *ubs)
SCIP_Bool SCIPlpiHasBarrierSolve(void)
SCIP_RETCODE SCIPlpiGetDualfarkas(SCIP_LPI *lpi, SCIP_Real *dualfarkas)
SCIP_RETCODE SCIPlpiGetObjval(SCIP_LPI *lpi, SCIP_Real *objval)
SCIP_RETCODE SCIPlpiScaleCol(SCIP_LPI *lpi, int col, SCIP_Real scaleval)
int SCIPlpiGetInternalStatus(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiStartStrongbranch(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiGetSolFeasibility(SCIP_LPI *lpi, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
SCIP_RETCODE SCIPlpiFreeNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
SCIP_Bool SCIPlpiIsIterlimExc(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiChgBounds(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *lb, const SCIP_Real *ub)
SCIP_Bool SCIPlpiIsPrimalUnbounded(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiIgnoreInstability(SCIP_LPI *lpi, SCIP_Bool *success)
SCIP_RETCODE SCIPlpiWriteState(SCIP_LPI *lpi, const char *fname)
SCIP_RETCODE SCIPlpiFree(SCIP_LPI **lpi)
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)
SCIP_RETCODE SCIPlpiGetCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real *val)
SCIP_Bool SCIPlpiIsPrimalFeasible(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiReadLP(SCIP_LPI *lpi, const char *fname)
SCIP_RETCODE SCIPlpiGetRealSolQuality(SCIP_LPI *lpi, SCIP_LPSOLQUALITY qualityindicator, SCIP_Real *quality)
SCIP_Bool SCIPlpiIsDualFeasible(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiGetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
SCIP_Bool SCIPlpiIsTimelimExc(SCIP_LPI *lpi)
SCIP_Bool SCIPlpiHasStateBasis(SCIP_LPI *lpi, SCIP_LPISTATE *lpistate)
SCIP_RETCODE SCIPlpiSetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int ival)
const char * SCIPlpiGetSolverName(void)
SCIP_RETCODE SCIPlpiSetBase(SCIP_LPI *lpi, const int *cstat, const int *rstat)
SCIP_Bool SCIPlpiHasPrimalRay(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiGetBInvRow(SCIP_LPI *lpi, int r, SCIP_Real *coef, int *inds, int *ninds)
SCIP_RETCODE SCIPlpiDelRows(SCIP_LPI *lpi, int firstrow, int lastrow)
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)
SCIP_RETCODE SCIPlpiGetBInvCol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds)
SCIP_RETCODE SCIPlpiGetColNames(SCIP_LPI *lpi, int firstcol, int lastcol, char **colnames, char *namestorage, int namestoragesize, int *storageleft)
SCIP_RETCODE SCIPlpiGetBInvARow(SCIP_LPI *lpi, int r, const SCIP_Real *binvrow, SCIP_Real *coef, int *inds, int *ninds)
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)
SCIP_Bool SCIPlpiWasSolved(SCIP_LPI *lpi)
const char * SCIPlpiGetSolverDesc(void)
SCIP_RETCODE SCIPlpiSolveBarrier(SCIP_LPI *lpi, SCIP_Bool crossover)
SCIP_Bool SCIPlpiIsOptimal(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiGetRowNames(SCIP_LPI *lpi, int firstrow, int lastrow, char **rownames, char *namestorage, int namestoragesize, int *storageleft)
SCIP_Bool SCIPlpiHasDualSolve(void)
SCIP_RETCODE SCIPlpiEndStrongbranch(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiGetSides(SCIP_LPI *lpi, int firstrow, int lastrow, SCIP_Real *lhss, SCIP_Real *rhss)
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)
SCIP_RETCODE SCIPlpiGetSol(SCIP_LPI *lpi, SCIP_Real *objval, SCIP_Real *primsol, SCIP_Real *dualsol, SCIP_Real *activity, SCIP_Real *redcost)
SCIP_Bool SCIPlpiHasDualRay(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiDelColset(SCIP_LPI *lpi, int *dstat)
SCIP_RETCODE SCIPlpiGetObj(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *vals)
SCIP_RETCODE SCIPlpiFreeState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
SCIP_Bool SCIPlpiIsPrimalInfeasible(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiSolveDual(SCIP_LPI *lpi)
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)
SCIP_RETCODE SCIPlpiSolvePrimal(SCIP_LPI *lpi)
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)
SCIP_Bool SCIPlpiIsDualUnbounded(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiGetIterations(SCIP_LPI *lpi, int *iterations)
SCIP_RETCODE SCIPlpiGetBasisInd(SCIP_LPI *lpi, int *bind)
SCIP_RETCODE SCIPlpiCreate(SCIP_LPI **lpi, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_OBJSEN objsen)
void * SCIPlpiGetSolverPointer(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiChgObj(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *obj)
SCIP_RETCODE SCIPlpiGetObjsen(SCIP_LPI *lpi, SCIP_OBJSEN *objsen)
SCIP_Bool SCIPlpiIsStable(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiGetNCols(SCIP_LPI *lpi, int *ncols)
SCIP_RETCODE SCIPlpiInterrupt(SCIP_LPI *lpi, SCIP_Bool interrupt)
SCIP_RETCODE SCIPlpiDelCols(SCIP_LPI *lpi, int firstcol, int lastcol)
SCIP_RETCODE SCIPlpiDelRowset(SCIP_LPI *lpi, int *dstat)
SCIP_RETCODE SCIPlpiScaleRow(SCIP_LPI *lpi, int row, SCIP_Real scaleval)
SCIP_RETCODE SCIPlpiGetNRows(SCIP_LPI *lpi, int *nrows)
SCIP_RETCODE SCIPlpiGetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
SCIP_RETCODE SCIPlpiChgCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real newval)
assert(minobj< SCIPgetCutoffbound(scip))
interface methods for specific LP solvers
SCIP_DUALPACKET ROWPACKET
SCIP_DUALPACKET COLPACKET
static void lpistatePack(SCIP_LPISTATE *lpistate, const int *cstat, const int *rstat)
static void lpistateUnpack(const SCIP_LPISTATE *lpistate, int *cstat, int *rstat)
static int rowpacketNum(int nrows)
SCIP_DUALPACKET ROWPACKET
static SCIP_RETCODE ensureTabMem(SCIP_LPI *const lpi, int sz)
enum LPI_QSOPT_Algo LPI_QSOPT_ALGO
static void lpistateFree(SCIP_LPISTATE **lpistate, BMS_BLKMEM *blkmem)
#define QS_TESTG(A, B, C)
SCIP_DUALPACKET COLPACKET
static int colpacketNum(int ncols)
static SCIP_RETCODE ensureRowMem(SCIP_LPI *const lpi, int nrows)
static SCIP_RETCODE convertSides(SCIP_LPI *const lpi, int nrows, const double *const lhs, const double *const rhs)
static SCIP_RETCODE ensureColMem(SCIP_LPI *const lpi, int ncols)
static SCIP_RETCODE lpistateCreate(SCIP_LPISTATE **lpistate, BMS_BLKMEM *blkmem, int ncols, int nrows)
#define BMSfreeMemory(ptr)
#define BMSfreeBlockMemory(mem, ptr)
#define BMSallocBlockMemory(mem, ptr)
#define BMSreallocMemoryArray(ptr, num)
#define BMSallocMemoryArray(ptr, num)
#define BMSfreeMemoryArray(ptr)
#define BMSallocBlockMemoryArray(mem, ptr, num)
#define BMScopyMemoryArray(ptr, source, num)
#define BMSfreeBlockMemoryArray(mem, ptr, num)
struct BMS_BlkMem BMS_BLKMEM
#define BMSallocMemory(ptr)
public methods for message output
public data structures and miscellaneous methods
SCIP_MESSAGEHDLR * messagehdlr
@ SCIP_PRICING_STEEPQSTART
@ SCIP_PRICING_LPIDEFAULT
enum SCIP_LPParam SCIP_LPPARAM
@ SCIP_LPPAR_BARRIERCONVTOL
enum SCIP_LPSolQuality SCIP_LPSOLQUALITY
enum SCIP_ObjSen SCIP_OBJSEN
enum SCIP_Retcode SCIP_RETCODE