97#ifdef SCIP_DISABLED_CODE
100#define ASSERT(x) do { if( !(x) ) abort(); } while( FALSE )
102#define ASSERT(x) assert(x)
120 if( !msgdisp_checklinks )
122 printf(
"LP LINK CHECKING ACTIVATED! THIS IS VERY SLOW!\n");
123 msgdisp_checklinks =
TRUE;
135 for( j = 0; j < col->
len; ++j )
155 for( j = 0; j < row->
len; ++j )
162 ASSERT((j < row->nlpcols) == (row->
linkpos[j] >= 0 && col->
lppos >= 0));
170#define checkLinks(lp)
185 fpcol = colexact->
fpcol;
214 fprow = rowexact->
fprow;
249 fplp = lpexact->
fplp;
253 for(
i = 0;
i < lpexact->
nrows;
i++)
259 for(
i = 0;
i < lpexact->
ncols;
i++)
286 assert(num <= lpexact->rowssize);
437 if( num > col->
size )
449 for(
i = col->
size;
i < newsize; ++
i )
479 assert(num <= lp->colssize);
502 assert(num <= lp->chgcolssize);
525 assert(num <= lp->lpicolssize);
548 assert(num <= lp->lpirowssize);
570 searchidx = row->
index;
571 while(minpos <= maxpos)
573 pos = (minpos + maxpos)/2;
574 assert(0 <= pos && pos < col->len);
578 if( searchidx == idx )
580 else if( searchidx < idx )
604 if( row->
lppos >= 0 )
645 searchidx = col->
index;
646 while(minpos <= maxpos)
648 pos = (minpos + maxpos)/2;
649 assert(0 <= pos && pos < row->len);
654 if( searchidx == idx )
656 else if( searchidx < idx )
685 if( col->
lppos >= 0 )
706 assert(-1 <= pos && pos < row->len);
712 for(
i = 0;
i < row->
len; ++
i )
779 assert(0 <= oldpos && oldpos < col->len);
780 assert(0 <= newpos && newpos < col->len);
783 if( oldpos == newpos )
787 col->
rows[newpos] = col->
rows[oldpos];
792 if( col->
linkpos[newpos] >= 0 )
821 assert(0 <= pos1 && pos1 < col->len);
822 assert(0 <= pos2 && pos2 < col->len);
831 tmprow = col->
rows[pos2];
833 tmplinkpos = col->
linkpos[pos2];
839 col->
rows[pos1] = tmprow;
841 col->
linkpos[pos1] = tmplinkpos;
884 assert(0 <= oldpos && oldpos < row->len);
885 assert(0 <= newpos && newpos < row->len);
888 if( oldpos == newpos )
891 row->
cols[newpos] = row->
cols[oldpos];
898 if( row->
linkpos[newpos] >= 0 )
929 assert(0 <= pos1 && pos1 < row->len);
930 assert(0 <= pos2 && pos2 < row->len);
940 tmpcol = row->
cols[pos2];
944 tmplinkpos = row->
linkpos[pos2];
952 row->
cols[pos1] = tmpcol;
956 row->
linkpos[pos1] = tmplinkpos;
1056 if( row->
lppos >= 0 && linkpos >= 0 )
1068 col->
rows[pos] = row;
1083 if( col->
lppos >= 0 )
1089 if( row->
lppos >= 0 )
1093 assert(0 <= linkpos && linkpos < row->len);
1110 if( col->
lppos >= 0 )
1116 if( linkpos == row->
nlpcols-1 )
1122 if( row->
lppos >= 0 && linkpos >= 0 )
1167 assert(0 <= pos && pos < col->len);
1172 row = col->
rows[pos];
1210 assert(0 <= pos && pos < col->len);
1271 if( col->
lppos >= 0 && linkpos >= 0 )
1283 row->
cols[pos] = col;
1300 if( row->
lppos >= 0 )
1306 if( col->
lppos >= 0 )
1310 assert(0 <= linkpos && linkpos < col->len);
1327 if( row->
lppos >= 0 )
1333 if( linkpos == col->
nlprows-1 )
1339 if( col->
lppos >= 0 && linkpos >= 0 )
1381 assert(0 <= pos && pos < row->len);
1385 col = row->
cols[pos];
1402 if( pos < row->nlpcols )
1434 col = row->
cols[pos];
1437 assert(0 <= pos && pos < row->len);
1575 for(
i = 0;
i < row->len; ++
i )
1577 if( row->linkpos[
i] >= 0 )
1579 assert(row->cols[
i]->rows[row->linkpos[
i]] == row);
1605 for(
i = 0;
i < col->
len; ++
i )
1644 for(
i = 0;
i < row->
len; ++
i )
1682 for(
i = 0;
i < col->
len; ++
i )
1691 assert(0 <= pos && pos < row->nlpcols);
1720 for(
i = 0;
i < row->
len; ++
i )
1907 assert(lpipos < lp->nrows);
1908 assert(nnonz < naddcoefs);
1909 ind[nnonz] = lpipos;
2101 assert(lpipos < lp->ncols);
2102 assert(nnonz < naddcoefs);
2104 ind[nnonz] = lpipos;
2214 assert(nobjchg < lp->ncols);
2215 objind[nobjchg] = col->
lpipos;
2227 assert(nbdchg < lp->ncols);
2228 bdind[nbdchg] = col->
lpipos;
2245 SCIPsetDebugMsg(
set,
"flushing objective changes: change %d objective values of %d changed columns\n", nobjchg, lp->
nchgcols);
2346 assert(nchg < lp->nrows);
2436 (*col)->fpcol = fpcol;
2444 for(
i = 0;
i < len; ++
i )
2448 (*col)->linkpos[
i] = -1;
2453 (*col)->rows =
NULL;
2454 (*col)->vals =
NULL;
2455 (*col)->linkpos =
NULL;
2462 (*col)->index = (*col)->fpcol->index;
2470 (*col)->storedsolvals =
NULL;
2473 (*col)->nlprows = 0;
2474 (*col)->lprowssorted = 0;
2475 (*col)->nunlinked = len;
2477 (*col)->lpipos = -1;
2478 (*col)->validredcostlp = -1;
2479 (*col)->validfarkaslp = -1;
2481 assert((*col)->fpcol->removable == removable);
2560 if(
set->lp_disablecutoff == 1 || (
set->nactivepricers > 0 &&
set->lp_disablecutoff == 2) )
2659 nrows = lpexact->
nrows;
2669 while( rowdstat[
c] == -1 )
2674 c = rowdstat[
c] + 1;
2677 if( rowdstat[
r] != 1 )
2687 for(
r = 0;
r < nrows; ++
r )
2689 row = lpexact->
rows[
r];
2692 row->
lppos = rowdstat[
r];
2693 if( rowdstat[
r] == -1 )
2715 else if( rowdstat[
r] <
r )
2719 lpexact->
rows[rowdstat[
r]] = row;
2724 lpexact->
lpirows[rowdstat[
r]] = row;
2734 if( lpexact->
nrows < nrows )
2764 if( (*col)->size > 0 )
2773 if( (*col)->storedsolvals !=
NULL )
2819 for(
r = 0;
r < col->
len; ++
r )
2873 assert(0 <= pos && pos < col->fpcol->len);
2923 assert(0 <= pos && pos < col->len);
2977 assert(0 <= pos && pos < col->len);
3169 (*row)->storedsolvals =
NULL;
3170 (*row)->integral =
TRUE;
3171 (*row)->fprow = fprow;
3172 (*row)->fprowrhs = fprowrhs;
3177 if( fprowrhs !=
NULL )
3194 for(
i = 0;
i < len; ++
i )
3200 (*row)->cols_index[
i] = cols[
i]->
index;
3201 (*row)->linkpos[
i] = -1;
3208 (*row)->integral =
FALSE;
3214 (*row)->cols =
NULL;
3215 (*row)->vals =
NULL;
3216 (*row)->valsinterval =
NULL;
3217 (*row)->linkpos =
NULL;
3218 (*row)->cols_index =
NULL;
3232 (*row)->index = stat->
nrowidx;
3236 (*row)->nlpcols = 0;
3237 (*row)->nunlinked = len;
3239 (*row)->lpipos = -1;
3240 (*row)->lpdepth = -1;
3241 (*row)->validactivitylp = -1;
3242 (*row)->delaysort =
FALSE;
3243 (*row)->lpcolssorted =
TRUE;
3244 (*row)->nonlpcolssorted = (len <= 1);
3245 (*row)->delaysort =
FALSE;
3246 (*row)->fprelaxable = isfprelaxable;
3275 assert(
set->exact_cutapproxmaxboundval >= 0);
3285 maxboundval =
set->exact_cutapproxmaxboundval;
3286 maxdenom =
set->exact_cutmaxdenom;
3289 assert(maxboundval >= 0);
3291 for(
i = 0;
i <= row->
len - 1; ++
i )
3314 if( forcegreater == 1 )
3316 else if( forcegreater == -1 )
3344 for(
i = rowexact->
fprow-> len-1;
i >= 0;
i-- )
3349 for(
i = 0;
i < rowexact->
len;
i++ )
3394 oldnlocks = (int) fprow->
nlocks;
3415 SCIP_CALL(
SCIProwExactCreate(row, fprow,
NULL, blkmem,
set, stat, lpexact, 0,
NULL,
NULL, tmplhs, tmpval,
TRUE) );
3426 if(
set->exact_cutmaxdenom > 0 )
3448 fprow->
nlocks = oldnlocks;
3480 int* sideindexpostprocess;
3493 *onerowrelax =
TRUE;
3501 for(
i = 0;
i < row->
len;
i++ )
3508 if( rowexactvalsinterval[
i].inf == rowexactvalsinterval[
i].sup )
3510 valslhsrelax[
i] = rowexactvalsinterval[
i].
inf;
3511 valsrhsrelax[
i] = rowexactvalsinterval[
i].
inf;
3516 *hasfprelax =
FALSE;
3517 valslhsrelax[
i] = rowexactvalsinterval[
i].
inf;
3522 *onerowrelax =
FALSE;
3523 valslhsrelax[
i] = rowexactvalsinterval[
i].
inf;
3524 valsrhsrelax[
i] = rowexactvalsinterval[
i].
sup;
3529 *onerowrelax =
FALSE;
3530 valslhsrelax[
i] = rowexactvalsinterval[
i].
sup;
3531 valsrhsrelax[
i] = rowexactvalsinterval[
i].
inf;
3535 *onerowrelax =
FALSE;
3536 valslhsrelax[
i] = rowexactvalsinterval[
i].
inf;
3537 valsrhsrelax[
i] = rowexactvalsinterval[
i].
sup;
3538 sideindexpostprocess[npostprocess] =
i;
3544 *onerowrelax =
FALSE;
3545 valslhsrelax[
i] = rowexactvalsinterval[
i].
sup;
3546 valsrhsrelax[
i] = rowexactvalsinterval[
i].
inf;
3547 sideindexpostprocess[npostprocess] =
i;
3555 for(
i = 0;
i < npostprocess;
i++ )
3558 idx = sideindexpostprocess[
i];
3563 if( valslhsrelax[idx] == rowexactvalsinterval[idx].inf )
3564 rhsrelax += ubreal >= 0 ? (rowexactvalsinterval[idx].
sup - rowexactvalsinterval[idx].
inf) * ubreal : 0;
3566 rhsrelax -= lbreal <= 0 ? (rowexactvalsinterval[idx].
sup - rowexactvalsinterval[idx].
inf) * lbreal : 0;
3570 for(
i = 0;
i < npostprocess;
i++ )
3573 idx = sideindexpostprocess[
i];
3579 if( valslhsrelax[idx] == rowexactvalsinterval[idx].sup )
3580 lhsrelax -= ubreal >= 0 ? (rowexactvalsinterval[
i].
sup - rowexactvalsinterval[
i].
inf) * ubreal : 0;
3582 lhsrelax += lbreal <= 0 ? (rowexactvalsinterval[
i].
sup - rowexactvalsinterval[
i].
inf) * lbreal : 0;
3588 if( !(*hasfprelax) || *onerowrelax )
3599 for(
i = 0;
i < row->
len;
i++ )
3602 eventqueue, prob, lpexact->
fplp, rowlhs, valslhsrelax[
i]) );
3625 for(
i = 0;
i < row->
len;
i++ )
3628 eventqueue, prob, lpexact->
fplp, rowlhs, valslhsrelax[
i]) );
3631 eventqueue, prob, lpexact->
fplp, rowrhs, valsrhsrelax[
i]) );
3661 SCIPsetDebugMsg(
set,
"flushing exact LP changes: old (%d cols, %d rows), nchgcols=%d, nchgrows=%d, firstchgcol=%d, firstchgrow=%d, new (%d cols, %d rows), flushed=%u\n",
3684#ifdef SCIP_WITH_QSOPTEX
3725 SCIPsetDebugMsg(
set,
"flushing exact LP changes: old (%d cols, %d rows), nchgcols=%d, nchgrows=%d, firstchgcol=%d, firstchgrow=%d, new (%d cols, %d rows), flushed=%u\n",
3742 col = lpexact->
cols[
c];
3754 row = lpexact->
rows[
r];
3791 projshiftdata->lpiexact =
NULL;
3792 projshiftdata->dvarmap =
NULL;
3793 projshiftdata->ndvarmap = 0;
3794 projshiftdata->interiorpoint =
NULL;
3795 projshiftdata->interiorray =
NULL;
3796 projshiftdata->violation =
NULL;
3797 projshiftdata->correction =
NULL;
3798 projshiftdata->commonslack =
NULL;
3799 projshiftdata->includedrows =
NULL;
3800 projshiftdata->projshiftbasis =
NULL;
3801#if defined SCIP_WITH_GMP && defined SCIP_WITH_EXACTSOLVE
3802 projshiftdata->rectfactor = (qsnum_factor_work*)
NULL;
3805 projshiftdata->nextendedrows = 0;
3806 projshiftdata->projshiftbasisdim = 0;
3807 projshiftdata->violationsize = 0;
3809 projshiftdata->projshiftdatacon =
FALSE;
3810 projshiftdata->projshiftdatafail =
FALSE;
3811 projshiftdata->projshifthaspoint =
FALSE;
3812 projshiftdata->projshifthasray =
FALSE;
3813 projshiftdata->projshiftobjweight =
FALSE;
3814 projshiftdata->scaleobj =
FALSE;
3815 projshiftdata->projshiftuseintpoint =
TRUE;
3860 if( projshiftdata->lpiexact !=
NULL )
3868 if( projshiftdata->interiorpoint !=
NULL )
3870 if( projshiftdata->interiorray !=
NULL )
3872 if( projshiftdata->violation !=
NULL )
3874 if( projshiftdata->correction !=
NULL )
3876 if( projshiftdata->commonslack !=
NULL )
3882#if defined(SCIP_WITH_GMP) && defined(SCIP_WITH_EXACTSOLVE)
3883 if( projshiftdata->rectfactor !=
NULL )
3884 RECTLUfreeFactorization(projshiftdata->rectfactor);
3887 assert(projshiftdata->interiorpoint ==
NULL);
3890 assert(projshiftdata->projshiftbasis ==
NULL);
3955 (*lpexact)->fplp = fplp;
3959 (*lpexact)->lpirows =
NULL;
3960 (*lpexact)->chgcols =
NULL;
3961 (*lpexact)->chgrows =
NULL;
3962 (*lpexact)->cols =
NULL;
3963 (*lpexact)->rows =
NULL;
3964 (*lpexact)->divechgsides =
NULL;
3965 (*lpexact)->divechgsidetypes =
NULL;
3966 (*lpexact)->divechgrows =
NULL;
3967 (*lpexact)->divelpistate =
NULL;
3968 (*lpexact)->storedsolvals =
NULL;
3970 (*lpexact)->flushdeletedcols =
FALSE;
3971 (*lpexact)->flushaddedcols =
FALSE;
3972 (*lpexact)->flushdeletedrows =
FALSE;
3973 (*lpexact)->flushaddedrows =
FALSE;
3974 (*lpexact)->updateintegrality =
TRUE;
3975 (*lpexact)->flushed =
TRUE;
3976 (*lpexact)->solved =
FALSE;
3977 (*lpexact)->primalfeasible =
TRUE;
3978 (*lpexact)->primalchecked =
TRUE;
3979 (*lpexact)->diving =
FALSE;
3980 (*lpexact)->divelpwasprimfeas =
TRUE;
3981 (*lpexact)->divelpwasprimchecked =
TRUE;
3982 (*lpexact)->divelpwasdualfeas =
TRUE;
3983 (*lpexact)->divelpwasdualchecked =
TRUE;
3984 (*lpexact)->divingobjchg =
FALSE;
3985 (*lpexact)->dualfeasible =
TRUE;
3986 (*lpexact)->dualchecked =
TRUE;
3987 (*lpexact)->solisbasic =
FALSE;
3988 (*lpexact)->resolvelperror =
FALSE;
3989 (*lpexact)->projshiftpossible =
FALSE;
3990 (*lpexact)->boundshiftuseful =
TRUE;
3991 (*lpexact)->forceexactsolve =
FALSE;
3992 (*lpexact)->allowexactsolve =
FALSE;
3993 (*lpexact)->forcesafebound =
FALSE;
3994 (*lpexact)->wasforcedsafebound =
FALSE;
3995 (*lpexact)->lpiscaling =
set->lp_scaling;
3996 (*lpexact)->lpisolutionpolishing = (
set->lp_solutionpolishing > 0);
3997 (*lpexact)->lpirefactorinterval =
set->lp_refactorinterval;
3998 (*lpexact)->lpiitlim = INT_MAX;
4001 (*lpexact)->lpitiming = (int)
set->time_clocktype;
4002 (*lpexact)->lpirandomseed =
set->random_randomseed;
4004 (*lpexact)->lpicolssize = 0;
4005 (*lpexact)->nlpicols = 0;
4006 (*lpexact)->lpirowssize = 0;
4007 (*lpexact)->nlpirows = 0;
4008 (*lpexact)->lpifirstchgcol = 0;
4009 (*lpexact)->lpifirstchgrow = 0;
4010 (*lpexact)->colssize = 0;
4011 (*lpexact)->ncols = 0;
4012 (*lpexact)->nloosevars = 0;
4013 (*lpexact)->rowssize = 0;
4014 (*lpexact)->nrows = 0;
4015 (*lpexact)->chgcolssize = 0;
4016 (*lpexact)->nchgcols = 0;
4017 (*lpexact)->chgrowssize = 0;
4018 (*lpexact)->nchgrows = 0;
4019 (*lpexact)->firstnewcol = 0;
4020 (*lpexact)->firstnewrow = 0;
4021 (*lpexact)->looseobjvalinf = 0;
4022 (*lpexact)->pseudoobjvalinf = 0;
4023 (*lpexact)->glbpseudoobjvalinf = 0;
4024 (*lpexact)->ndivingrows = 0;
4025 (*lpexact)->ndivechgsides = 0;
4026 (*lpexact)->nremovablerows = 0;
4047 if( !
set->exact_enable )
4057 for(
i = 0;
i < (*lpexact)->nlpirows; ++
i )
4062 if( (*lpexact)->lpiexact !=
NULL )
4072 if( (*lpexact)->storedsolvals !=
NULL )
4095 if( !
set->exact_enable )
4111 for(
int i = 0;
i < col->
len; ++
i )
4152 for(
i = 0;
i < rowexact->
len; ++
i )
4161 lpexact->
rows[lpexact->
nrows] = rowexact;
4175#define lpCutoffDisabled(set) (set->lp_disablecutoff == 1 || (set->nactivepricers > 0 && set->lp_disablecutoff == 2))
4186 if( !
set->exact_enable )
4224#define MAXNUMTROUBLELPMSGS 10
4238 const char* formatstr,
4261 if( verblevel >
set->disp_verblevel )
4271 va_start(ap, formatstr);
4278 SCIPmessagePrintInfo(messagehdlr,
" -- further messages will be suppressed (use display/verblevel=5 to see all)");
4317 algo =
set->lp_initalgorithm;
4328 if(
set->istimelimitfinite )
4332 if( lptimelimit > 0.0 )
4335 if( lptimelimit <= 0.0 || !success )
4386 SCIPerrorMessage(
"Lp-algorithm-type %d is not supported in exact solving mode \n", algo);
4417 SCIPdebugMessage(
"Exact lp solve terminated with optimal. Safe dual bound is %e, previous lp obj-val was %e \n",
4465 while( solveagain ==
TRUE );
4469 SCIPsetDebugMsg(
set,
"solving exact LP with %d returned solstat=%d (internal status: %d, primalfeasible=%u, dualfeasible=%u)\n",
4513 overwritefplp =
TRUE;
4516 harditlim = (int)
MIN(itlim, INT_MAX);
4530 fromscratch =
FALSE;
4531 primalfeasible =
FALSE;
4532 dualfeasible =
FALSE;
4536 prob, eventqueue, harditlim, fromscratch,
lperror) );
4574 if(
set->lp_checkprimfeas )
4576 primalfeaspointer = &primalfeasible;
4582 primalfeasible =
TRUE;
4583 primalfeaspointer =
NULL;
4586 if(
set->lp_checkdualfeas )
4588 dualfeaspointer = &dualfeasible;
4594 dualfeasible =
TRUE;
4595 dualfeaspointer =
NULL;
4605 if( primalfeasible && dualfeasible )
4637 farkasvalid =
FALSE;
4642 if( !farkasvalid && !(*
lperror) )
4657 SCIPwarningMessage(
set->scip,
"Exact LP solver returned unbounded ray: handling not fully supported.\n");
4682 char tmppricingchar;
4717 SCIPsetDebugMsg(
set,
"unresolved error while resolving LP in order to exceed the objlimit\n");
4737 if(
set->lp_checkprimfeas )
4739 primalfeaspointer = &primalfeasible;
4745 primalfeasible =
TRUE;
4746 primalfeaspointer =
NULL;
4749 if(
set->lp_checkdualfeas )
4751 dualfeaspointer = &dualfeasible;
4757 dualfeasible =
TRUE;
4758 dualfeaspointer =
NULL;
4779 if( !primalfeasible || !dualfeasible
4809 farkasvalid =
FALSE;
4829 if(
set->lp_checkprimfeas )
4842 primalfeasible =
TRUE;
4848 if( !primalfeasible || !rayfeasible )
4892 SCIPmessagePrintWarning(messagehdlr,
"LP solver reached time limit, but SCIP time limit is not exceeded yet; "
4893 "you might consider switching the clock type of SCIP\n");
4971 for(
r = 0;
r < row->
len; ++
r )
5042 return (row->
lppos >= 0);
5162 if( row->
lppos >= 0 )
5248 assert(0 <= pos && pos < row->len);
5299 assert(0 <= pos && pos < row->len);
5356 assert(0 <= pos && pos < row->len);
5492 row = rowexact->
fprow;
5494 if( row->
len != rowexact->
len )
5500 for(
c = 0;
c < row->
len;
c++ )
5510 sum += row->
vals[
c] * solval;
5546 for(
i = 0;
i < rowexact->
len; ++
i )
5548 colexact = rowexact->
cols[
i];
5553 && colexact->
lppos >= 0));
5593 assert((*row)->nuses >= 1);
5594 assert((*row)->nlocks < (
unsigned int)((*row)->nuses));
5597 (
void*) (*row), (*row)->nuses, (*row)->nlocks);
5599 if( (*row)->nuses == 0 )
5620 assert((*row)->nuses == 0);
5621 assert((*row)->lppos == -1);
5626 if( (*row)->storedsolvals !=
NULL )
5812 for( s = 1; s < row->
len; ++s )
5817 if( cols[s] == cols[t] )
5832 cols_index[t] = cols_index[s];
5855 for(
i = 0;
i < row->
len; ++
i )
5859 for( j =
i+1; j < row->
len; ++j )
5903 row = rowexact->
fprow;
5911 colexact = rowexact->
cols[
c];
5928 colexact = rowexact->
cols[
c];
5934 if( col->
lppos >= 0 )
5944 colexact = rowexact->
cols[
c];
5972 row = rowexact->
fprow;
5978 for(
i = 0;
i < row->
len; ++
i )
5980 colexact = rowexact->
cols[
i];
6073 if( num > row->
size )
6083 for(
i = row->
size;
i < newsize; ++
i )
6086 row->
size = newsize;
6088 assert(num <= row->size);
6611 if( !
set->exact_enable )
6794 return lpexact->
nrows;
6833 for(
c = 0;
c < row->
len;
c++ )
6840 for(
c = 0;
c < lpexact->
ncols;
c++ )
6889 if( primalfeasible ==
NULL )
6890 stillprimalfeasible =
FALSE;
6893 *primalfeasible =
TRUE;
6894 stillprimalfeasible =
TRUE;
6896 if( dualfeasible ==
NULL )
6897 stilldualfeasible =
FALSE;
6900 *dualfeasible =
TRUE;
6901 stilldualfeasible =
TRUE;
6953 for(
c = 0;
c < nlpicols; ++
c )
6955 assert( 0 <= cstat[
c] && cstat[
c] < 4 );
6967 if( stillprimalfeasible )
6969 stillprimalfeasible =
6988 primalfeasible !=
NULL ? stillprimalfeasible :
TRUE,
6991 dualfeasible !=
NULL ? stilldualfeasible :
TRUE);
6997 if( stilldualfeasible )
7011 for(
r = 0;
r < nlpirows; ++
r )
7013 assert( 0 <= rstat[
r] && rstat[
r] < 4 );
7022 fprow = lpirows[
r]->
fprow;
7033 if( stillprimalfeasible )
7035 stillprimalfeasible =
7043 if( stilldualfeasible &&
7046 if( stilldualfeasible &&
7051 lpirows[
r]->fprow->name, lpirows[
r]->
lhs, lpirows[
r]->
rhs,
7055 primalfeasible !=
NULL ? stillprimalfeasible :
TRUE,
7058 dualfeasible !=
NULL ? stilldualfeasible :
TRUE);
7064 if( stilldualfeasible )
7104 if( primalfeasible !=
NULL )
7105 *primalfeasible = stillprimalfeasible;
7106 if( dualfeasible !=
NULL )
7107 *dualfeasible = stilldualfeasible;
7132 SCIPerrorMessage(
"Unbounded solution not implemented in exact solving mode.\n");
7178 for(
c = 0;
c < nlpicols;
c++ )
7258 for(
r = 0;
r < nlpirows; ++
r )
7288 lpirows[
r]->constant, dualfarkas[
r]);
7303 for(
c = 0;
c < lpirows[
r]->
len;
c++ )
7310 assert(pos >= 0 && pos < nlpicols);
7333 for(
c = 0;
c < nlpicols; ++
c )
7339 if( farkascoefs !=
NULL )
7468 assert(newncols <= lpexact->ncols);
7470 if( newncols < lpexact->ncols )
7474 for(
c = lpexact->
ncols-1;
c >= newncols; --
c )
7476 col = lpexact->
cols[
c];
7514 assert(0 <= newnrows && newnrows <= lpexact->nrows);
7517 if( newnrows < lpexact->nrows )
7519 for(
r = lpexact->
nrows-1;
r >= newnrows; --
r )
7521 row = lpexact->
rows[
r];
7558 if( !
set->exact_enable )
7605 if( !
set->exact_enable )
7621 if( !
set->exact_enable )
7638 if( !
set->exact_enable )
7699 if( storedsolvals !=
NULL )
7804 if( storedsolvals !=
NULL )
7899 if( storedsolvals !=
NULL )
7901#ifdef SCIP_WITH_QSOPTEX
7989 assert(num <= lpexact->chgrowssize);
8007 if( rowexact->
lpipos >= 0 )
8141 if( lpistate ==
NULL )
8168 if( *lpistate !=
NULL )
8198 SCIPsetDebugMsg(
set,
"exact diving started (LP flushed: %u, LP solved: %u, solstat: %d)\n",
8201#ifdef SCIP_MORE_DEBUG
8202 for(
c = 0;
c < lpexact->
ncols; ++
c )
8252 for(
c = 0;
c < lpexact->
ncols; ++
c )
8257 for(
r = 0;
r < lpexact->
nrows; ++
r )
8301 for( v = 0; v <
nvars; ++v )
8378 for(
c = 0;
c < lpexact->
ncols; ++
c )
8383 for(
r = 0;
r < lpexact->
nrows; ++
r )
8403#ifdef SCIP_MORE_DEBUG
8406 for(
c = 0;
c < lpexact->
ncols; ++
c )
8427 if( lpexact ==
NULL )
8456 for(
int c = 0;
c < lpexact->
ncols; ++
c )
8464 for(
int r = 0;
r < lpexact->
nrows; ++
r )
8488 if( !
set->exact_enable )
8491 fplp = lpexact->
fplp;
8505 for(
i = 0;
i < nrowsex; ++
i )
8520 for(
i = 0;
i < nrowsfp; ++
i )
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
internal methods for clocks and timing issues
internal methods for storing cuts in a cut pool
#define SCIP_REAL_UNITROUNDOFF
#define SCIP_LONGINT_FORMAT
internal methods for managing events
SCIP_Bool SCIPlpiExactHasDualRay(SCIP_LPIEXACT *lpi)
SCIP_RETCODE SCIPlpiExactSetRealpar(SCIP_LPIEXACT *lpi, SCIP_LPPARAM type, SCIP_Real dval)
SCIP_RETCODE SCIPlpiExactSetBase(SCIP_LPIEXACT *lpi, int *cstat, int *rstat)
SCIP_Bool SCIPlpiExactHasStateBasis(SCIP_LPIEXACT *lpi, SCIP_LPISTATE *lpistate)
SCIP_RETCODE SCIPlpiExactGetObj(SCIP_LPIEXACT *lpi, int firstcol, int lastcol, SCIP_RATIONAL **vals)
SCIP_RETCODE SCIPlpiExactGetObjval(SCIP_LPIEXACT *lpi, SCIP_RATIONAL *objval)
SCIP_RETCODE SCIPlpiExactWriteLP(SCIP_LPIEXACT *lpi, const char *fname)
SCIP_Bool SCIPlpiExactHasPrimalRay(SCIP_LPIEXACT *lpi)
SCIP_RETCODE SCIPlpiExactGetDualfarkas(SCIP_LPIEXACT *lpi, SCIP_RATIONAL **dualfarkas)
SCIP_RETCODE SCIPlpiExactSolveDual(SCIP_LPIEXACT *lpi)
SCIP_RETCODE SCIPlpiExactSetIntpar(SCIP_LPIEXACT *lpi, SCIP_LPPARAM type, int ival)
SCIP_Bool SCIPlpiExactIsPrimalUnbounded(SCIP_LPIEXACT *lpi)
SCIP_RETCODE SCIPlpiExactGetSides(SCIP_LPIEXACT *lpi, int firstrow, int lastrow, SCIP_RATIONAL **lhss, SCIP_RATIONAL **rhss)
SCIP_Bool SCIPlpiExactIsPrimalInfeasible(SCIP_LPIEXACT *lpi)
SCIP_Real SCIPlpiExactInfinity(SCIP_LPIEXACT *lpi)
SCIP_RETCODE SCIPlpiExactGetSolFeasibility(SCIP_LPIEXACT *lpi, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
SCIP_Bool SCIPlpiExactExistsPrimalRay(SCIP_LPIEXACT *lpi)
SCIP_RETCODE SCIPlpiExactAddRows(SCIP_LPIEXACT *lpi, int nrows, SCIP_RATIONAL **lhs, SCIP_RATIONAL **rhs, char **rownames, int nnonz, int *beg, int *ind, SCIP_RATIONAL **val)
SCIP_RETCODE SCIPlpiExactCreate(SCIP_LPIEXACT **lpi, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_OBJSEN objsen)
SCIP_Bool SCIPlpiExactIsIterlimExc(SCIP_LPIEXACT *lpi)
SCIP_Bool SCIPlpiExactIsPrimalFeasible(SCIP_LPIEXACT *lpi)
SCIP_Bool SCIPlpiExactIsDualFeasible(SCIP_LPIEXACT *lpi)
SCIP_Bool SCIPlpiExactIsOptimal(SCIP_LPIEXACT *lpi)
SCIP_RETCODE SCIPlpiExactAddCols(SCIP_LPIEXACT *lpi, int ncols, SCIP_RATIONAL **obj, SCIP_RATIONAL **lb, SCIP_RATIONAL **ub, char **colnames, int nnonz, int *beg, int *ind, SCIP_RATIONAL **val)
SCIP_RETCODE SCIPlpiExactGetBase(SCIP_LPIEXACT *lpi, int *cstat, int *rstat)
SCIP_RETCODE SCIPlpiExactDelCols(SCIP_LPIEXACT *lpi, int firstcol, int lastcol)
SCIP_RETCODE SCIPlpiExactChgObj(SCIP_LPIEXACT *lpi, int ncols, int *ind, SCIP_RATIONAL **obj)
SCIP_RETCODE SCIPlpiExactGetPrimalRay(SCIP_LPIEXACT *lpi, SCIP_RATIONAL **ray)
SCIP_RETCODE SCIPlpiExactGetBounds(SCIP_LPIEXACT *lpi, int firstcol, int lastcol, SCIP_RATIONAL **lbs, SCIP_RATIONAL **ubs)
int SCIPlpiExactGetInternalStatus(SCIP_LPIEXACT *lpi)
SCIP_RETCODE SCIPlpiExactClear(SCIP_LPIEXACT *lpi)
SCIP_RETCODE SCIPlpiExactFree(SCIP_LPIEXACT **lpi)
SCIP_Bool SCIPlpiExactIsObjlimExc(SCIP_LPIEXACT *lpi)
SCIP_RETCODE SCIPlpiExactGetNCols(SCIP_LPIEXACT *lpi, int *ncols)
SCIP_RETCODE SCIPlpiExactChgSides(SCIP_LPIEXACT *lpi, int nrows, int *ind, SCIP_RATIONAL **lhs, SCIP_RATIONAL **rhs)
SCIP_RETCODE SCIPlpiExactGetState(SCIP_LPIEXACT *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
SCIP_RETCODE SCIPlpiExactDelRows(SCIP_LPIEXACT *lpi, int firstrow, int lastrow)
SCIP_RETCODE SCIPlpiExactGetNRows(SCIP_LPIEXACT *lpi, int *nrows)
SCIP_Bool SCIPlpiExactIsTimelimExc(SCIP_LPIEXACT *lpi)
SCIP_RETCODE SCIPlpiExactGetRealpar(SCIP_LPIEXACT *lpi, SCIP_LPPARAM type, SCIP_Real *dval)
SCIP_RETCODE SCIPlpiExactChgBounds(SCIP_LPIEXACT *lpi, int ncols, int *ind, SCIP_RATIONAL **lb, SCIP_RATIONAL **ub)
SCIP_RETCODE SCIPlpiExactFreeState(SCIP_LPIEXACT *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
SCIP_RETCODE SCIPlpiExactDelRowset(SCIP_LPIEXACT *lpi, int *dstat)
SCIP_RETCODE SCIPlpiExactGetSol(SCIP_LPIEXACT *lpi, SCIP_RATIONAL *objval, SCIP_RATIONAL **primsol, SCIP_RATIONAL **dualsol, SCIP_RATIONAL **activity, SCIP_RATIONAL **redcost)
SCIP_RETCODE SCIPlpiExactGetIntpar(SCIP_LPIEXACT *lpi, SCIP_LPPARAM type, int *ival)
SCIP_RETCODE SCIPlpiExactSetState(SCIP_LPIEXACT *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE *lpistate)
SCIP_RETCODE SCIPlpiExactGetIterations(SCIP_LPIEXACT *lpi, int *iterations)
SCIP_RETCODE SCIPlpiGetBase(SCIP_LPI *lpi, int *cstat, int *rstat)
SCIP_Bool SCIPlpiHasStateBasis(SCIP_LPI *lpi, SCIP_LPISTATE *lpistate)
const char * SCIPlpiGetSolverName(void)
SCIP_RETCODE SCIPlpiFreeState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
SCIP_RETCODE SCIPlpiGetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
SCIP_VAR * SCIPcolGetVar(SCIP_COL *col)
SCIP_Bool SCIPcolIsIntegral(SCIP_COL *col)
void SCIPintervalSetRoundingModeUpwards(void)
void SCIPintervalSetRoundingModeDownwards(void)
SCIP_Real SCIPintervalGetInf(SCIP_INTERVAL interval)
SCIP_ROUNDMODE SCIPintervalGetRoundingMode(void)
void SCIPintervalSetRoundingMode(SCIP_ROUNDMODE roundmode)
void SCIPintervalSet(SCIP_INTERVAL *resultant, SCIP_Real value)
struct SCIP_Interval SCIP_INTERVAL
SCIP_Real SCIPintervalGetSup(SCIP_INTERVAL interval)
void SCIPintervalSetRational(SCIP_INTERVAL *resultant, SCIP_RATIONAL *value)
SCIP_RETCODE SCIPprintRowExact(SCIP *scip, SCIP_ROWEXACT *row, FILE *file)
SCIP_Bool SCIPrationalIsLTReal(SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_Bool SCIPrationalIsFpRepresentable(SCIP_RATIONAL *rational)
void SCIPrationalMin(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_RETCODE SCIPrationalCreateBlock(BMS_BLKMEM *blkmem, SCIP_RATIONAL **rational)
void SCIPrationalMult(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
void SCIPrationalSetInfinity(SCIP_RATIONAL *res)
void SCIPrationalAdd(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Real SCIPrationalGetReal(SCIP_RATIONAL *rational)
SCIP_RETCODE SCIPrationalCreateString(BMS_BLKMEM *mem, SCIP_RATIONAL **rational, const char *desc)
SCIP_Bool SCIPrationalIsApproxEQReal(SCIP_SET *set, SCIP_RATIONAL *rat, SCIP_Real real, SCIP_ROUNDMODE_RAT roundmode)
void SCIPrationalFreeBlock(BMS_BLKMEM *mem, SCIP_RATIONAL **rational)
#define SCIPrationalDebugMessage
SCIP_Bool SCIPrationalIsAbsInfinity(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsLT(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalSetReal(SCIP_RATIONAL *res, SCIP_Real real)
SCIP_Bool SCIPrationalIsGT(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
SCIP_RETCODE SCIPrationalCopyBlock(BMS_BLKMEM *mem, SCIP_RATIONAL **result, SCIP_RATIONAL *src)
void SCIPrationalFreeBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
SCIP_RETCODE SCIPrationalCopyBlockArray(BMS_BLKMEM *mem, SCIP_RATIONAL ***target, SCIP_RATIONAL **src, int len)
void SCIPrationalDiff(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Bool SCIPrationalIsLEReal(SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_Bool SCIPrationalIsPositive(SCIP_RATIONAL *rational)
SCIP_RETCODE SCIPrationalCreateBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
void SCIPrationalAddProd(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
SCIP_Bool SCIPrationalIsZero(SCIP_RATIONAL *rational)
void SCIPrationalSetRational(SCIP_RATIONAL *res, SCIP_RATIONAL *src)
SCIP_Bool SCIPrationalIsGEReal(SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_Bool SCIPrationalIsIntegral(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalDenominatorIsLE(SCIP_RATIONAL *rational, SCIP_Longint val)
SCIP_Bool SCIPrationalIsGE(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalMessage(SCIP_MESSAGEHDLR *msg, FILE *file, SCIP_RATIONAL *rational)
void SCIPrationalSetNegInfinity(SCIP_RATIONAL *res)
void SCIPrationalSetFraction(SCIP_RATIONAL *res, SCIP_Longint nom, SCIP_Longint denom)
void SCIPrationalNegate(SCIP_RATIONAL *res, SCIP_RATIONAL *op)
SCIP_Bool SCIPrationalIsNegative(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsInfinity(SCIP_RATIONAL *rational)
void SCIPrationalFreeBlockArray(BMS_BLKMEM *mem, SCIP_RATIONAL ***ratblockarray, int size)
SCIP_Real SCIPrationalRoundReal(SCIP_RATIONAL *rational, SCIP_ROUNDMODE_RAT roundmode)
SCIP_RETCODE SCIPrationalCreateBufferArray(BMS_BUFMEM *mem, SCIP_RATIONAL ***rational, int size)
SCIP_Bool SCIPrationalIsNegInfinity(SCIP_RATIONAL *rational)
SCIP_Bool SCIPrationalIsGTReal(SCIP_RATIONAL *rat, SCIP_Real real)
SCIP_Bool SCIPrationalIsEQ(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
void SCIPrationalDiffProd(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
void SCIPrationalMultReal(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_Real op2)
void SCIPrationalComputeApproximation(SCIP_RATIONAL *res, SCIP_RATIONAL *src, SCIP_Longint maxdenom, int forcegreater)
void SCIPrationalFreeBufferArray(BMS_BUFMEM *mem, SCIP_RATIONAL ***ratbufarray, int size)
SCIP_Bool SCIPrationalIsLE(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
int SCIProwGetNNonz(SCIP_ROW *row)
SCIP_COL ** SCIProwGetCols(SCIP_ROW *row)
SCIP_RETCODE SCIPprintRow(SCIP *scip, SCIP_ROW *row, FILE *file)
const char * SCIProwGetName(SCIP_ROW *row)
SCIP_Real SCIProwGetConstant(SCIP_ROW *row)
SCIP_ROWEXACT * SCIProwGetRowExact(SCIP_ROW *row)
SCIP_Bool SCIProwIsInLP(SCIP_ROW *row)
SCIP_Real * SCIProwGetVals(SCIP_ROW *row)
SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
SCIP_VARSTATUS SCIPvarGetStatusExact(SCIP_VAR *var)
SCIP_COLEXACT * SCIPvarGetColExact(SCIP_VAR *var)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetUbLocalExact(SCIP_VAR *var)
SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetLbGlobalExact(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetLbLocalExact(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetObjExact(SCIP_VAR *var)
SCIP_RATIONAL * SCIPvarGetUbGlobalExact(SCIP_VAR *var)
void SCIPsortPtrPtrInt(void **ptrarray1, void **ptrarray2, int *intarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
void SCIPsortIntIntPtrPtrInterval(int *intarray1, int *intarray2, void **ptrarray, void **ptrarray2, SCIP_INTERVAL *intervalarray, int len)
assert(minobj< SCIPgetCutoffbound(scip))
interval arithmetics for provable bounds
#define MAXNUMTROUBLELPMSGS
SCIP_RETCODE SCIProwDelCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col)
SCIP_RETCODE SCIProwAddCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val)
void SCIProwRecalcNorms(SCIP_ROW *row, SCIP_SET *set)
void SCIProwPrint(SCIP_ROW *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
SCIP_RETCODE SCIProwChgConstant(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real constant)
SCIP_RETCODE SCIProwChgRhs(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real rhs)
SCIP_RETCODE SCIProwChgLhs(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real lhs)
int SCIPlpGetNRows(SCIP_LP *lp)
SCIP_RETCODE SCIProwRelease(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
internal methods for LP management
static void rowExactSortLP(SCIP_ROWEXACT *row)
SCIP_Bool SCIPlpExactProjectShiftPossible(SCIP_LPEXACT *lpexact)
void SCIProwExactRecalcLPActivity(SCIP_ROWEXACT *rowexact, SCIP_STAT *stat)
SCIP_RETCODE SCIProwExactGetSolFeasibility(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_RATIONAL *result)
SCIP_RETCODE SCIPlpExactShrinkRows(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, int newnrows)
void SCIPlpExactOverwriteFpDualSol(SCIP_LPEXACT *lpexact, SCIP_Bool dualfarkas)
SCIP_Bool SCIProwExactIsModifiable(SCIP_ROWEXACT *row)
static SCIP_RETCODE lpExactSetObjlim(SCIP_LPEXACT *lp, SCIP_SET *set, SCIP_Real objlim, SCIP_Bool *success)
static SCIP_RETCODE rowExactCreateFromRowLimitEncodingLength(SCIP_ROW *row, SCIP_ROWEXACT *rowexact, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact)
SCIP_RETCODE SCIPlpExactFreeState(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
SCIP_RETCODE SCIPlpExactReset(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue)
void SCIPlpExactForceExactSolve(SCIP_LPEXACT *lpexact, SCIP_SET *set)
SCIP_RETCODE SCIPlpExactGetSol(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible, SCIP_Bool overwritefplp)
static SCIP_RETCODE colExactSwapCoefs(SCIP_COLEXACT *col, BMS_BUFMEM *buffer, int pos1, int pos2)
SCIP_RETCODE SCIPlpExactLink(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
static SCIP_RETCODE lpExactFlushAndSolve(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue, int harditlim, SCIP_Bool fromscratch, SCIP_Bool *lperror)
static SCIP_RETCODE ensureRowexsSize(SCIP_LPEXACT *lpexact, SCIP_SET *set, int num)
SCIP_COLEXACT ** SCIProwExactGetCols(SCIP_ROWEXACT *row)
SCIP_RETCODE SCIPlpExactSetState(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPISTATE *lpistate, SCIP_Bool wasprimfeas, SCIP_Bool wasprimchecked, SCIP_Bool wasdualfeas, SCIP_Bool wasdualchecked)
SCIP_RETCODE SCIProwExactFree(SCIP_ROWEXACT **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LPEXACT *lpexact)
static SCIP_RETCODE insertColChgcols(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lp)
static SCIP_RETCODE colExactUpdateDelLP(SCIP_COLEXACT *col, SCIP_SET *set)
SCIP_RETCODE SCIPlpExactSolveAndEval(SCIP_LPEXACT *lpexact, SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_Longint itlim, SCIP_Bool *lperror, SCIP_Bool usefarkas)
SCIP_RATIONAL * SCIProwExactGetRhs(SCIP_ROWEXACT *row)
static SCIP_RETCODE colExactRestoreSolVals(SCIP_COLEXACT *colexact, BMS_BLKMEM *blkmem, SCIP_Longint validlp, SCIP_Bool freebuffer)
SCIP_RETCODE SCIPlpExactUpdateDelVar(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
static int rowExactSearchCoefPart(SCIP_ROWEXACT *row, const SCIP_COLEXACT *col, int minpos, int maxpos)
static SCIP_RETCODE ensureLpiExactcolsSize(SCIP_LPEXACT *lp, SCIP_SET *set, int num)
static void rowExactMerge(SCIP_ROWEXACT *row, SCIP_SET *set)
SCIP_RETCODE SCIPcolExactDelCoef(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row)
SCIP_RETCODE SCIPlpExactDelRowset(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, int *rowdstat)
SCIP_RATIONAL * SCIProwExactGetLPActivity(SCIP_ROWEXACT *row, SCIP_STAT *stat, SCIP_LPEXACT *lpexact)
static void coefChangedExact(SCIP_ROWEXACT *row, SCIP_COLEXACT *col, SCIP_LPEXACT *lp)
static SCIP_RETCODE rowExactRestoreSolVals(SCIP_ROWEXACT *rowexact, BMS_BLKMEM *blkmem, SCIP_Longint validlp, SCIP_Bool freebuffer, SCIP_Bool infeasible)
static SCIP_RETCODE lpExactRestoreSolVals(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem)
void SCIProwExactUnlock(SCIP_ROWEXACT *row)
static SCIP_RETCODE lpExactSetRealpar(SCIP_LPEXACT *lp, SCIP_LPPARAM lpparam, SCIP_Real value, SCIP_Bool *success)
static void getObjvalDeltaUbExact(SCIP_RATIONAL *obj, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub, SCIP_RATIONAL *deltaval, int *deltainf)
static SCIP_RETCODE rowExactSwapCoefs(SCIP_ROWEXACT *row, BMS_BUFMEM *buffer, int pos1, int pos2)
static SCIP_RETCODE lpExactFlushAddRows(SCIP_LPEXACT *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
SCIP_RETCODE SCIProwExactGetLPFeasibility(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *result)
SCIP_Bool SCIPlpExactIsSynced(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_MESSAGEHDLR *msg)
SCIP_RETCODE SCIPlpExactGetState(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
static SCIP_RETCODE lpExactFlushChgCols(SCIP_LPEXACT *lp, SCIP_SET *set)
SCIP_RETCODE SCIPlpExactGetPrimalRay(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL **ray)
void SCIProwExactPrint(SCIP_ROWEXACT *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
static SCIP_RETCODE lpExactFlushAddCols(SCIP_LPEXACT *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
SCIP_RETCODE SCIPcolExactAddCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *val)
SCIP_RETCODE SCIPlpExactUpdateVarColumn(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
static void markRowexDeleted(SCIP_ROWEXACT *row)
SCIP_RETCODE SCIPlpExactStartDive(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
SCIP_Bool SCIProwExactIsInLP(SCIP_ROWEXACT *row)
static void colExactSortLP(SCIP_COLEXACT *col)
SCIP_RETCODE SCIProwExactIncCoef(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col, SCIP_RATIONAL *incval)
SCIP_RETCODE SCIPlpExactSyncLPs(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
SCIP_RETCODE SCIProwExactEnsureSize(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
SCIP_RETCODE SCIPlpExactUpdateVarLoose(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
SCIP_ROW * SCIProwExactGetRow(SCIP_ROWEXACT *row)
SCIP_RETCODE SCIProwExactAddCoef(SCIP_ROWEXACT *rowexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *colexact, SCIP_RATIONAL *val)
static void markColexDeleted(SCIP_COLEXACT *col)
void SCIProwExactCapture(SCIP_ROWEXACT *row)
SCIP_Bool SCIProwHasExRow(SCIP_LPEXACT *lpexact, SCIP_ROW *row)
static SCIP_RETCODE colExactUpdateAddLP(SCIP_COLEXACT *col, SCIP_SET *set)
static SCIP_RETCODE lpExactFlushDelRows(SCIP_LPEXACT *lp, BMS_BLKMEM *blkmem, SCIP_SET *set)
static SCIP_RETCODE rowExactAddCoef(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lp, SCIP_COLEXACT *col, SCIP_RATIONAL *val, int linkpos)
static SCIP_RETCODE rowExactLink(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lp)
SCIP_Bool SCIProwExactHasFpRelax(SCIP_ROWEXACT *row)
SCIP_RETCODE SCIPcolExactIncCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *incval)
SCIP_RETCODE SCIPlpExactUpdateAddVar(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
static SCIP_RETCODE SCIPlpExactProjectShiftFreeLPIExact(SCIP_LPIEXACT **lpiexact)
static SCIP_RETCODE rowExactStoreSolVals(SCIP_ROWEXACT *rowexact, BMS_BLKMEM *blkmem, SCIP_Bool infeasible)
static SCIP_RETCODE lpExactSetIntpar(SCIP_LPEXACT *lp, SCIP_LPPARAM lpparam, int value, SCIP_Bool *success)
static SCIP_Bool colExactInSync(SCIP_COLEXACT *colexact, SCIP_SET *set)
static void rowExactSortNonLP(SCIP_ROWEXACT *row)
SCIP_RETCODE SCIPcolExactChgCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *val)
static SCIP_RETCODE lpExactFlushDelCols(SCIP_LPEXACT *lp)
#define lpCutoffDisabled(set)
static SCIP_RETCODE lpExactFlushChgRows(SCIP_LPEXACT *lp, SCIP_SET *set)
SCIP_RETCODE SCIProwExactCreate(SCIP_ROWEXACT **row, SCIP_ROW *fprow, SCIP_ROW *fprowrhs, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, int len, SCIP_COLEXACT **cols, SCIP_RATIONAL **vals, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_Bool isfprelaxable)
void SCIProwExactDelaySort(SCIP_ROWEXACT *rowexact)
SCIP_RETCODE SCIProwExactRelease(SCIP_ROWEXACT **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LPEXACT *lpexact)
SCIP_RETCODE SCIProwExactGetPseudoFeasibility(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_RATIONAL *result)
SCIP_RATIONAL * SCIProwExactGetConstant(SCIP_ROWEXACT *row)
static void lpExactNumericalTroubleMessage(SCIP_MESSAGEHDLR *messagehdlr, SCIP_SET *set, SCIP_STAT *stat, SCIP_VERBLEVEL verblevel, const char *formatstr,...)
void SCIPlpExactDecNLoosevars(SCIP_LPEXACT *lpexact)
SCIP_RETCODE SCIPlpExactAddRow(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_ROWEXACT *rowexact)
static SCIP_RETCODE SCIPlpPsdataCreate(SCIP_LPEXACT *lpexact, SCIP_SET *set, BMS_BLKMEM *blkmem)
static SCIP_RETCODE rowExactChgCoefPos(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_LPEXACT *lp, int pos, SCIP_RATIONAL *val)
SCIP_VAR * SCIPcolExactGetVar(SCIP_COLEXACT *col)
SCIP_RATIONAL * SCIPcolExactGetPrimsol(SCIP_COLEXACT *col)
SCIP_RETCODE SCIPlpExactGetIterations(SCIP_LPEXACT *lpexact, int *iterations)
static void markRowExactDeleted(SCIP_ROWEXACT *row)
static SCIP_RETCODE ensureChgcolsSize(SCIP_LPEXACT *lp, SCIP_SET *set, int num)
SCIP_COLEXACT * SCIPcolGetColExact(SCIP_COL *col)
SCIP_RATIONAL * SCIProwExactGetLhs(SCIP_ROWEXACT *row)
void SCIProwExactForceSort(SCIP_ROWEXACT *rowexact, SCIP_SET *set)
int SCIProwExactGetIndex(SCIP_ROWEXACT *row)
void SCIPlpExactGetPseudoObjval(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
static SCIP_RETCODE ensureChgrowsSizeExact(SCIP_LPEXACT *lpexact, SCIP_SET *set, int num)
static SCIP_RETCODE getObjvalDeltaObjExact(SCIP_SET *set, SCIP_RATIONAL *oldobj, SCIP_RATIONAL *newobj, SCIP_RATIONAL *lb, SCIP_RATIONAL *ub, SCIP_RATIONAL *deltaval, int *deltainf)
static SCIP_RETCODE colExactChgCoefPos(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lp, int pos, SCIP_RATIONAL *val)
static SCIP_RETCODE rowExactSideChanged(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_SIDETYPE sidetype)
SCIP_RETCODE SCIPlpExactUpdateVarObj(SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_VAR *var, SCIP_RATIONAL *oldobj, SCIP_RATIONAL *newobj)
SCIP_RETCODE SCIProwExactDelCoef(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col)
int SCIPlpExactGetNRows(SCIP_LPEXACT *lpexact)
SCIP_RETCODE SCIPlpExactClear(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
static SCIP_RETCODE rowExactUpdateDelLP(SCIP_ROWEXACT *row, SCIP_SET *set)
static SCIP_RETCODE lpExactSetIterationLimit(SCIP_LPEXACT *lp, int itlim)
static void getObjvalDeltaLbExact(SCIP_RATIONAL *obj, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb, SCIP_RATIONAL *deltaval, int *deltainf)
static int rowExactSearchCoef(SCIP_ROWEXACT *row, const SCIP_COLEXACT *col)
void SCIProwExactLock(SCIP_ROWEXACT *row)
SCIP_Bool SCIProwExactGetSolActivityWithErrorbound(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Real *activity, SCIP_Real *errorbound)
SCIP_Bool SCIPlpExactDiving(SCIP_LPEXACT *lpexact)
SCIP_RATIONAL * SCIPcolExactGetUb(SCIP_COLEXACT *col)
SCIP_RETCODE SCIProwExactCreateFromRow(SCIP_ROW *fprow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_LPEXACT *lpexact)
SCIP_RETCODE SCIPlpExactGetDualfarkas(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *valid, SCIP_Bool overwritefplp)
SCIP_RETCODE SCIPlpExactEndDive(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR **vars, int nvars)
static SCIP_RETCODE colExactEnsureSize(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
SCIP_RETCODE SCIPlpExactShrinkCols(SCIP_LPEXACT *lpexact, SCIP_SET *set, int newncols)
SCIP_RETCODE SCIPlpExactAddCol(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_COLEXACT *col)
static SCIP_RETCODE rowExactUnlink(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_LPEXACT *lp)
SCIP_RETCODE SCIProwExactGetSolActivity(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Bool useexact, SCIP_RATIONAL *result)
SCIP_RETCODE SCIPlpExactGetUnboundedSol(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *rayfeasible)
static void colExactMoveCoef(SCIP_COLEXACT *col, int oldpos, int newpos)
SCIP_RETCODE SCIPlpExactSetCutoffbound(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_Real cutoffbound)
SCIP_LPSOLSTAT SCIPlpExactGetSolstat(SCIP_LPEXACT *lpexact)
SCIP_RETCODE SCIPlpExactUpdateVarUb(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub)
SCIP_RETCODE SCIPcolExactCalcFarkasRedcostCoef(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_RATIONAL *result, SCIP_RATIONAL **dual, SCIP_Bool usefarkas)
static SCIP_RETCODE colExactDelCoefPos(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, int pos)
SCIP_ROW * SCIProwExactGetRowRhs(SCIP_ROWEXACT *row)
static SCIP_RETCODE lpExactStoreSolVals(SCIP_LPEXACT *lpexact, SCIP_STAT *stat, BMS_BLKMEM *blkmem)
SCIP_Bool SCIPlpExactBoundShiftUseful(SCIP_LPEXACT *lpexact)
void SCIPlpExactAllowExactSolve(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_Bool allowexact)
SCIP_RATIONAL * SCIProwExactGetPseudoActivity(SCIP_ROWEXACT *row, SCIP_STAT *stat)
SCIP_RETCODE SCIPcolExactFree(SCIP_COLEXACT **col, BMS_BLKMEM *blkmem)
void SCIPcolExactPrint(SCIP_COLEXACT *col, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
SCIP_RETCODE SCIPlpExactUpdateVarLbGlobal(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb)
SCIP_RETCODE SCIPcolExactChgObj(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newobj)
SCIP_RETCODE SCIPlpExactUpdateVarLb(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb)
SCIP_RETCODE SCIProwExactGenerateFpRows(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_PROB *prob, SCIP_ROWEXACT *row, SCIP_ROW *rowlhs, SCIP_ROW *rowrhs, SCIP_Bool *onerowrelax, SCIP_Bool *hasfprelax)
SCIP_RETCODE SCIPcolExactChgUb(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newub)
static int colExactSearchCoef(SCIP_COLEXACT *col, const SCIP_ROWEXACT *row)
static SCIP_RETCODE SCIPlpExactProjectShiftFree(SCIP_LPEXACT *lpexact, SCIP_SET *set, BMS_BLKMEM *blkmem)
static SCIP_RETCODE rowExactDelCoefPos(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_LPEXACT *lp, int pos)
SCIP_RETCODE SCIPlpExactCreate(SCIP_LPEXACT **lpexact, BMS_BLKMEM *blkmem, SCIP_LP *fplp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, const char *name)
static SCIP_RATIONAL * getFiniteLooseObjvalExact(SCIP_LPEXACT *lp, SCIP_SET *set, SCIP_PROB *prob)
SCIP_RATIONAL ** SCIProwExactGetVals(SCIP_ROWEXACT *row)
SCIP_RETCODE SCIProwExactAddConstant(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *addval)
static SCIP_Bool lpExactInSync(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_MESSAGEHDLR *msg)
static void lpExactUpdateObjval(SCIP_LPEXACT *lpexact, SCIP_VAR *var, SCIP_RATIONAL *deltavalex, int deltainf, SCIP_Bool local, SCIP_Bool loose, SCIP_Bool global)
static void colExactSortNonLP(SCIP_COLEXACT *col)
SCIP_RATIONAL * SCIPcolExactGetBestBound(SCIP_COLEXACT *col)
static SCIP_RETCODE rowExactUpdateAddLP(SCIP_ROWEXACT *row, SCIP_SET *set)
static SCIP_Bool rowExactInSync(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_MESSAGEHDLR *msg)
void SCIPlpExactGetObjval(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
SCIP_RETCODE SCIPcolExactCreate(SCIP_COLEXACT **col, SCIP_COL *fpcol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, int len, SCIP_ROWEXACT **rows, SCIP_RATIONAL **vals, SCIP_Bool removable)
static SCIP_RETCODE ensureColexsSize(SCIP_LPEXACT *lp, SCIP_SET *set, int num)
SCIP_RETCODE SCIProwExactChgRhs(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *rhs)
SCIP_RATIONAL * SCIPcolExactGetLb(SCIP_COLEXACT *col)
static int colExactSearchCoefPart(SCIP_COLEXACT *col, const SCIP_ROWEXACT *row, int minpos, int maxpos)
SCIP_RETCODE SCIProwExactChgCoef(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col, SCIP_RATIONAL *val)
static SCIP_RETCODE colExactStoreSolVals(SCIP_COLEXACT *colexact, BMS_BLKMEM *blkmem)
static SCIP_RETCODE colExactLink(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lp)
void SCIProwExactSort(SCIP_ROWEXACT *row)
SCIP_RETCODE SCIPlpExactWrite(SCIP_LPEXACT *lpexact, const char *fname)
SCIP_RETCODE SCIPlpExactFree(SCIP_LPEXACT **lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
SCIP_RATIONAL * SCIPcolExactGetObj(SCIP_COLEXACT *col)
SCIP_RETCODE SCIPlpExactFlush(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
static SCIP_RETCODE ensureLpirowexactsSize(SCIP_LPEXACT *lp, SCIP_SET *set, int num)
int SCIProwExactGetNNonz(SCIP_ROWEXACT *row)
static SCIP_RETCODE colExactAddCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lp, SCIP_ROWEXACT *row, SCIP_RATIONAL *val, int linkpos)
void SCIProwExactRecalcPseudoActivity(SCIP_ROWEXACT *rowexact, SCIP_STAT *stat)
SCIP_RETCODE SCIProwExactChgLhs(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *lhs)
SCIP_RETCODE SCIProwExactChgConstant(SCIP_ROWEXACT *row, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *constant)
static void rowExactMoveCoef(SCIP_ROWEXACT *row, int oldpos, int newpos)
void SCIPlpExactForceSafeBound(SCIP_LPEXACT *lpexact, SCIP_SET *set)
SCIP_RETCODE SCIPcolExactChgLb(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newlb)
SCIP_RETCODE SCIPlpExactUpdateVarUbGlobal(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub)
internal methods for exact LP management
interface methods for specific LP solvers
interface methods for specific exact LP solvers
#define BMSduplicateBlockMemoryArray(mem, ptr, source, num)
#define BMSfreeMemory(ptr)
#define BMSfreeBlockMemory(mem, ptr)
#define BMSallocBlockMemory(mem, ptr)
#define BMSreallocMemoryArray(ptr, num)
#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)
#define BMSfreeMemoryNull(ptr)
#define BMSallocBlockMemoryArray(mem, ptr, num)
#define BMSfreeBlockMemoryNull(mem, ptr)
#define BMSfreeBlockMemoryArray(mem, ptr, num)
#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)
#define BMSclearMemoryArray(ptr, num)
struct BMS_BufMem BMS_BUFMEM
struct BMS_BlkMem BMS_BLKMEM
#define BMSfreeMemoryArrayNull(ptr)
#define BMSallocMemory(ptr)
void SCIPmessageFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)
void SCIPmessageVFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr, va_list ap)
void SCIPmessagePrintInfo(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
void SCIPmessagePrintVerbInfo(SCIP_MESSAGEHDLR *messagehdlr, SCIP_VERBLEVEL verblevel, SCIP_VERBLEVEL msgverblevel, const char *formatstr,...)
internal miscellaneous methods
internal methods for storing and manipulating the main problem
public methods for managing constraints
public methods for LP management
public methods for LP management
public methods for message output
public data structures and miscellaneous methods
methods for sorting joint arrays of various types
public methods for branch and bound tree
public methods for problem variables
wrapper for rational number arithmetic
public methods for the LP relaxation, rows and columns
public methods for the LP relaxation, rows and columns
public methods for message handling
internal methods for storing separated exact cuts
SCIP_RETCODE SCIPsetGetCharParam(SCIP_SET *set, const char *name, char *value)
SCIP_RETCODE SCIPsetSetCharParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, char value)
SCIP_Real SCIPsetInfinity(SCIP_SET *set)
SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
internal methods for global SCIP settings
#define SCIPsetFreeBufferArray(set, ptr)
#define SCIPsetDebugMsgPrint
#define SCIPsetAllocBufferArray(set, ptr, num)
void SCIPsolGetValExact(SCIP_RATIONAL *res, SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)
SCIP_Real SCIPsolGetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)
internal methods for storing primal CIP solutions
SCIP_Bool SCIPsolveIsStopped(SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool checknodelimits)
internal methods for main solving loop and node processing
internal methods for problem statistics
#define SCIPstatAdd(stat, set, field, val)
#define SCIPstatIncrement(stat, set, field)
SCIP_RATIONAL * farkascoef
SCIP_RATIONAL * flushedobj
unsigned int lprowssorted
unsigned int nonlprowssorted
SCIP_Longint validredcostlp
SCIP_RATIONAL * flushedub
SCIP_RATIONAL * flushedlb
SCIP_Longint validfarkaslp
SCIP_COLEXACTSOLVALS * storedsolvals
SCIP_Longint validredcostlp
SCIP_Longint validfarkaslp
SCIP_RATIONAL ** divechgsides
SCIP_SIDETYPE * divechgsidetypes
SCIP_Bool divelpwasprimfeas
SCIP_Bool divelpwasdualchecked
SCIP_RATIONAL * glbpseudoobjval
SCIP_PROJSHIFTDATA * projshiftdata
SCIP_RATIONAL * looseobjval
SCIP_Longint divenolddomchgs
SCIP_LPEXACTSOLVALS * storedsolvals
SCIP_ROWEXACT ** divechgrows
SCIP_Bool flushdeletedrows
SCIP_Bool boundshiftuseful
SCIP_Bool flushdeletedcols
SCIP_Bool divelpwasdualfeas
SCIP_Bool allowexactsolve
SCIP_Bool forceexactsolve
SCIP_Bool updateintegrality
SCIP_Bool divelpwasprimchecked
SCIP_RATIONAL * pseudoobjval
SCIP_LPISTATE * divelpistate
SCIP_INTERVAL constantreal
unsigned int lpcolssorted
SCIP_Longint validactivitylp
SCIP_RATIONAL * flushedrhs
SCIP_RATIONAL * dualfarkas
SCIP_RATIONAL * flushedlhs
unsigned int nonlpcolssorted
SCIP_ROWEXACTSOLVALS * storedsolvals
SCIP_RATIONAL * pseudoactivity
SCIP_INTERVAL * valsinterval
SCIP_Longint validpsactivitydomchg
SCIP_Longint validactivitylp
SCIP_Real timefailexlpinf
SCIP_CLOCK * provedfeaslptime
SCIP_Longint nnumtroublelpmsgs
SCIP_Real boundingerrorexlp
SCIP_CLOCK * provedinfeaslptime
SCIP_VARDATAEXACT * exactdata
datastructures for storing cuts in a cut pool
datastructures for managing events
data structures for exact LP management
datastructures for storing and manipulating the main problem
datastructures for global SCIP settings
datastructures for problem statistics
datastructures for problem variables
struct SCIP_EventQueue SCIP_EVENTQUEUE
@ SCIP_LPALGO_DUALSIMPLEX
enum SCIP_LPSolStat SCIP_LPSOLSTAT
@ SCIP_LPSOLSTAT_NOTSOLVED
@ SCIP_LPSOLSTAT_TIMELIMIT
@ SCIP_LPSOLSTAT_UNBOUNDEDRAY
@ SCIP_LPSOLSTAT_INFEASIBLE
@ SCIP_LPSOLSTAT_OBJLIMIT
@ SCIP_LPSOLSTAT_ITERLIMIT
enum SCIP_SideType SCIP_SIDETYPE
struct SCIP_ColExactSolVals SCIP_COLEXACTSOLVALS
struct SCIP_LpExactSolVals SCIP_LPEXACTSOLVALS
struct SCIP_ProjShiftData SCIP_PROJSHIFTDATA
struct SCIP_LpExact SCIP_LPEXACT
struct SCIP_RowExact SCIP_ROWEXACT
struct SCIP_RowExactSolVals SCIP_ROWEXACTSOLVALS
struct SCIP_ColExact SCIP_COLEXACT
enum SCIP_LPParam SCIP_LPPARAM
struct SCIP_LPiState SCIP_LPISTATE
struct SCIP_LPiExact SCIP_LPIEXACT
enum SCIP_VerbLevel SCIP_VERBLEVEL
struct SCIP_Messagehdlr SCIP_MESSAGEHDLR
#define SCIP_DECL_SORTPTRCOMP(x)
struct SCIP_Prob SCIP_PROB
struct SCIP_Rational SCIP_RATIONAL
enum SCIP_Retcode SCIP_RETCODE
struct SCIP_Stat SCIP_STAT
SCIP_RETCODE SCIPvarAddToRow(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val)
SCIP_RETCODE SCIPvarAddToRowExact(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *rowexact, SCIP_RATIONAL *val)
internal methods for problem variables