86 for( i = 0; i < row->
len; ++i )
105 #define debugRowPrint(x,y) 129 for( r = 0; r < col->
len; ++r )
138 #define debugColPrint(x,y) 163 assert(num <= lp->chgcolssize);
186 assert(num <= lp->chgrowssize);
209 assert(num <= lp->lpicolssize);
232 assert(num <= lp->lpirowssize);
255 assert(num <= lp->colssize);
278 assert(num <= lp->lazycolssize);
301 assert(num <= lp->rowssize);
318 if( num > col->
size )
328 assert(num <= col->size);
344 assert(stat !=
NULL);
345 assert(blkmem !=
NULL);
378 assert(blkmem !=
NULL);
382 if( storedsolvals !=
NULL )
435 assert(blkmem !=
NULL);
464 assert(blkmem !=
NULL);
468 if( storedsolvals !=
NULL )
510 assert(blkmem !=
NULL);
549 assert(blkmem !=
NULL);
553 if( storedsolvals !=
NULL )
596 if( num > row->
size )
607 assert(num <= row->size);
623 if( !msgdisp_checkrow )
625 printf(
"LP ROW CHECKING ACTIVATED! THIS IS VERY SLOW!\n");
626 msgdisp_checkrow =
TRUE;
633 for( i = 1; i < row->
nlpcols; ++i )
644 for( i = row->
nlpcols + 1; i < row->len; ++i )
652 #define checkRow(row) 666 assert(cols !=
NULL || row->
len == 0);
670 for( c = row->
len - 1; c >= 0; --c )
672 if( cols[c]->lppos >= 0 )
673 sqrnorm += SQR(row->
vals[c]);
676 assert(ABS(sqrnorm - row->
sqrnorm) < 1e-06 *
MAX(1.0,sqrnorm));
689 assert(cols !=
NULL || row->
len == 0);
693 for( c = row->
len - 1; c >= 0; --c )
695 if( cols[c]->lppos >= 0 )
699 assert(ABS(sumnorm - row->
sumnorm) < 1e-06 *
MAX(1.0,sumnorm));
712 assert(cols !=
NULL || row->
len == 0);
716 for( c = row->
len - 1; c >= 0; --c )
718 if( cols[c]->lppos >= 0 )
722 assert(ABS(objprod - row->
objprod) < 1e-06 *
MAX(1.0,objprod));
725 #define checkRowSqrnorm(row) 726 #define checkRowSumnorm(row) 727 #define checkRowObjprod(row) 749 assert(prob !=
NULL);
757 for( v = 0; v < nvars; ++v )
790 assert(prob !=
NULL);
798 for( v = 0; v < nvars; ++v )
832 assert(prob !=
NULL);
840 for( v = 0; v < nvars; ++v )
870 assert(prob !=
NULL);
892 assert(prob !=
NULL);
909 assert(elem1 !=
NULL);
910 assert(elem2 !=
NULL);
942 for( i = 0; i < col->
nlprows; ++i )
975 for( i = col->
nlprows; i < col->len; ++i )
1006 for( i = 0; i < row->
nlpcols; ++i )
1029 assert(row !=
NULL);
1041 for( i = row->
nlpcols; i < row->len; ++i )
1069 assert(col !=
NULL);
1070 assert(row !=
NULL);
1073 searchidx = row->
index;
1074 while(minpos <= maxpos)
1076 pos = (minpos + maxpos)/2;
1077 assert(0 <= pos && pos < col->len);
1079 assert((pos < col->nlprows) == (col->
rows[pos]->
lppos >= 0 && col->
linkpos[pos] >= 0));
1081 if( searchidx == idx )
1083 else if( searchidx < idx )
1101 assert(col !=
NULL);
1102 assert(row !=
NULL);
1107 if( row->
lppos >= 0 )
1144 assert(row !=
NULL);
1145 assert(col !=
NULL);
1148 searchidx = col->
index;
1149 while(minpos <= maxpos)
1151 pos = (minpos + maxpos)/2;
1152 assert(0 <= pos && pos < row->len);
1154 assert((pos < row->nlpcols) == (row->
cols[pos]->
lppos >= 0 && row->
linkpos[pos] >= 0));
1157 if( searchidx == idx )
1159 else if( searchidx < idx )
1179 assert(row !=
NULL);
1180 assert(col !=
NULL);
1188 if( col->
lppos >= 0 )
1209 assert(-1 <= pos && pos < row->len);
1211 assert(row->
cols[pos] == col);
1215 for( i = 0; i < row->
len; ++i )
1216 assert(row->
cols[i] != col);
1231 assert(col !=
NULL);
1232 assert(0 <= oldpos && oldpos < col->len);
1233 assert(0 <= newpos && newpos < col->len);
1236 if( oldpos == newpos )
1239 col->
rows[newpos] = col->
rows[oldpos];
1240 col->
vals[newpos] = col->
vals[oldpos];
1244 if( col->
linkpos[newpos] >= 0 )
1271 assert(col !=
NULL);
1272 assert(0 <= pos1 && pos1 < col->len);
1273 assert(0 <= pos2 && pos2 < col->len);
1280 tmprow = col->
rows[pos2];
1281 tmpval = col->
vals[pos2];
1282 tmplinkpos = col->
linkpos[pos2];
1288 col->
rows[pos1] = tmprow;
1289 col->
vals[pos1] = tmpval;
1290 col->
linkpos[pos1] = tmplinkpos;
1327 assert(row !=
NULL);
1328 assert(0 <= oldpos && oldpos < row->len);
1329 assert(0 <= newpos && newpos < row->len);
1332 if( oldpos == newpos )
1335 row->
cols[newpos] = row->
cols[oldpos];
1337 row->
vals[newpos] = row->
vals[oldpos];
1341 if( row->
linkpos[newpos] >= 0 )
1369 assert(row !=
NULL);
1370 assert(0 <= pos1 && pos1 < row->len);
1371 assert(0 <= pos2 && pos2 < row->len);
1379 tmpcol = row->
cols[pos2];
1381 tmpval = row->
vals[pos2];
1382 tmplinkpos = row->
linkpos[pos2];
1389 row->
cols[pos1] = tmpcol;
1391 row->
vals[pos1] = tmpval;
1392 row->
linkpos[pos1] = tmplinkpos;
1433 assert(row !=
NULL);
1435 assert(col !=
NULL);
1462 assert(row !=
NULL);
1491 assert(row !=
NULL);
1511 #define ASSERT(x) do { if( !(x) ) abort(); } while( FALSE ) 1513 #define ASSERT(x) assert(x) 1531 if( !msgdisp_checklinks )
1533 printf(
"LP LINK CHECKING ACTIVATED! THIS IS VERY SLOW!\n");
1534 msgdisp_checklinks =
TRUE;
1537 for( i = 0; i < lp->
ncols; ++i )
1540 ASSERT(col !=
NULL);
1546 for( j = 0; j < col->
len; ++j )
1549 ASSERT(row !=
NULL);
1553 ASSERT((j < col->nlprows) == (col->
linkpos[j] >= 0 && row->
lppos >= 0));
1557 for( i = 0; i < lp->
nrows; ++i )
1560 ASSERT(row !=
NULL);
1566 for( j = 0; j < row->
len; ++j )
1569 ASSERT(col !=
NULL);
1573 ASSERT((j < row->nlpcols) == (row->
linkpos[j] >= 0 && col->
lppos >= 0));
1581 #define checkLinks(lp) 1596 assert(row !=
NULL);
1597 assert(col !=
NULL);
1668 assert(blkmem !=
NULL);
1669 assert(col !=
NULL);
1672 assert(row !=
NULL);
1687 if( row->
lppos >= 0 && linkpos >= 0 )
1702 col->
rows[pos] = row;
1703 col->
vals[pos] = val;
1712 if( col->
lppos >= 0 )
1718 if( row->
lppos >= 0 )
1722 assert(0 <= linkpos && linkpos < row->len);
1723 assert(row->
cols[linkpos] == col);
1724 assert(col->
rows[pos] == row);
1731 assert(row->
linkpos[linkpos] == -1);
1739 if( col->
lppos >= 0 )
1745 if( linkpos == row->
nlpcols-1 )
1751 if( row->
lppos >= 0 && linkpos >= 0 )
1761 assert(col->
rows[col->
len-1] == row);
1768 SCIPsetDebugMsg(
set,
"added coefficient %g * <%s> at position %d (%d/%d) to column <%s> (nunlinked=%d)\n",
1785 assert(col !=
NULL);
1787 assert(
set !=
NULL);
1788 assert(0 <= pos && pos < col->len);
1791 assert((pos < col->nlprows) == (col->
linkpos[pos] >= 0 && col->
rows[pos]->
lppos >= 0));
1793 row = col->
rows[pos];
1794 assert((row->
lppos >= 0) == (pos < col->nlprows));
1803 if( pos < col->nlprows )
1829 assert(col !=
NULL);
1831 assert(0 <= pos && pos < col->len);
1849 col->
vals[pos] = val;
1875 assert(row !=
NULL);
1878 assert(
set !=
NULL);
1879 assert(col !=
NULL);
1885 if( col->
lppos >= 0 )
1946 assert(row !=
NULL);
1949 assert(
set !=
NULL);
1950 assert(col !=
NULL);
1962 if( forcenormupdate || col->
lppos >= 0 )
2005 assert(row !=
NULL);
2007 assert(blkmem !=
NULL);
2008 assert(col !=
NULL);
2030 if( col->
lppos >= 0 && linkpos >= 0 )
2045 row->
cols[pos] = col;
2047 row->
vals[pos] = val;
2057 if( row->
lppos >= 0 )
2063 if( col->
lppos >= 0 )
2067 assert(0 <= linkpos && linkpos < col->len);
2068 assert(col->
rows[linkpos] == row);
2069 assert(row->
cols[pos] == col);
2076 assert(col->
linkpos[linkpos] == -1);
2084 if( row->
lppos >= 0 )
2090 if( linkpos == col->
nlprows-1 )
2096 if( col->
lppos >= 0 && linkpos >= 0 )
2109 assert(row->
cols[row->
len-1] == col);
2122 SCIPsetDebugMsg(
set,
"added coefficient %g * <%s> at position %d (%d/%d) to row <%s> (nunlinked=%d)\n",
2145 assert(row !=
NULL);
2146 assert(
set !=
NULL);
2147 assert(0 <= pos && pos < row->len);
2149 assert((pos < row->nlpcols) == (row->
linkpos[pos] >= 0 && row->
cols[pos]->
lppos >= 0));
2151 col = row->
cols[pos];
2152 val = row->
vals[pos];
2153 assert((pos < row->nlpcols) == (col->
lppos >= 0 && row->
linkpos[pos] >= 0));
2160 SCIPerrorMessage(
"cannot delete a coefficient from the locked unmodifiable row <%s>\n", row->
name);
2168 if( pos < row->nlpcols )
2205 assert(row !=
NULL);
2206 assert(0 <= pos && pos < row->len);
2213 SCIPerrorMessage(
"cannot change a coefficient of the locked unmodifiable row <%s>\n", row->
name);
2219 col = row->
cols[pos];
2231 oldval = row->
vals[pos];
2235 row->
vals[pos] = val;
2256 assert(row !=
NULL);
2312 assert(col !=
NULL);
2314 assert(blkmem !=
NULL);
2315 assert(
set !=
NULL);
2323 for( i = col->
nlprows; i < col->len; ++i )
2356 assert(col !=
NULL);
2358 assert(blkmem !=
NULL);
2359 assert(
set !=
NULL);
2365 for( i = 0; i < col->
len; ++i )
2395 assert(row !=
NULL);
2396 assert(blkmem !=
NULL);
2397 assert(
set !=
NULL);
2405 for( i = row->
nlpcols; i < row->len; ++i )
2436 assert(row !=
NULL);
2437 assert(
set !=
NULL);
2443 for( i = 0; i < row->
len; ++i )
2477 assert(success !=
NULL);
2501 return lpSetIntpar(lp, lpparam, (
int)value, success);
2516 assert(success !=
NULL);
2552 assert(lpivalue == value);
2588 assert(lpivalue == value);
2593 #define lpCheckIntpar(lp, lpparam, value) SCIP_OKAY 2594 #define lpCheckBoolpar(lp, lpparam, value) SCIP_OKAY 2595 #define lpCheckRealpar(lp, lpparam, value) SCIP_OKAY 2599 #define lpCutoffDisabled(set) (set->lp_disablecutoff == 1 || (set->nactivepricers > 0 && set->lp_disablecutoff == 2)) 2610 assert(
set !=
NULL);
2653 assert(feastol >= 0.0);
2654 assert(success !=
NULL);
2663 if( lp->
nrows > 0 && feastol < lp->lpifeastol )
2690 assert(dualfeastol >= 0.0);
2691 assert(success !=
NULL);
2700 if( lp->
nrows > 0 && dualfeastol < lp->lpidualfeastol )
2727 assert(barrierconvtol >= 0.0);
2728 assert(success !=
NULL);
2737 if( lp->
nrows > 0 && barrierconvtol < lp->lpibarrierconvtol
2765 assert(success !=
NULL);
2790 assert(success !=
NULL);
2791 assert(0 <= fastmip && fastmip <= 1);
2816 assert(success !=
NULL);
2841 assert(success !=
NULL);
2866 assert(success !=
NULL);
2891 assert(success !=
NULL);
2917 assert(itlim >= -1);
2975 switch( pricingchar )
3040 assert(success !=
NULL);
3068 assert(success !=
NULL);
3076 lptiming = (int) timing;
3099 assert(success !=
NULL);
3103 if( randomseed == 0 )
3129 assert(success !=
NULL);
3162 assert(col !=
NULL);
3163 assert(blkmem !=
NULL);
3164 assert(
set !=
NULL);
3165 assert(stat !=
NULL);
3166 assert(var !=
NULL);
3168 assert(len == 0 || (rows !=
NULL && vals !=
NULL));
3178 for( i = 0; i < len; ++i )
3180 assert(rows[i] !=
NULL);
3182 (*col)->linkpos[i] = -1;
3187 (*col)->rows =
NULL;
3188 (*col)->vals =
NULL;
3189 (*col)->linkpos =
NULL;
3197 (*col)->flushedobj = 0.0;
3198 (*col)->flushedlb = 0.0;
3199 (*col)->flushedub = 0.0;
3200 (*col)->index = stat->
ncolidx;
3204 (*col)->nlprows = 0;
3205 (*col)->nunlinked = len;
3207 (*col)->lpipos = -1;
3208 (*col)->lpdepth = -1;
3209 (*col)->primsol = 0.0;
3212 (*col)->minprimsol = (*col)->ub;
3213 (*col)->maxprimsol = (*col)->lb;
3218 (*col)->sbnode = -1;
3219 (*col)->validredcostlp = -1;
3220 (*col)->validfarkaslp = -1;
3221 (*col)->validsblp = -1;
3222 (*col)->sbitlim = -1;
3223 (*col)->nsbcalls = 0;
3225 (*col)->obsoletenode = -1;
3228 (*col)->lprowssorted =
TRUE;
3229 (*col)->nonlprowssorted = (len <= 1);
3230 (*col)->objchanged =
FALSE;
3231 (*col)->lbchanged =
FALSE;
3232 (*col)->ubchanged =
FALSE;
3233 (*col)->coefchanged =
FALSE;
3235 (*col)->removable = removable;
3236 (*col)->sbdownvalid =
FALSE;
3237 (*col)->sbupvalid =
FALSE;
3240 (*col)->storedsolvals =
NULL;
3254 assert(blkmem !=
NULL);
3255 assert(col !=
NULL);
3256 assert(*col !=
NULL);
3257 assert((*col)->var !=
NULL);
3259 assert(&(*col)->var->data.col == col);
3260 assert((*col)->lppos == -1);
3261 assert((*col)->lpipos == -1);
3284 assert(col !=
NULL);
3293 for( r = 0; r < col->
len; ++r )
3348 assert(col !=
NULL);
3352 assert(row !=
NULL);
3361 assert(0 <= pos && pos < col->len);
3362 assert(col->
rows[pos] == row);
3394 assert(col !=
NULL);
3397 assert(row !=
NULL);
3411 assert(0 <= pos && pos < col->len);
3412 assert(col->
rows[pos] == row);
3445 assert(col !=
NULL);
3448 assert(row !=
NULL);
3465 assert(0 <= pos && pos < col->len);
3466 assert(col->
rows[pos] == row);
3521 assert(
set !=
NULL);
3574 assert(col !=
NULL);
3633 assert(col !=
NULL);
3678 assert(col !=
NULL);
3725 assert(col !=
NULL);
3728 assert(dualsol !=
NULL);
3731 for( i = 0; i < col->
nlprows; ++i )
3734 assert(row !=
NULL);
3735 assert(row->
lppos >= 0);
3736 redcost -= col->
vals[i] * dualsol[row->
lppos];
3741 for( i = col->
nlprows; i < col->len; ++i )
3744 assert(row !=
NULL);
3746 if( row->
lppos >= 0 )
3747 redcost -= col->
vals[i] * dualsol[row->
lppos];
3753 for( i = col->
nlprows; i < col->len; ++i )
3756 assert(row !=
NULL);
3757 assert(row->
lppos == -1);
3776 assert(col !=
NULL);
3781 for( i = 0; i < col->
nlprows; ++i )
3784 assert(row !=
NULL);
3786 assert(row->
lppos >= 0);
3793 for( i = col->
nlprows; i < col->len; ++i )
3796 assert(row !=
NULL);
3799 if( row->
lppos >= 0 )
3806 for( i = col->
nlprows; i < col->len; ++i )
3809 assert(row !=
NULL);
3811 assert(row->
lppos == -1);
3827 assert(col !=
NULL);
3828 assert(stat !=
NULL);
3852 assert(col !=
NULL);
3853 assert(
set !=
NULL);
3854 assert(stat !=
NULL);
3908 assert(col !=
NULL);
3911 assert(dualfarkas !=
NULL);
3914 for( i = 0; i < col->
nlprows; ++i )
3917 assert(row !=
NULL);
3918 assert(row->
lppos >= 0);
3919 farkas += col->
vals[i] * dualfarkas[row->
lppos];
3924 for( i = col->
nlprows; i < col->len; ++i )
3927 assert(row !=
NULL);
3929 if( row->
lppos >= 0 )
3930 farkas += col->
vals[i] * dualfarkas[row->
lppos];
3936 for( i = col->
nlprows; i < col->len; ++i )
3939 assert(row !=
NULL);
3940 assert(row->
lppos == -1);
3959 assert(col !=
NULL);
3964 for( i = 0; i < col->
nlprows; ++i )
3967 assert(row !=
NULL);
3969 assert(row->
lppos >= 0);
3976 for( i = col->
nlprows; i < col->len; ++i )
3979 assert(row !=
NULL);
3982 if( row->
lppos >= 0 )
3989 for( i = col->
nlprows; i < col->len; ++i )
3992 assert(row !=
NULL);
3994 assert(row->
lppos == -1);
4010 assert(col !=
NULL);
4011 assert(stat !=
NULL);
4038 assert(col !=
NULL);
4042 if( farkascoef > 0.0 )
4043 return col->
ub * farkascoef;
4045 return col->
lb * farkascoef;
4094 assert(col !=
NULL);
4100 assert(col->
lpipos >= 0);
4101 assert(col->
lppos >= 0);
4102 assert(
set !=
NULL);
4103 assert(stat !=
NULL);
4128 SCIPstatAdd(stat,
set, nrootsblpiterations, iter);
4140 assert(col !=
NULL);
4146 assert(col->
lpipos >= 0);
4147 assert(col->
lppos >= 0);
4148 assert(
set !=
NULL);
4149 assert(stat !=
NULL);
4185 assert(col !=
NULL);
4192 assert(col->
lpipos >= 0);
4193 assert(col->
lppos >= 0);
4194 assert(
set !=
NULL);
4195 assert(stat !=
NULL);
4208 assert(lperror !=
NULL);
4237 SCIPsetDebugMsg(
set,
"performing strong branching on variable <%s>(%g) with %d iterations\n",
4295 if( iter/2 >= itlim )
4303 SCIPstatAdd(stat,
set, nrootsblpiterations, iter);
4318 if( downvalid !=
NULL )
4320 if( upvalid !=
NULL )
4358 assert(cols !=
NULL);
4359 assert(
set !=
NULL);
4360 assert(stat !=
NULL);
4367 assert(down !=
NULL);
4369 assert(lperror !=
NULL);
4390 for( j = 0; j < ncols; ++j )
4402 assert(col->
lpipos >= 0);
4403 assert(col->
lppos >= 0);
4423 if( downvalid !=
NULL )
4425 if( upvalid !=
NULL )
4433 lpipos[nsubcols] = col->
lpipos;
4434 primsols[nsubcols] = col->
primsol;
4436 subidx[nsubcols] = j;
4437 subcols[nsubcols++] = col;
4445 if( downvalid !=
NULL )
4447 if( upvalid !=
NULL )
4452 SCIPsetDebugMsg(
set,
"performing strong branching on %d variables with %d iterations\n", ncols, itlim);
4465 for( j = 0; j < nsubcols; ++j )
4483 up[idx] = col->
sbup;
4484 if( downvalid !=
NULL )
4486 if( upvalid !=
NULL )
4499 for( j = 0; j < nsubcols; ++j )
4516 up[idx] = col->
sbup;
4517 if( downvalid !=
NULL )
4519 if( upvalid !=
NULL )
4532 if( iter/2 >= itlim )
4539 SCIPstatAdd(stat,
set, nrootstrongbranchs, ncols);
4540 SCIPstatAdd(stat,
set, nrootsblpiterations, iter);
4575 assert(col !=
NULL);
4581 if( downvalid !=
NULL )
4583 if( upvalid !=
NULL )
4585 if( solval !=
NULL )
4587 if( lpobjval !=
NULL )
4600 assert(col !=
NULL);
4601 assert(stat !=
NULL);
4612 assert(col !=
NULL);
4613 assert(stat !=
NULL);
4614 assert(stat->
nnodes > 0);
4634 assert(row !=
NULL);
4635 assert(
set !=
NULL);
4653 for( i = 0; i < row->
nlpcols; ++i )
4668 for( i = row->
nlpcols; i < row->len; ++i )
4695 assert(row !=
NULL);
4696 assert(
set !=
NULL);
4707 for( i = 0; i < row->
len; ++i )
4710 assert(col !=
NULL);
4758 assert(mindelta <= 0.0);
4759 assert(maxdelta >= 0.0);
4761 sval = val * scalar;
4762 downval = floor(sval);
4767 if( intval !=
NULL )
4773 if( intval !=
NULL )
4815 assert(row !=
NULL);
4819 assert(-1.0 < minrounddelta && minrounddelta <= 0.0);
4820 assert(0.0 <= maxrounddelta && maxrounddelta < 1.0);
4822 SCIPsetDebugMsg(
set,
"scale row <%s> with %g (tolerance=[%g,%g])\n", row->
name, scaleval, minrounddelta, maxrounddelta);
4826 mindeltainf =
FALSE;
4827 maxdeltainf =
FALSE;
4837 while( c < row->len )
4856 newval = val * scaleval;
4858 &&
isIntegralScalar(val, scaleval, minrounddelta, maxrounddelta, &intval) )
4862 if( intval < newval )
4864 mindelta += (intval - newval)*ub;
4865 maxdelta += (intval - newval)*lb;
4871 mindelta += (intval - newval)*lb;
4872 maxdelta += (intval - newval)*ub;
4894 if( oldlen != row->
len )
4896 assert(row->
len == oldlen - 1);
4918 newval = (row->
lhs - row->
constant) * scaleval + mindelta;
4930 newval = (row->
rhs - row->
constant) * scaleval + maxdelta;
4976 assert(row !=
NULL);
4977 assert(blkmem !=
NULL);
4978 assert(stat !=
NULL);
4980 assert(len == 0 || (cols !=
NULL && vals !=
NULL));
4989 (*row)->integral =
TRUE;
5000 for( i = 0; i < len; ++i )
5002 assert(cols[i] !=
NULL);
5006 (*row)->cols_index[i] = cols[i]->
index;
5007 (*row)->linkpos[i] = -1;
5015 (*row)->integral =
FALSE;
5021 (*row)->cols =
NULL;
5022 (*row)->cols_index =
NULL;
5023 (*row)->vals =
NULL;
5024 (*row)->linkpos =
NULL;
5028 (*row)->constant = 0.0;
5033 (*row)->sqrnorm = 0.0;
5034 (*row)->sumnorm = 0.0;
5035 (*row)->objprod = 0.0;
5036 (*row)->maxval = 0.0;
5038 (*row)->dualsol = 0.0;
5040 (*row)->dualfarkas = 0.0;
5044 (*row)->origin = origin;
5045 (*row)->eventfilter =
NULL;
5046 (*row)->index = stat->
nrowidx;
5050 (*row)->nlpcols = 0;
5051 (*row)->nunlinked = len;
5054 (*row)->lpipos = -1;
5055 (*row)->lpdepth = -1;
5056 (*row)->minidx = INT_MAX;
5057 (*row)->maxidx = INT_MIN;
5058 (*row)->nummaxval = 0;
5059 (*row)->numminval = 0;
5060 (*row)->validactivitylp = -1;
5061 (*row)->validpsactivitydomchg = -1;
5062 (*row)->validactivitybdsdomchg = -1;
5063 (*row)->nlpsaftercreation = 0L;
5064 (*row)->activeinlpcounter = 0L;
5067 (*row)->obsoletenode = -1;
5069 (*row)->lpcolssorted =
TRUE;
5070 (*row)->nonlpcolssorted = (len <= 1);
5071 (*row)->delaysort =
FALSE;
5072 (*row)->validminmaxidx =
FALSE;
5073 (*row)->lhschanged =
FALSE;
5074 (*row)->rhschanged =
FALSE;
5075 (*row)->coefchanged =
FALSE;
5076 (*row)->local = local;
5077 (*row)->modifiable = modifiable;
5079 (*row)->origintype = origintype;
5080 (*row)->removable = removable;
5081 (*row)->inglobalcutpool =
FALSE;
5082 (*row)->storedsolvals =
NULL;
5104 assert(blkmem !=
NULL);
5105 assert(row !=
NULL);
5106 assert(*row !=
NULL);
5107 assert((*row)->nuses == 0);
5108 assert((*row)->lppos == -1);
5109 assert((*row)->eventfilter !=
NULL);
5137 assert(row !=
NULL);
5151 for( i = 0; i < row->
len; ++i )
5173 assert(row !=
NULL);
5174 assert(row->
nuses >= 0);
5175 assert(row->
nlocks <= (
unsigned int)(row->
nuses));
5189 assert(blkmem !=
NULL);
5190 assert(row !=
NULL);
5191 assert(*row !=
NULL);
5192 assert((*row)->nuses >= 1);
5193 assert((*row)->nlocks < (
unsigned int)((*row)->nuses));
5195 SCIPsetDebugMsg(
set,
"release row <%s> with nuses=%d and nlocks=%u\n", (*row)->name, (*row)->nuses, (*row)->nlocks);
5197 if( (*row)->nuses == 0 )
5212 assert(row !=
NULL);
5227 assert(row !=
NULL);
5271 assert(row !=
NULL);
5275 assert(col !=
NULL);
5285 assert(0 <= pos && pos < row->len);
5286 assert(row->
cols[pos] == col);
5318 assert(row !=
NULL);
5322 assert(col !=
NULL);
5336 assert(0 <= pos && pos < row->len);
5337 assert(row->
cols[pos] == col);
5370 assert(row !=
NULL);
5373 assert(col !=
NULL);
5390 assert(0 <= pos && pos < row->len);
5391 assert(row->
cols[pos] == col);
5425 assert(row !=
NULL);
5426 assert(row->
lhs <= row->
rhs);
5428 assert(stat !=
NULL);
5480 assert(row !=
NULL);
5481 assert(row->
lhs <= row->
rhs);
5483 assert(stat !=
NULL);
5505 assert(row !=
NULL);
5537 assert(row !=
NULL);
5565 assert(row !=
NULL);
5608 assert(row !=
NULL);
5612 assert(maxdnom >= 1);
5613 assert(mindelta < 0.0);
5614 assert(maxdelta > 0.0);
5615 assert(success !=
NULL);
5620 if( intscalar !=
NULL )
5626 for( c = 0; c < row->
len; ++c )
5630 assert(col !=
NULL);
5638 if( val < mindelta || val > maxdelta )
5641 minval =
MIN(minval, absval);
5647 if( intscalar !=
NULL )
5650 SCIPsetDebugMsg(
set,
" -> all values are zero (inside tolerances)\n");
5654 assert(minval >
MIN(-mindelta, maxdelta));
5661 scaleval = 1.0/minval;
5662 scalable = (scaleval <= maxscale);
5663 for( c = 0; c < row->
len && scalable; ++c )
5672 while( scaleval <= maxscale
5679 scaleval *= scalars[s];
5686 scalable = (scaleval <= maxscale);
5687 SCIPsetDebugMsg(
set,
" -> val=%g, scaleval=%g, val*scaleval=%g, scalable=%u\n", val, scaleval, val*scaleval, scalable);
5694 assert(scaleval <= maxscale);
5695 if( intscalar !=
NULL )
5696 *intscalar = scaleval;
5698 SCIPsetDebugMsg(
set,
" -> integrality can be achieved by scaling with %g (minval=%g)\n", scaleval, minval);
5705 twomult = (twomultval <= maxscale);
5706 for( c = 0; c < row->
len && twomult; ++c )
5715 while( twomultval <= maxscale
5716 && (absval * twomultval < 0.5 || !
isIntegralScalar(val, twomultval, mindelta, maxdelta,
NULL)) )
5722 twomultval *= scalars[s];
5729 twomult = (twomultval <= maxscale);
5730 SCIPsetDebugMsg(
set,
" -> val=%g, twomult=%g, val*twomult=%g, twomultable=%u\n",
5731 val, twomultval, val*twomultval, twomult);
5736 assert(twomultval <= maxscale);
5737 if( intscalar !=
NULL )
5738 *intscalar = twomultval;
5740 SCIPsetDebugMsg(
set,
" -> integrality can be achieved by scaling with %g (power of 2)\n", twomultval);
5750 rational = (maxdnom > 1);
5753 for( c = 0; c < row->
len && rational; ++c )
5758 rational =
SCIPrealToRational(val, mindelta, maxdelta, maxdnom, &nominator, &denominator);
5759 if( rational && nominator != 0 )
5761 assert(denominator > 0);
5762 gcd = ABS(nominator);
5765 SCIPsetDebugMsg(
set,
" -> first rational: val: %g == %" SCIP_LONGINT_FORMAT
"/%" SCIP_LONGINT_FORMAT
", gcd=%" SCIP_LONGINT_FORMAT
", scm=%" SCIP_LONGINT_FORMAT
", rational=%u\n",
5766 val, nominator, denominator, gcd, scm, rational);
5773 for( ++c; c < row->
len && rational; ++c )
5778 rational =
SCIPrealToRational(val, mindelta, maxdelta, maxdnom, &nominator, &denominator);
5779 if( rational && nominator != 0 )
5781 assert(denominator > 0);
5785 SCIPsetDebugMsg(
set,
" -> next rational : val: %g == %" SCIP_LONGINT_FORMAT
"/%" SCIP_LONGINT_FORMAT
", gcd=%" SCIP_LONGINT_FORMAT
", scm=%" SCIP_LONGINT_FORMAT
", rational=%u\n",
5786 val, nominator, denominator, gcd, scm, rational);
5795 if( intscalar !=
NULL )
5798 SCIPsetDebugMsg(
set,
" -> integrality can be achieved by scaling with %g (rational:%" SCIP_LONGINT_FORMAT
"/%" SCIP_LONGINT_FORMAT
")\n",
5803 assert(!(*success));
5804 SCIPsetDebugMsg(
set,
" -> rationalizing failed: gcd=%" SCIP_LONGINT_FORMAT
", scm=%" SCIP_LONGINT_FORMAT
", lastval=%g\n", gcd, scm, val);
5828 assert(success !=
NULL);
5832 &intscalar, success) );
5837 SCIP_CALL(
rowScale(row, blkmem,
set, eventqueue, stat, lp, intscalar, usecontvars, mindelta, maxdelta) );
5850 assert(row !=
NULL);
5858 #ifdef SCIP_MORE_DEBUG 5864 for( c = 1; c < row->
nlpcols; ++c )
5866 for( c = row->
nlpcols + 1; c < row->len; ++c )
5884 assert(row !=
NULL);
5909 assert(cols !=
NULL);
5910 assert(cols_index !=
NULL);
5911 assert(vals !=
NULL);
5916 assert(row->
linkpos[0] == -1);
5918 for( s = 1; s < row->
len; ++s )
5921 assert(row->
linkpos[s] == -1);
5923 if( cols[s] == cols[t] )
5940 cols_index[t] = cols_index[s];
5949 assert(s == row->
len);
5950 assert(t <= row->len);
5966 for( i = 0; i < row->
len; ++i )
5970 for( j = i+1; j < row->
len; ++j )
5971 assert(row->
cols[i] != row->
cols[j]);
5982 assert(row !=
NULL);
5994 assert(row !=
NULL);
6010 assert(row !=
NULL);
6011 assert(stat !=
NULL);
6014 for( c = 0; c < row->
nlpcols; ++c )
6017 assert(col !=
NULL);
6019 assert(col->
lppos >= 0);
6026 for( c = row->
nlpcols; c < row->len; ++c )
6029 assert(col !=
NULL);
6032 if( col->
lppos >= 0 )
6039 for( c = row->
nlpcols; c < row->len; ++c )
6042 assert(col !=
NULL);
6044 assert(col->
lppos == -1);
6064 assert(row !=
NULL);
6065 assert(stat !=
NULL);
6077 activity =
MAX(activity, -inf);
6078 activity =
MIN(activity, +inf);
6093 assert(row !=
NULL);
6097 return MIN(row->
rhs - activity, activity - row->
lhs);
6115 assert( row !=
NULL );
6116 assert( stat !=
NULL );
6119 for (c = 0; c < row->
nlpcols; ++c)
6122 assert( col !=
NULL );
6123 assert( col->
lppos >= 0 );
6125 assert( row->
linkpos[c] >= 0 );
6131 for (c = row->
nlpcols; c < row->len; ++c)
6134 assert( col !=
NULL );
6136 if ( col->
lppos >= 0 )
6146 for (c = row->
nlpcols; c < row->len; ++c)
6149 assert( col !=
NULL );
6150 assert( col->
lppos == -1 );
6151 assert( row->
linkpos[c] >= 0 );
6156 activity =
MAX(activity, -inf);
6157 activity =
MIN(activity, +inf);
6159 return MIN(row->
rhs - activity, activity - row->
lhs);
6177 assert( row !=
NULL );
6178 assert( stat !=
NULL );
6181 for (c = 0; c < row->
nlpcols; ++c)
6184 assert( col !=
NULL );
6185 assert( col->
lppos >= 0 );
6187 assert( row->
linkpos[c] >= 0 );
6193 for (c = row->
nlpcols; c < row->len; ++c)
6196 assert( col !=
NULL );
6198 if ( col->
lppos >= 0 )
6208 for (c = row->
nlpcols; c < row->len; ++c)
6211 assert( col !=
NULL );
6212 assert( col->
lppos == -1 );
6213 assert( row->
linkpos[c] >= 0 );
6218 activity =
MAX(activity, -inf);
6219 activity =
MIN(activity, +inf);
6221 return MIN(row->
rhs - activity, activity - row->
lhs);
6233 assert(row !=
NULL);
6234 assert(stat !=
NULL);
6237 for( i = 0; i < row->
len; ++i )
6240 assert(col !=
NULL);
6241 assert((i < row->nlpcols) == (row->
linkpos[i] >= 0 && col->
lppos >= 0));
6261 assert(row !=
NULL);
6262 assert(stat !=
NULL);
6273 activity =
MAX(activity, -inf);
6274 activity =
MIN(activity, +inf);
6288 assert(row !=
NULL);
6292 return MIN(row->
rhs - pseudoactivity, pseudoactivity - row->
lhs);
6309 assert(row !=
NULL);
6312 for( i = 0; i < row->
len; ++i )
6315 assert(col !=
NULL);
6316 assert((i < row->nlpcols) == (row->
linkpos[i] >= 0 && col->
lppos >= 0));
6321 solval = (row->
vals[i] >= 0.0 ? col->
lb : col->
ub);
6323 solval = (row->
vals[i] >= 0.0 ? col->
ub : col->
lb);
6325 solval = (col->
lb + col->
ub)/2.0;
6327 activity += row->
vals[i] * solval;
6331 activity =
MAX(activity, -inf);
6332 activity =
MIN(activity, +inf);
6347 assert(row !=
NULL);
6351 return MIN(row->
rhs - activity, activity - row->
lhs);
6368 assert(row !=
NULL);
6370 assert(stat !=
NULL);
6373 mininfinite =
FALSE;
6374 maxinfinite =
FALSE;
6377 for( i = 0; i < row->
len && (!mininfinite || !maxinfinite); ++i )
6380 assert(col !=
NULL);
6381 assert((i < row->nlpcols) == (row->
linkpos[i] >= 0 && col->
lppos >= 0));
6422 assert(row !=
NULL);
6423 assert(stat !=
NULL);
6443 assert(row !=
NULL);
6444 assert(stat !=
NULL);
6464 assert(row !=
NULL);
6494 assert(row !=
NULL);
6499 assert(row->
maxval >= 0.0 || row->
len == 0);
6510 assert(row !=
NULL);
6515 assert(row->
minval >= 0.0 || row->
len == 0);
6526 assert(row !=
NULL);
6530 assert(row->
maxidx >= 0 || row->
len == 0);
6542 assert(row !=
NULL);
6546 assert(row->
minidx >= 0 || row->
len == 0);
6564 assert(
set !=
NULL);
6566 switch( set->sepa_efficacynorm )
6578 norm = (row->
len == 0 ? 0.0 : 1.0);
6581 SCIPerrorMessage(
"invalid efficacy norm parameter '%c'\n", set->sepa_efficacynorm);
6587 norm =
MAX(norm, eps);
6590 return -feasibility / norm;
6621 assert(
set !=
NULL);
6623 switch( set->sepa_efficacynorm )
6635 norm = (row->
len == 0 ? 0.0 : 1.0);
6638 SCIPerrorMessage(
"invalid efficacy norm parameter '%c'\n", set->sepa_efficacynorm);
6644 norm =
MAX(norm, eps);
6647 return -feasibility / norm;
6679 assert(
set !=
NULL);
6681 switch( set->sepa_efficacynorm )
6693 norm = (row->
len == 0 ? 0.0 : 1.0);
6696 SCIPerrorMessage(
"invalid efficacy norm parameter '%c'\n", set->sepa_efficacynorm);
6702 norm =
MAX(norm, eps);
6705 return -feasibility / norm;
6719 assert(
set !=
NULL);
6721 switch( set->sepa_efficacynorm )
6733 norm = (row->
len == 0 ? 0.0 : 1.0);
6736 SCIPerrorMessage(
"invalid efficacy norm parameter '%c'\n", set->sepa_efficacynorm);
6742 norm =
MAX(norm, eps);
6745 return -feasibility / norm;
6764 assert(row1 !=
NULL);
6765 assert(row2 !=
NULL);
6819 while( i1 < row1->nlpcols && i2 < row2->len )
6821 assert(row1->
cols[i1] != row2->
cols[i2]);
6830 assert(i1 == row1->
nlpcols || i2 == row2->
len);
6834 while( i1 < row1->len && i2 < row2->nlpcols )
6836 assert(row1->
cols[i1] != row2->
cols[i2]);
6845 assert(i1 == row1->
len || i2 == row2->
nlpcols);
6866 while( i1 >= 0 && i2 >= 0 )
6868 assert(row1->
cols[i1]->
index == row1colsidx[i1]);
6869 assert(row2->
cols[i2]->
index == row2colsidx[i2]);
6870 assert((row1->
cols[i1] == row2->
cols[i2]) == (row1colsidx[i1] == row2colsidx[i2]));
6871 if( row1colsidx[i1] < row2colsidx[i2] )
6873 else if( row1colsidx[i1] > row2colsidx[i2] )
6877 scalarprod += row1->
vals[i1] * row2->
vals[i2];
6905 while( ilp1 < row1->nlpcols && inlp1 < row1->len && ilp2 < row2->nlpcols && inlp2 < row2->len )
6907 assert(row1->
cols[ilp1]->
index == row1colsidx[ilp1]);
6908 assert(row1->
cols[inlp1]->
index == row1colsidx[inlp1]);
6909 assert(row2->
cols[ilp2]->
index == row2colsidx[ilp2]);
6910 assert(row2->
cols[inlp2]->
index == row2colsidx[inlp2]);
6911 assert((row1->
cols[ilp1] == row2->
cols[ilp2]) == (row1colsidx[ilp1] == row2colsidx[ilp2]));
6912 assert((row1->
cols[ilp1] == row2->
cols[inlp2]) == (row1colsidx[ilp1] == row2colsidx[inlp2]));
6913 assert((row1->
cols[inlp1] == row2->
cols[ilp2]) == (row1colsidx[inlp1] == row2colsidx[ilp2]));
6914 assert((row1->
cols[inlp1] == row2->
cols[inlp2]) == (row1colsidx[inlp1] == row2colsidx[inlp2]));
6917 if( row1colsidx[ilp1] == row2colsidx[ilp2] )
6919 scalarprod += row1->
vals[ilp1] * row2->
vals[ilp2];
6924 else if( row1colsidx[ilp1] == row2colsidx[inlp2] )
6926 scalarprod += row1->
vals[ilp1] * row2->
vals[inlp2];
6931 else if( row1colsidx[inlp1] == row2colsidx[ilp2] )
6933 scalarprod += row1->
vals[inlp1] * row2->
vals[ilp2];
6938 else if( row1colsidx[inlp1] == row2colsidx[inlp2] && row1->
cols[inlp1]->
lppos >= 0 )
6940 scalarprod += row1->
vals[inlp1] * row2->
vals[inlp2];
6945 else if( row1colsidx[ilp1] < row1colsidx[inlp1] )
6947 if( row2colsidx[ilp2] < row2colsidx[inlp2] )
6949 if( row1colsidx[ilp1] < row2colsidx[ilp2] )
6956 if( row1colsidx[ilp1] < row2colsidx[inlp2] )
6964 if( row2colsidx[ilp2] < row2colsidx[inlp2] )
6966 if( row1colsidx[inlp1] < row2colsidx[ilp2] )
6973 if( row1colsidx[inlp1] < row2colsidx[inlp2] )
6985 if( ilp1 != row1->
nlpcols && inlp1 != row1->
len )
6990 assert(ilp2 == row2->
nlpcols || inlp2 == row2->
len);
7013 assert(inlp1 == row1->
len);
7023 while( i1 < end1 && ilp2 < row2->nlpcols && inlp2 < row2->len )
7025 assert(row1->
cols[i1]->
index == row1colsidx[i1]);
7026 assert(row2->
cols[ilp2]->
index == row2colsidx[ilp2]);
7027 assert(row2->
cols[inlp2]->
index == row2colsidx[inlp2]);
7028 assert((row1->
cols[i1] == row2->
cols[ilp2]) == (row1colsidx[i1] == row2colsidx[ilp2]));
7029 assert((row1->
cols[i1] == row2->
cols[inlp2]) == (row1colsidx[i1] == row2colsidx[inlp2]));
7032 if( row1colsidx[i1] == row2colsidx[ilp2] )
7034 scalarprod += row1->
vals[i1] * row2->
vals[ilp2];
7039 else if( row1colsidx[i1] == row2colsidx[inlp2] && (lpcols || row1->
cols[i1]->
lppos >= 0) )
7041 scalarprod += row1->
vals[i1] * row2->
vals[inlp2];
7046 else if( row2colsidx[ilp2] < row2colsidx[inlp2] )
7048 if( row1colsidx[i1] < row2colsidx[ilp2] )
7055 if( row1colsidx[i1] < row2colsidx[inlp2] )
7076 assert(inlp2 == row2->
len);
7083 while( i1 < end1 && i2 < end2 )
7085 assert(row1->
cols[i1]->
index == row1colsidx[i1]);
7086 assert(row2->
cols[i2]->
index == row2colsidx[i2]);
7087 assert((row1->
cols[i1] == row2->
cols[i2]) == (row1colsidx[i1] == row2colsidx[i2]));
7090 if( row1colsidx[i1] == row2colsidx[i2] && (lpcols || row1->
cols[i1]->
lppos >= 0) )
7092 scalarprod += row1->
vals[i1] * row2->
vals[i2];
7097 else if( row1colsidx[i1] < row2colsidx[i2] )
7121 assert(row1 !=
NULL);
7122 assert(row2 !=
NULL);
7176 while( i1 < row1->nlpcols && i2 < row2->len )
7178 assert(row1->
cols[i1] != row2->
cols[i2]);
7187 assert(i1 == row1->
nlpcols || i2 == row2->
len);
7191 while( i1 < row1->len && i2 < row2->nlpcols )
7193 assert(row1->
cols[i1] != row2->
cols[i2]);
7202 assert(i1 == row1->
len || i2 == row2->
nlpcols);
7223 while( i1 >= 0 && i2 >= 0 )
7225 assert(row1->
cols[i1]->
index == row1colsidx[i1]);
7226 assert(row2->
cols[i2]->
index == row2colsidx[i2]);
7227 assert((row1->
cols[i1] == row2->
cols[i2]) == (row1colsidx[i1] == row2colsidx[i2]));
7228 if( row1colsidx[i1] < row2colsidx[i2] )
7230 else if( row1colsidx[i1] > row2colsidx[i2] )
7262 while( ilp1 < row1->nlpcols && inlp1 < row1->len && ilp2 < row2->nlpcols && inlp2 < row2->len )
7264 assert(row1->
cols[ilp1]->
index == row1colsidx[ilp1]);
7265 assert(row1->
cols[inlp1]->
index == row1colsidx[inlp1]);
7266 assert(row2->
cols[ilp2]->
index == row2colsidx[ilp2]);
7267 assert(row2->
cols[inlp2]->
index == row2colsidx[inlp2]);
7268 assert((row1->
cols[ilp1] == row2->
cols[ilp2]) == (row1colsidx[ilp1] == row2colsidx[ilp2]));
7269 assert((row1->
cols[ilp1] == row2->
cols[inlp2]) == (row1colsidx[ilp1] == row2colsidx[inlp2]));
7270 assert((row1->
cols[inlp1] == row2->
cols[ilp2]) == (row1colsidx[inlp1] == row2colsidx[ilp2]));
7271 assert((row1->
cols[inlp1] == row2->
cols[inlp2]) == (row1colsidx[inlp1] == row2colsidx[inlp2]));
7274 if( row1colsidx[ilp1] == row2colsidx[ilp2] )
7281 else if( row1colsidx[ilp1] == row2colsidx[inlp2] )
7288 else if( row1colsidx[inlp1] == row2colsidx[ilp2] )
7295 else if( row1colsidx[inlp1] == row2colsidx[inlp2] && row1->
cols[inlp1]->
lppos >= 0 )
7302 else if( row1colsidx[ilp1] < row1colsidx[inlp1] )
7304 if( row2colsidx[ilp2] < row2colsidx[inlp2] )
7306 if( row1colsidx[ilp1] < row2colsidx[ilp2] )
7313 if( row1colsidx[ilp1] < row2colsidx[inlp2] )
7321 if( row2colsidx[ilp2] < row2colsidx[inlp2] )
7323 if( row1colsidx[inlp1] < row2colsidx[ilp2] )
7330 if( row1colsidx[inlp1] < row2colsidx[inlp2] )
7342 if( ilp1 != row1->
nlpcols && inlp1 != row1->
len )
7347 assert(ilp2 == row2->
nlpcols || inlp2 == row2->
len);
7370 assert(inlp1 == row1->
len);
7380 while( i1 < end1 && ilp2 < row2->nlpcols && inlp2 < row2->len )
7382 assert(row1->
cols[i1]->
index == row1colsidx[i1]);
7383 assert(row2->
cols[ilp2]->
index == row2colsidx[ilp2]);
7384 assert(row2->
cols[inlp2]->
index == row2colsidx[inlp2]);
7385 assert((row1->
cols[i1] == row2->
cols[ilp2]) == (row1colsidx[i1] == row2colsidx[ilp2]));
7386 assert((row1->
cols[i1] == row2->
cols[inlp2]) == (row1colsidx[i1] == row2colsidx[inlp2]));
7389 if( row1colsidx[i1] == row2colsidx[ilp2] )
7396 else if( row1colsidx[i1] == row2colsidx[inlp2] && (lpcols || row1->
cols[i1]->
lppos >= 0) )
7403 else if( row2colsidx[ilp2] < row2colsidx[inlp2] )
7405 if( row1colsidx[i1] < row2colsidx[ilp2] )
7412 if( row1colsidx[i1] < row2colsidx[inlp2] )
7433 assert(inlp2 == row2->
len);
7440 while( i1 < end1 && i2 < end2 )
7442 assert(row1->
cols[i1]->
index == row1colsidx[i1]);
7443 assert(row2->
cols[i2]->
index == row2colsidx[i2]);
7444 assert((row1->
cols[i1] == row2->
cols[i2]) == (row1colsidx[i1] == row2colsidx[i2]));
7447 if( row1colsidx[i1] == row2colsidx[i2] && (lpcols || row1->
cols[i1]->
lppos >= 0) )
7454 else if( row1colsidx[i1] < row2colsidx[i2] )
7482 if( scalarprod == 0.0 )
7496 for( i = 0; i < row1->
len; ++i )
7506 for( i = 0; i < row2->
len; ++i )
7521 SCIPerrorMessage(
"invalid orthogonality function parameter '%c'\n", orthofunc);
7554 assert(row !=
NULL);
7571 parallelism =
MIN(parallelism, 1.0);
7572 parallelism =
MAX(parallelism, 0.0);
7588 assert(row !=
NULL);
7594 eventtype, row->
name, (
void*)eventhdlr, (
void*)eventdata);
7612 assert(row !=
NULL);
7615 SCIPsetDebugMsg(
set,
"drop event of row <%s> with handler %p and data %p\n", row->
name, (
void*)eventhdlr, (
void*)eventdata);
7628 assert(row !=
NULL);
7629 assert(stat !=
NULL);
7630 assert(stat->
nnodes > 0);
7646 assert(col !=
NULL);
7725 assert(
set !=
NULL);
7726 assert(col !=
NULL);
7776 assert(blkmem !=
NULL);
7777 assert(
set !=
NULL);
7794 for( c = lp->
nlpicols; c < lp->ncols; ++c )
7795 naddcoefs += lp->
cols[c]->
len;
7796 assert(naddcols > 0);
7809 for( pos = 0, c = lp->
nlpicols; c < lp->ncols; ++pos, ++c )
7812 assert(col !=
NULL);
7816 assert(col->
lppos == c);
7817 assert(nnonz + col->
nlprows <= naddcoefs);
7844 obj[pos] = col->
obj;
7856 for( i = 0; i < col->
nlprows; ++i )
7862 assert(lpipos < lp->nrows);
7863 assert(nnonz < naddcoefs);
7864 ind[nnonz] = lpipos;
7865 val[nnonz] = col->
vals[i];
7870 for( i = col->
nlprows; i < col->len; ++i )
7912 assert(row !=
NULL);
7998 assert(blkmem !=
NULL);
8014 for( r = lp->
nlpirows; r < lp->nrows; ++r )
8015 naddcoefs += lp->
rows[r]->
len;
8016 assert(naddrows > 0);
8028 for( pos = 0, r = lp->
nlpirows; r < lp->nrows; ++pos, ++r )
8031 assert(row !=
NULL);
8032 assert(row->
lppos == r);
8033 assert(nnonz + row->
nlpcols <= naddcoefs);
8063 name[pos] = row->
name;
8068 SCIPsetDebugMsg(
set,
"flushing added row (SCIP_LPI): %+g <=", lhs[pos]);
8069 for( i = 0; i < row->
nlpcols; ++i )
8075 assert(lpipos < lp->ncols);
8076 assert(nnonz < naddcoefs);
8078 ind[nnonz] = lpipos;
8079 val[nnonz] = row->
vals[i];
8085 for( i = row->
nlpcols; i < row->len; ++i )
8158 for( i = 0; i < lp->
nchgcols; ++i )
8161 assert(col !=
NULL);
8193 assert(nobjchg < lp->ncols);
8194 objind[nobjchg] = col->
lpipos;
8195 obj[nobjchg] = newobj;
8212 assert(nbdchg < lp->ncols);
8213 bdind[nbdchg] = col->
lpipos;
8230 SCIPsetDebugMsg(
set,
"flushing objective changes: change %d objective values of %d changed columns\n", nobjchg, lp->
nchgcols);
8244 SCIPsetDebugMsg(
set,
"flushing bound changes: change %d bounds of %d changed columns\n", nbdchg, lp->
nchgcols);
8300 for( i = 0; i < lp->
nchgrows; ++i )
8303 assert(row !=
NULL);
8328 assert(nchg < lp->nrows);
8385 for( i = 0; i < lp->
ncols; ++i )
8424 assert(blkmem !=
NULL);
8426 SCIPsetDebugMsg(
set,
"flushing LP changes: old (%d cols, %d rows), nchgcols=%d, nchgrows=%d, firstchgcol=%d, firstchgrow=%d, new (%d cols, %d rows), flushed=%u\n",
8461 assert(ncols == lp->
ncols);
8462 assert(nrows == lp->
nrows);
8513 for( i = 0; i < lp->
nchgcols; ++i )
8518 assert(col !=
NULL);
8552 for( i = 0; i < lp->
nchgrows; ++i )
8557 assert(row !=
NULL);
8607 assert(col !=
NULL);
8608 assert(col->
lppos >= 0);
8611 for( i = 0; i < col->
len; ++i )
8617 assert(row !=
NULL);
8618 assert(row->
linkpos[pos] == i);
8619 assert(row->
cols[pos] == col);
8620 assert(row->
nlpcols <= pos && pos < row->len);
8646 assert(row !=
NULL);
8647 assert(row->
lppos >= 0);
8650 for( i = 0; i < row->
len; ++i )
8656 assert(col !=
NULL);
8657 assert(col->
linkpos[pos] == i);
8658 assert(col->
rows[pos] == row);
8659 assert(col->
nlprows <= pos && pos < col->len);
8682 assert(col !=
NULL);
8683 assert(col->
lppos == -1);
8686 for( i = 0; i < col->
len; ++i )
8692 assert(row !=
NULL);
8693 assert(row->
linkpos[pos] == i);
8694 assert(row->
cols[pos] == col);
8695 assert(0 <= pos && pos < row->nlpcols);
8720 assert(row !=
NULL);
8721 assert(row->
lppos == -1);
8724 for( i = 0; i < row->
len; ++i )
8730 assert(col !=
NULL);
8731 assert(0 <= pos && pos < col->nlprows);
8732 assert(col->
linkpos[pos] == i);
8733 assert(col->
rows[pos] == row);
8757 assert(initsize > 0);
8780 assert(minsize > 0);
8782 if( minsize <= lp->divechgsidessize )
8811 #define DIVESTACKINITSIZE 100 8825 assert(
set !=
NULL);
8826 assert(stat !=
NULL);
8827 assert(name !=
NULL);
8834 (*lp)->lpicols =
NULL;
8835 (*lp)->lpirows =
NULL;
8836 (*lp)->chgcols =
NULL;
8837 (*lp)->chgrows =
NULL;
8839 (*lp)->lazycols =
NULL;
8842 (*lp)->lpobjval = 0.0;
8843 (*lp)->glbpseudoobjval = 0.0;
8844 (*lp)->relglbpseudoobjval = 0.0;
8845 (*lp)->glbpseudoobjvalid =
TRUE;
8846 (*lp)->glbpseudoobjvalinf = 0;
8847 (*lp)->pseudoobjval = 0.0;
8848 (*lp)->relpseudoobjval = 0.0;
8849 (*lp)->pseudoobjvalid =
TRUE;
8850 (*lp)->pseudoobjvalinf = 0;
8851 (*lp)->looseobjval = 0.0;
8852 (*lp)->rellooseobjval = 0.0;
8853 (*lp)->looseobjvalid =
TRUE;
8854 (*lp)->looseobjvalinf = 0;
8855 (*lp)->nloosevars = 0;
8859 (*lp)->objsqrnorm = 0.0;
8860 (*lp)->objsumnorm = 0.0;
8861 (*lp)->lpicolssize = 0;
8862 (*lp)->nlpicols = 0;
8863 (*lp)->lpirowssize = 0;
8864 (*lp)->nlpirows = 0;
8865 (*lp)->lpifirstchgcol = 0;
8866 (*lp)->lpifirstchgrow = 0;
8867 (*lp)->colssize = 0;
8869 (*lp)->lazycolssize = 0;
8870 (*lp)->nlazycols = 0;
8871 (*lp)->rowssize = 0;
8873 (*lp)->chgcolssize = 0;
8874 (*lp)->nchgcols = 0;
8875 (*lp)->chgrowssize = 0;
8876 (*lp)->nchgrows = 0;
8877 (*lp)->firstnewcol = 0;
8878 (*lp)->firstnewrow = 0;
8879 (*lp)->nremovablecols = 0;
8880 (*lp)->nremovablerows = 0;
8881 (*lp)->validsollp = stat->
lpcount;
8882 (*lp)->validfarkaslp = -1;
8883 (*lp)->objsqrnormunreliable =
FALSE;
8884 (*lp)->flushdeletedcols =
FALSE;
8885 (*lp)->flushaddedcols =
FALSE;
8886 (*lp)->flushdeletedrows =
FALSE;
8887 (*lp)->flushaddedrows =
FALSE;
8888 (*lp)->updateintegrality =
TRUE;
8889 (*lp)->flushed =
TRUE;
8890 (*lp)->solved =
TRUE;
8891 (*lp)->primalfeasible =
TRUE;
8892 (*lp)->primalchecked =
TRUE;
8893 (*lp)->dualfeasible =
TRUE;
8894 (*lp)->dualchecked =
TRUE;
8895 (*lp)->solisbasic =
FALSE;
8896 (*lp)->rootlpisrelax =
TRUE;
8897 (*lp)->isrelax =
TRUE;
8898 (*lp)->installing =
FALSE;
8899 (*lp)->strongbranching =
FALSE;
8900 (*lp)->strongbranchprobing =
FALSE;
8901 (*lp)->probing =
FALSE;
8902 (*lp)->diving =
FALSE;
8903 (*lp)->divingobjchg =
FALSE;
8904 (*lp)->divinglazyapplied =
FALSE;
8905 (*lp)->divelpistate =
NULL;
8906 (*lp)->divelpwasprimfeas =
TRUE;
8907 (*lp)->divelpwasprimchecked =
TRUE;
8908 (*lp)->divelpwasdualfeas =
TRUE;
8909 (*lp)->divelpwasdualchecked =
TRUE;
8910 (*lp)->divechgsides =
NULL;
8911 (*lp)->divechgsidetypes =
NULL;
8912 (*lp)->divechgrows =
NULL;
8913 (*lp)->ndivechgsides = 0;
8914 (*lp)->divechgsidessize = 0;
8915 (*lp)->ndivingrows = 0;
8916 (*lp)->divinglpiitlim = INT_MAX;
8917 (*lp)->resolvelperror =
FALSE;
8918 (*lp)->adjustlpval =
FALSE;
8923 (*lp)->lpifromscratch =
FALSE;
8924 (*lp)->lpifastmip =
set->lp_fastmip;
8925 (*lp)->lpiscaling =
set->lp_scaling;
8926 (*lp)->lpipresolving =
set->lp_presolving;
8927 (*lp)->lpilpinfo =
set->disp_lpinfo;
8928 (*lp)->lpirowrepswitch =
set->lp_rowrepswitch;
8929 (*lp)->lpisolutionpolishing = (
set->lp_solutionpolishing > 0);
8930 (*lp)->lpiconditionlimit =
set->lp_conditionlimit;
8931 (*lp)->lpiitlim = INT_MAX;
8934 (*lp)->lpithreads =
set->lp_threads;
8935 (*lp)->lpitiming = (int) set->time_clocktype;
8936 (*lp)->lpirandomseed = set->random_randomseed;
8937 (*lp)->storedsolvals =
NULL;
8947 "LP Solver <%s>: upper objective limit cannot be set -- can lead to unnecessary simplex iterations\n",
8951 (*lp)->lpihasfeastol = success;
8955 "LP Solver <%s>: primal feasibility tolerance cannot be set -- tolerance of SCIP and LP solver may differ\n",
8959 (*lp)->lpihasdualfeastol = success;
8963 "LP Solver <%s>: dual feasibility tolerance cannot be set -- tolerance of SCIP and LP solver may differ\n",
8967 (*lp)->lpihasbarrierconvtol = success;
8971 "LP Solver <%s>: barrier convergence tolerance cannot be set -- tolerance of SCIP and LP solver may differ\n",
8976 (*lp)->lpihasfastmip = success;
8980 "LP Solver <%s>: fastmip setting not available -- SCIP parameter has no effect\n",
8984 (*lp)->lpihasscaling = success;
8988 "LP Solver <%s>: scaling not available -- SCIP parameter has no effect\n",
8992 (*lp)->lpihaspresolving = success;
8996 "LP Solver <%s>: presolving not available -- SCIP parameter has no effect\n",
9003 "LP Solver <%s>: clock type cannot be set\n",
9010 "LP Solver <%s>: iteration limit cannot be set -- can lead to unnecessary simplex iterations\n",
9017 "LP Solver <%s>: pricing strategy cannot be set -- SCIP parameter has no effect\n",
9024 "LP Solver <%s>: lpinfo setting not available -- SCIP parameter has no effect\n",
9028 (*lp)->lpihasrowrep = success;
9032 "LP Solver <%s>: row representation of the basis not available -- SCIP parameter lp/rowrepswitch has no effect\n",
9036 (*lp)->lpihaspolishing = success;
9040 "LP Solver <%s>: solution polishing not available -- SCIP parameter lp/solutionpolishing has no effect\n",
9047 "LP Solver <%s>: condition number limit for the basis not available -- SCIP parameter lp/conditionlimit has no effect\n",
9054 "LP Solver <%s>: number of threads settings not available -- SCIP parameter has no effect\n",
9058 if( (*lp)->lpirandomseed != 0 )
9064 "LP Solver <%s>: random seed parameter not available -- SCIP parameter has no effect\n",
9084 assert(*lp !=
NULL);
9091 for( i = 0; i < (*lp)->nlpirows; ++i )
9096 if( (*lp)->lpi !=
NULL )
9126 assert(stat !=
NULL);
9157 assert(col !=
NULL);
9159 assert(col->
lppos == -1);
9170 for( i = 0; i < col->
len; ++i )
9218 assert(row !=
NULL);
9220 assert(row->
lppos == -1);
9230 for( i = 0; i < row->
len; ++i )
9297 for( c = 0; c < lp->
ncols; ++c )
9310 for( c = 0; c < lp->
ncols; ++c )
9327 #define checkLazyColArray(lp, set) 9343 assert(0 <= newncols);
9344 assert(newncols <= lp->ncols);
9346 if( newncols < lp->ncols )
9350 for( c = lp->
ncols-1; c >= newncols; --c )
9353 assert(col !=
NULL);
9358 assert(col->
lppos == c);
9375 assert(lp->
ncols == newncols);
9380 while( c < lp->nlazycols )
9416 assert(0 <= newnrows && newnrows <= lp->nrows);
9419 if( newnrows < lp->nrows )
9421 for( r = lp->
nrows-1; r >= newnrows; --r )
9424 assert(row !=
NULL);
9426 assert(row->
lppos == r);
9455 assert(lp->
nrows == newnrows);
9523 assert(basisind !=
NULL);
9561 assert(0 <= r && r < lp->nrows);
9562 assert(coef !=
NULL);
9587 assert(0 <= c && c < lp->nrows);
9588 assert(coef !=
NULL);
9610 assert(0 <= r && r < lp->nrows);
9611 assert(coef !=
NULL);
9634 assert(0 <= c && c < lp->ncols);
9635 assert(coef !=
NULL);
9663 assert(prob !=
NULL);
9664 assert(weights !=
NULL);
9665 assert(sumcoef !=
NULL);
9666 assert(sumlhs !=
NULL);
9667 assert(sumrhs !=
NULL);
9675 lhsinfinite =
FALSE;
9676 rhsinfinite =
FALSE;
9677 for( r = 0; r < lp->
nrows; ++r )
9682 assert(row !=
NULL);
9688 for( i = 0; i < row->
len; ++i )
9696 assert(0 <= idx && idx < prob->nvars);
9701 if( weights[r] > 0.0 )
9705 (*sumlhs) += weights[r] * (row->
lhs - row->
constant);
9708 (*sumrhs) += weights[r] * (row->
rhs - row->
constant);
9714 (*sumlhs) += weights[r] * (row->
rhs - row->
constant);
9717 (*sumrhs) += weights[r] * (row->
lhs - row->
constant);
9740 assert(blkmem !=
NULL);
9741 assert(lpistate !=
NULL);
9768 assert(blkmem !=
NULL);
9778 if( lpistate ==
NULL )
9805 if( *lpistate !=
NULL )
9823 assert(blkmem !=
NULL);
9824 assert(lpinorms !=
NULL);
9845 assert(blkmem !=
NULL);
9849 if( lpinorms !=
NULL )
9935 return "primal simplex";
9937 return "dual simplex";
9941 return "barrier/crossover";
9966 assert(
set !=
NULL);
9967 assert(stat !=
NULL);
9968 assert(lperror !=
NULL);
9970 SCIPsetDebugMsg(
set,
"solving LP %" SCIP_LONGINT_FORMAT
" (%d cols, %d rows) with primal simplex (diving=%d, nprimallps=%" SCIP_LONGINT_FORMAT
", ndivinglps=%" SCIP_LONGINT_FORMAT
")\n",
9981 SCIPsetDebugMsg(
"wrote LP to file <%s> (primal simplex, uobjlim=%.15g, feastol=%.15g/%.15g, fromscratch=%d, fastmip=%d, scaling=%d, presolving=%d)\n",
10008 SCIPsetDebugMsg(
set,
"(node %" SCIP_LONGINT_FORMAT
") primal simplex solving error in LP %" SCIP_LONGINT_FORMAT
"\n", stat->
nnodes, stat->
nlps);
10034 if( iterations > 0 )
10039 SCIPstatAdd( stat,
set, nlpiterations, iterations );
10044 SCIPstatAdd(stat,
set, nprimalresolvelpiterations, iterations);
10051 SCIPstatAdd(stat,
set, nsbdivinglpiterations, iterations);
10057 SCIPstatAdd(stat,
set, ndivinglpiterations, iterations);
10063 SCIPstatAdd(stat,
set, nprimallpiterations, iterations);
10071 SCIPstatAdd(stat,
set, primalzeroittime, timedelta);
10074 if ( keepsol && !(*lperror) )
10084 SCIPsetDebugMsg(
set,
"solved LP %" SCIP_LONGINT_FORMAT
" with primal simplex (diving=%d, nprimallps=%" SCIP_LONGINT_FORMAT
", ndivinglps=%" SCIP_LONGINT_FORMAT
")\n",
10105 assert(lp !=
NULL);
10107 assert(
set !=
NULL);
10108 assert(stat !=
NULL);
10109 assert(lperror !=
NULL);
10111 SCIPsetDebugMsg(
set,
"solving LP %" SCIP_LONGINT_FORMAT
" (%d cols, %d rows) with dual simplex (diving=%d, nduallps=%" SCIP_LONGINT_FORMAT
", ndivinglps=%" SCIP_LONGINT_FORMAT
")\n",
10122 SCIPsetDebugMsg(
"wrote LP to file <%s> (dual simplex, uobjlim=%.15g, feastol=%.15g/%.15g, fromscratch=%d, fastmip=%d, scaling=%d, presolving=%d)\n",
10149 SCIPsetDebugMsg(
set,
"(node %" SCIP_LONGINT_FORMAT
") dual simplex solving error in LP %" SCIP_LONGINT_FORMAT
"\n", stat->
nnodes, stat->
nlps);
10175 if( iterations > 0 )
10180 SCIPstatAdd(stat,
set, nlpiterations, iterations);
10185 SCIPstatAdd(stat,
set, ndualresolvelpiterations, iterations);
10192 SCIPstatAdd(stat,
set, nsbdivinglpiterations, iterations);
10198 SCIPstatAdd(stat,
set, ndivinglpiterations, iterations);
10204 SCIPstatAdd(stat,
set, nduallpiterations, iterations);
10212 SCIPstatAdd(stat,
set, dualzeroittime, timedelta);
10215 if( keepsol && !(*lperror) )
10225 SCIPsetDebugMsg(
set,
"solved LP %" SCIP_LONGINT_FORMAT
" with dual simplex (diving=%d, nduallps=%" SCIP_LONGINT_FORMAT
", ndivinglps=%" SCIP_LONGINT_FORMAT
")\n",
10277 int totalIterations;
10282 assert(lp !=
NULL);
10284 assert(
set !=
NULL);
10285 assert(stat !=
NULL);
10286 assert(lperror !=
NULL);
10288 SCIPsetDebugMsg(
set,
"solving LP %" SCIP_LONGINT_FORMAT
" (%d cols, %d rows) with lex dual simplex (diving=%d, nduallps=%" SCIP_LONGINT_FORMAT
", ndivinglps=%" SCIP_LONGINT_FORMAT
")\n",
10314 SCIPsetDebugMsg(
set,
"(node %" SCIP_LONGINT_FORMAT
") dual simplex solving error in LP %" SCIP_LONGINT_FORMAT
"\n", stat->
nnodes, stat->
nlps);
10321 totalIterations = iterations;
10339 if( iterations > 0 )
10343 SCIPstatAdd(stat,
set, nlpiterations, iterations);
10348 SCIPstatAdd(stat,
set, ndualresolvelpiterations, iterations);
10355 SCIPstatAdd(stat,
set, nsbdivinglpiterations, iterations);
10361 SCIPstatAdd(stat,
set, ndivinglpiterations, iterations);
10367 SCIPstatAdd(stat,
set, nduallpiterations, iterations);
10375 SCIPstatAdd(stat,
set, dualzeroittime, timedelta);
10412 chooseBasic =
set->lp_lexdualbasic;
10458 for( c = 0; c < lp->
nlpicols; ++c )
10469 for( r = 0; r < lp->
nlpirows; ++r )
10478 #ifdef DEBUG_LEXDUAL 10484 assert(primsol ==
NULL);
10487 assert(primsol !=
NULL);
10491 for( j = 0; j < lp->
nlpicols; ++j )
10527 assert(primsol ==
NULL);
10547 assert(primsol ==
NULL);
10558 for( c = 0; c < lp->
nlpicols; ++c )
10566 if( pos == -1 && c > oldpos )
10579 if( pos == -1 && c > oldpos )
10584 newlb[cntcol] = oldlb[c];
10585 newub[cntcol] = oldlb[c];
10586 indcol[cntcol++] = c;
10601 newlb[cntcol] = oldlb[c];
10602 newub[cntcol] = oldlb[c];
10608 newlb[cntcol] = oldub[c];
10609 newub[cntcol] = oldub[c];
10614 newlb[cntcol] = 0.0;
10615 newub[cntcol] = 0.0;
10618 indcol[cntcol++] = c;
10627 for( r = 0; r < lp->
nlpirows; ++r )
10642 newlhs[cntrow] = oldlhs[r];
10643 newrhs[cntrow] = oldlhs[r];
10648 newlhs[cntrow] = oldrhs[r];
10649 newrhs[cntrow] = oldrhs[r];
10651 indrow[cntrow++] = r;
10658 if( nDualDeg > 0 && pos >= 0 )
10660 assert(0 <= pos && pos < lp->nlpicols && pos > oldpos);
10685 SCIPsetDebugMsg(
set,
"(node %" SCIP_LONGINT_FORMAT
") in lex-dual: primal simplex solving error in LP %" SCIP_LONGINT_FORMAT
"\n", stat->
nnodes, stat->
nlps);
10692 lexIterations += iterations;
10694 #ifdef DEBUG_LEXDUAL 10695 if( iterations > 0 )
10701 assert(primsol ==
NULL);
10704 assert(primsol !=
NULL);
10707 for( j = 0; j < lp->
nlpicols; ++j )
10744 SCIPsetDebugMsg(
set,
"%f (%d) %c%c%c ", primsol[j], j, cstart, type, cend);
10752 assert(primsol ==
NULL);
10758 if( iterations > 0 )
10763 while( pos >= 0 && nDualDeg > 0 && (set->lp_lexdualmaxrounds == -1 || rounds < set->lp_lexdualmaxrounds) );
10775 SCIPsetDebugMsg(
set,
"(node %" SCIP_LONGINT_FORMAT
") dual simplex solving error in LP %" SCIP_LONGINT_FORMAT
"\n", stat->
nnodes, stat->
nlps);
10783 lexIterations += iterations;
10791 if( lexIterations > 0 )
10793 SCIPstatAdd(stat,
set, nlpiterations, lexIterations);
10797 SCIPstatAdd(stat,
set, nlexdualresolvelpiterations, lexIterations);
10800 SCIPstatAdd(stat,
set, nlexduallpiterations, lexIterations);
10802 totalIterations += lexIterations;
10839 SCIPsetDebugMsg(
set,
"solved LP %" SCIP_LONGINT_FORMAT
" with lex dual simplex (diving=%d, nduallps=%" SCIP_LONGINT_FORMAT
", ndivinglps=%" SCIP_LONGINT_FORMAT
")\n",
10849 if( keepsol && !(*lperror) )
10877 assert(lp !=
NULL);
10879 assert(
set !=
NULL);
10880 assert(stat !=
NULL);
10881 assert(lperror !=
NULL);
10883 SCIPsetDebugMsg(
set,
"solving LP %" SCIP_LONGINT_FORMAT
" (%d cols, %d rows) with barrier%s (diving=%d, nbarrierlps=%" SCIP_LONGINT_FORMAT
", ndivinglps=%" SCIP_LONGINT_FORMAT
")\n",
10895 SCIPsetDebugMsg(
"wrote LP to file <%s> (barrier, uobjlim=%.15g, feastol=%.15g/%.15g, convtol=%.15g, fromscratch=%d, fastmip=%d, scaling=%d, presolving=%d)\n",
10922 SCIPsetDebugMsg(
set,
"(node %" SCIP_LONGINT_FORMAT
") barrier solving error in LP %" SCIP_LONGINT_FORMAT
"\n", stat->
nnodes, stat->
nlps);
10948 if( iterations > 0 )
10953 SCIPstatAdd(stat,
set, nlpiterations, iterations);
10960 SCIPstatAdd(stat,
set, nsbdivinglpiterations, iterations);
10966 SCIPstatAdd(stat,
set, ndivinglpiterations, iterations);
10972 SCIPstatAdd(stat,
set, nbarrierlpiterations, iterations);
10980 SCIPstatAdd(stat,
set, barrierzeroittime, timedelta);
10983 if( keepsol && !(*lperror) )
10993 SCIPsetDebugMsg(
set,
"solved LP %" SCIP_LONGINT_FORMAT
" with barrier%s (diving=%d, nduallps=%" SCIP_LONGINT_FORMAT
", nbarrierlps=%" SCIP_LONGINT_FORMAT
")\n",
11015 assert(lp !=
NULL);
11017 assert(lperror !=
NULL);
11021 if( set->istimelimitfinite )
11025 if( lptimelimit > 0.0 )
11028 if( lptimelimit <= 0.0 || !success )
11030 SCIPsetDebugMsg(
set,
"time limit of %f seconds could not be set\n", lptimelimit);
11031 *lperror = ((lptimelimit > 0.0) ?
TRUE :
FALSE);
11046 if( set->lp_lexdualalgo && (!set->lp_lexdualrootonly || stat->
maxdepth == 0) && (!set->lp_lexdualstalling || lp->
installing) )
11083 #define MAXNUMTROUBLELPMSGS 10 11097 const char* formatstr,
11120 if( verblevel > set->disp_verblevel )
11126 "(node %" SCIP_LONGINT_FORMAT
") numerical troubles in LP %" SCIP_LONGINT_FORMAT
" -- ",
11130 va_start(ap, formatstr);
11137 SCIPmessagePrintInfo(messagehdlr,
" -- further messages will be suppressed (use display/verblevel=5 to see all)");
11144 #define FEASTOLTIGHTFAC 0.001 11173 assert(lp !=
NULL);
11175 assert(
set !=
NULL);
11176 assert(stat !=
NULL);
11177 assert(lperror !=
NULL);
11178 assert(timelimit !=
NULL);
11189 SCIPerrorMessage(
"cannot solve LP when loose variable with infinite best bound is present\n");
11197 itlimishard = (itlim == harditlim);
11202 usepolishing =
TRUE;
11209 usepolishing =
FALSE;
11244 else if( !set->lp_checkstability )
11272 else if( !set->lp_checkstability )
11299 else if( !set->lp_checkstability )
11325 lpalgoName(lpalgo), !set->lp_presolving ?
"with" :
"without");
11331 else if( !set->lp_checkstability )
11350 if( ((simplex && (!tightprimfeastol || !tightdualfeastol)) || (!tightprimfeastol && !tightdualfeastol)) &&
11354 if( !tightprimfeastol )
11360 if( !tightdualfeastol )
11366 if( !simplex && !tightprimfeastol && !tightdualfeastol )
11371 if( success || success2 || success3 )
11379 else if( !set->lp_checkstability )
11390 if( !tightprimfeastol )
11394 if( !tightdualfeastol )
11398 if( !simplex && !tightprimfeastol && !tightdualfeastol )
11410 if( !fromscratch && simplex )
11421 else if( !set->lp_checkstability )
11443 else if( !set->lp_checkstability )
11458 lpalgoName(lpalgo), (set->lp_scaling == 0) ?
"with" :
"without");
11464 else if( !set->lp_checkstability )
11484 lpalgoName(lpalgo), !set->lp_presolving ?
"with" :
"without");
11490 else if( !set->lp_checkstability )
11506 if( !tightprimfeastol || !tightdualfeastol )
11509 if( !tightprimfeastol )
11515 if( !tightdualfeastol )
11520 if( success || success2 )
11528 else if( !set->lp_checkstability )
11539 if( !tightprimfeastol )
11543 if( !tightdualfeastol )
11566 assert(lp !=
NULL);
11567 assert(
set !=
NULL);
11616 assert(lp !=
NULL);
11618 assert(
set !=
NULL);
11619 assert(stat !=
NULL);
11620 assert(lperror !=
NULL);
11624 solvedprimal =
FALSE;
11625 solveddual =
FALSE;
11629 itlim = ( resolve ? resolveitlim : harditlim );
11633 SCIP_CALL(
lpSolveStable(lp,
set, messagehdlr, stat, prob, lpalgo, itlim, harditlim, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch,
11634 keepsol, &timelimit, lperror) );
11730 "(node %" SCIP_LONGINT_FORMAT
") solution status of LP %" SCIP_LONGINT_FORMAT
" could not be proven (internal status:%d) -- solve again with %s\n",
11739 "(node %" SCIP_LONGINT_FORMAT
") solution status of LP %" SCIP_LONGINT_FORMAT
" could not be proven (internal status:%d) -- solve again with %s\n",
11745 SCIPerrorMessage(
"(node %" SCIP_LONGINT_FORMAT
") error or unknown return status of %s in LP %" SCIP_LONGINT_FORMAT
" (internal status: %d)\n",
11753 SCIPsetDebugMsg(
set,
"solving LP with %s returned solstat=%d (internal status: %d, primalfeasible=%u, dualfeasible=%u)\n",
11785 assert(lp !=
NULL);
11786 assert(
set !=
NULL);
11787 assert(lperror !=
NULL);
11795 algo = resolve ?
set->lp_resolvealgorithm :
set->lp_initalgorithm;
11805 needdualray, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, keepsol, lperror) );
11811 needdualray, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, keepsol, lperror) );
11818 needdualray, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, keepsol, lperror) );
11824 needdualray, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, keepsol, lperror) );
11830 needdualray, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, keepsol, lperror) );
11836 needdualray, resolve, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, keepsol, lperror) );
11840 SCIPerrorMessage(
"invalid parameter setting <%c> for LP algorithm\n", algo);
11843 assert(!(*lperror) || !lp->
solved);
11871 #define checkLazyBounds(lp, set) 11894 SCIPsetDebugMsg(
set,
"mark all lazy columns as changed in order to reload bounds (diving=%u, applied=%u)\n",
11947 if( (set->lp_resolveiterfac == -1) || stat->
nlps - stat->
nrootlps < 5 )
11953 return (
int)
MIN(itlim,
MAX(set->lp_resolveitermin, \
11983 assert(lp !=
NULL);
11984 assert(prob !=
NULL);
11986 assert(lperror !=
NULL);
11988 SCIPsetDebugMsg(
set,
"solving LP: %d rows, %d cols, primalfeasible=%u, dualfeasible=%u, solved=%u, diving=%u, probing=%u, cutoffbnd=%g\n",
11995 needprimalray =
TRUE;
11997 || (
set->conf_enable &&
set->conf_useinflp !=
'o'));
12000 harditlim = (int)
MIN(itlim, INT_MAX);
12001 resolveitlim = ( limitresolveiters ?
lpGetResolveItlim(
set, stat, harditlim) : harditlim );
12002 assert(harditlim == -1 || (resolveitlim <= harditlim));
12039 tightprimfeastol =
FALSE;
12040 tightdualfeastol =
FALSE;
12041 fromscratch =
FALSE;
12042 primalfeasible =
FALSE;
12043 dualfeasible =
FALSE;
12044 wasfromscratch = (stat->
nlps == 0);
12048 oldnlps = stat->
nlps;
12049 SCIP_CALL(
lpFlushAndSolve(lp, blkmem,
set, messagehdlr, stat, prob, eventqueue, resolveitlim, harditlim, needprimalray,
12050 needdualray, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, keepsol, lperror) );
12052 assert(!(*lperror) || !lp->
solved);
12066 if( set->lp_checkprimfeas )
12068 primalfeaspointer = &primalfeasible;
12074 primalfeasible =
TRUE;
12075 primalfeaspointer =
NULL;
12078 if( set->lp_checkdualfeas )
12080 dualfeaspointer = &dualfeasible;
12086 dualfeasible =
TRUE;
12087 dualfeaspointer =
NULL;
12096 if( primalfeasible && dualfeasible && aging && !lp->
diving && stat->
nlps > oldnlps )
12100 if( stat->
nlps % ((set->lp_rowagelimit+1)/2 + 1) == 0 )
12113 if( !primalfeasible || !dualfeasible )
12117 if( (fastmip > 0) && simplex )
12121 "(node %" SCIP_LONGINT_FORMAT
") solution of LP %" SCIP_LONGINT_FORMAT
" not optimal (pfeas=%d, dfeas=%d) -- solving again without FASTMIP\n",
12122 stat->
nnodes, stat->
nlps, primalfeasible, dualfeasible);
12126 else if( (!primalfeasible && !tightprimfeastol) || (!dualfeasible && !tightdualfeastol) )
12132 "(node %" SCIP_LONGINT_FORMAT
") solution of LP %" SCIP_LONGINT_FORMAT
" not optimal (pfeas=%d, dfeas=%d) -- solving again with tighter feasibility tolerance\n",
12133 stat->
nnodes, stat->
nlps, primalfeasible, dualfeasible);
12134 tightprimfeastol = tightprimfeastol || !primalfeasible;
12135 tightdualfeastol = tightdualfeastol || !dualfeasible;
12138 else if( !fromscratch && !wasfromscratch && simplex )
12142 "(node %" SCIP_LONGINT_FORMAT
") solution of LP %" SCIP_LONGINT_FORMAT
" not optimal (pfeas=%d, dfeas=%d) -- solving again from scratch\n",
12143 stat->
nnodes, stat->
nlps, primalfeasible, dualfeasible);
12144 fromscratch =
TRUE;
12155 SCIPsetDebugMsg(
set,
" -> LP objective value: %g + %g = %g (solstat=%d, cutoff=%g)\n",
12174 "(node %" SCIP_LONGINT_FORMAT
") infeasibility of LP %" SCIP_LONGINT_FORMAT
" could not be proven by dual ray\n", stat->
nnodes, stat->
nlps);
12183 if( set->lp_checkprimfeas )
12195 primalfeasible =
TRUE;
12196 rayfeasible =
TRUE;
12203 SCIPsetDebugMsg(
set,
" -> LP has unbounded primal ray (primalfeas=%u, rayfeas=%u)\n",
12204 primalfeasible, rayfeasible);
12206 if( !primalfeasible || !rayfeasible )
12210 if( (fastmip > 0) && simplex )
12214 "(node %" SCIP_LONGINT_FORMAT
") solution of unbounded LP %" SCIP_LONGINT_FORMAT
" not optimal (pfeas=%d, rfeas=%d) -- solving again without FASTMIP\n",
12215 stat->
nnodes, stat->
nlps, primalfeasible, rayfeasible);
12219 else if( !tightprimfeastol )
12225 "(node %" SCIP_LONGINT_FORMAT
") solution of unbounded LP %" SCIP_LONGINT_FORMAT
" not optimal (pfeas=%d, rfeas=%d) -- solving again with tighter primal feasibility tolerance\n",
12226 stat->
nnodes, stat->
nlps, primalfeasible, rayfeasible);
12227 tightprimfeastol =
TRUE;
12230 else if( !fromscratch && simplex )
12234 "(node %" SCIP_LONGINT_FORMAT
") solution of unbounded LP %" SCIP_LONGINT_FORMAT
" not optimal (pfeas=%d, rfeas=%d) -- solving again from scratch\n",
12235 stat->
nnodes, stat->
nlps, primalfeasible, rayfeasible);
12236 fromscratch =
TRUE;
12269 assert(lpi !=
NULL);
12281 char tmppricingchar;
12287 fromscratch =
FALSE;
12299 FALSE,
FALSE,
TRUE, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, keepsol, lperror) );
12314 SCIPsetDebugMsg(
set,
" ---> new objval = %f (solstat: %d, 1 add. step)\n", objval, solstat);
12326 assert(!(*lperror));
12329 FALSE,
FALSE,
TRUE, fastmip, tightprimfeastol, tightdualfeastol, fromscratch, keepsol, lperror) );
12337 SCIPsetDebugMsg(
set,
" ---> new objval = %f (solstat: %d, without fastmip)\n", objval, solstat);
12343 SCIPsetDebugMsg(
set,
"unresolved error while resolving LP in order to exceed the objlimit\n");
12359 if( set->lp_checkprimfeas )
12361 primalfeaspointer = &primalfeasible;
12367 primalfeasible =
TRUE;
12368 primalfeaspointer =
NULL;
12371 if( set->lp_checkdualfeas )
12373 dualfeaspointer = &dualfeasible;
12379 dualfeasible =
TRUE;
12380 dualfeaspointer =
NULL;
12405 if( !primalfeasible || !dualfeasible
12415 SCIPsetDebugMsg(
set,
" -> LP objective value: %g + %g = %g (solstat=%d, cutoff=%g)\n",
12428 if( set->lp_checkprimfeas )
12440 primalfeasible =
TRUE;
12441 rayfeasible =
TRUE;
12450 if( !primalfeasible || !rayfeasible )
12493 SCIPmessagePrintWarning(messagehdlr,
"LP solver reached time limit, but SCIP time limit is not exceeded yet; " 12494 "you might consider switching the clock type of SCIP\n");
12511 assert(!(*lperror) || !lp->
solved);
12520 SCIPsetDebugMsg(
set,
"resetting parameter SCIP_LPPARAM_FROMSCRATCH to FALSE %s\n", success ?
"" :
"failed");
12531 assert(lp !=
NULL);
12549 assert(lp !=
NULL);
12552 assert(
set !=
NULL);
12575 assert(lp !=
NULL);
12588 assert(lp !=
NULL);
12591 assert(
set !=
NULL);
12608 assert(lp !=
NULL);
12619 assert(lp !=
NULL);
12636 assert(lp !=
NULL);
12637 assert(
set !=
NULL);
12638 assert(prob !=
NULL);
12641 nvars = prob->
nvars;
12649 for( v = 0; v < nvars; ++v )
12700 assert(lp !=
NULL);
12702 assert(
set !=
NULL);
12729 assert(lp !=
NULL);
12731 assert(
set !=
NULL);
12761 int pseudoobjvalinf;
12772 pseudoobjval -= oldbound * obj;
12773 assert(pseudoobjvalinf >= 0);
12777 pseudoobjval += newbound * obj;
12779 assert(pseudoobjvalinf >= 0);
12781 if( pseudoobjvalinf > 0 || set->nactivepricers > 0 )
12784 return pseudoobjval;
12800 int pseudoobjvalinf;
12826 assert(pseudoobjvalinf >= 0);
12838 assert(pseudoobjvalinf >= 0);
12840 if( pseudoobjvalinf > 0 || set->nactivepricers > 0 )
12843 return pseudoobjval;
12874 (*deltaval) = lb * (newobj - oldobj);
12885 (*deltaval) = ub * newobj;
12894 (*deltaval) = -lb * oldobj;
12899 (*deltaval) = (ub * newobj) - (lb * oldobj);
12909 (*deltaval) = -lb * oldobj;
12920 (*deltaval) = ub * (newobj - oldobj);
12931 (*deltaval) = lb * newobj;
12940 (*deltaval) = -ub * oldobj;
12945 (*deltaval) = (lb * newobj) - (ub * oldobj);
12955 (*deltaval) = -ub * oldobj;
12966 (*deltaval) = ub * newobj;
12973 (*deltaval) = lb * newobj;
12999 (*deltaval) = newlb * obj;
13010 (*deltaval) = -oldlb * obj;
13015 (*deltaval) = obj * (newlb - oldlb);
13040 (*deltaval) = newub * obj;
13051 (*deltaval) = -oldub * obj;
13056 (*deltaval) = obj * (newub - oldub);
13073 assert(lp !=
NULL);
13163 assert(lp !=
NULL);
13172 assert(var !=
NULL);
13176 SCIPerrorMessage(
"LP was informed of an objective change of a non-active variable\n");
13198 else if( oldobj < 0.0 )
13224 else if( newobj < 0.0 )
13265 assert(
set !=
NULL);
13266 assert(var !=
NULL);
13268 if( set->misc_exactsolve )
13270 if( oldobj != newobj )
13319 assert(
set !=
NULL);
13320 assert(var !=
NULL);
13347 assert(
set !=
NULL);
13348 assert(var !=
NULL);
13350 if( set->misc_exactsolve )
13388 assert(
set !=
NULL);
13389 assert(var !=
NULL);
13415 assert(
set !=
NULL);
13416 assert(var !=
NULL);
13418 if( set->misc_exactsolve )
13454 assert(lp !=
NULL);
13475 assert(lp !=
NULL);
13503 assert(lp !=
NULL);
13554 assert(lp !=
NULL);
13611 assert(
set !=
NULL);
13613 if( set->misc_exactsolve )
13637 assert(lp !=
NULL);
13686 assert(lp !=
NULL);
13735 assert(
set !=
NULL);
13737 if( set->misc_exactsolve )
13754 assert(lp !=
NULL);
13794 assert(lp !=
NULL);
13797 assert(
set !=
NULL);
13798 assert(stat !=
NULL);
13804 if( primalfeasible ==
NULL )
13805 stillprimalfeasible =
FALSE;
13808 *primalfeasible =
TRUE;
13809 stillprimalfeasible =
TRUE;
13811 if( dualfeasible ==
NULL )
13812 stilldualfeasible =
FALSE;
13815 *dualfeasible =
TRUE;
13816 stilldualfeasible =
TRUE;
13824 SCIPsetDebugMsg(
set,
"getting new LP solution %" SCIP_LONGINT_FORMAT
" for solstat %d\n",
13856 for( c = 0; c < nlpicols; ++c )
13858 assert( 0 <= cstat[c] && cstat[c] < 4 );
13859 lpicols[c]->
primsol = primsol[c];
13860 lpicols[c]->
minprimsol =
MIN(lpicols[c]->minprimsol, primsol[c]);
13861 lpicols[c]->
maxprimsol =
MAX(lpicols[c]->maxprimsol, primsol[c]);
13862 lpicols[c]->
redcost = redcost[c];
13863 lpicols[c]->
basisstatus = (
unsigned int) cstat[c];
13865 if( stillprimalfeasible )
13867 stillprimalfeasible =
13870 primalbound += (lpicols[c]->
primsol * lpicols[c]->
obj);
13880 if( stilldualfeasible )
13882 compslack =
MIN((lpicols[c]->primsol - lpicols[c]->lb), 1.0) * lpicols[c]->
redcost;
13885 if( stilldualfeasible )
13887 compslack =
MIN((lpicols[c]->ub - lpicols[c]->primsol), 1.0) * lpicols[c]->
redcost;
13891 SCIPsetDebugMsg(
set,
" col <%s> [%.9g,%.9g]: primsol=%.9f, redcost=%.9f, pfeas=%u/%u(%u), dfeas=%d/%d(%u)\n",
13892 SCIPvarGetName(lpicols[c]->var), lpicols[c]->lb, lpicols[c]->ub, lpicols[c]->primsol, lpicols[c]->redcost,
13895 primalfeasible !=
NULL ? stillprimalfeasible :
TRUE,
13898 dualfeasible !=
NULL ? stilldualfeasible : TRUE);
13912 if( stilldualfeasible
13915 if( stilldualfeasible
13919 SCIPsetDebugMsg(
set,
" col <%s> [%.9g,%.9g]: primsol=%.9f, redcost=%.9f, pfeas=%u/%u(%u), dfeas=%d/%d(%u)\n",
13920 SCIPvarGetName(lpicols[c]->var), lpicols[c]->lb, lpicols[c]->ub, lpicols[c]->primsol, lpicols[c]->redcost,
13923 primalfeasible !=
NULL ? stillprimalfeasible :
TRUE,
13926 dualfeasible !=
NULL ? stilldualfeasible : TRUE);
13933 if( stilldualfeasible )
13936 dualbound += (lpicols[c]->
redcost * lpicols[c]->
lb);
13937 else if( lpicols[c]->redcost < 0.0 && !
SCIPsetIsInfinity(
set, lpicols[c]->ub) )
13938 dualbound += (lpicols[c]->redcost * lpicols[c]->ub);
13943 for( r = 0; r < nlpirows; ++r )
13945 assert( 0 <= rstat[r] && rstat[r] < 4 );
13946 lpirows[r]->
dualsol = dualsol[r];
13948 lpirows[r]->
basisstatus = (
unsigned int) rstat[r];
13950 if( stillprimalfeasible )
13952 stillprimalfeasible =
13964 if( stilldualfeasible )
13966 compslack =
MIN((lpirows[r]->activity - lpirows[r]->lhs), 1.0) * lpirows[r]->
dualsol;
13969 if( stilldualfeasible )
13971 compslack =
MIN((lpirows[r]->rhs - lpirows[r]->activity), 1.0) * lpirows[r]->
dualsol;
13975 SCIPsetDebugMsg(
set,
" row <%s> [%.9g,%.9g]: activity=%.9f, dualsol=%.9f, pfeas=%u/%u(%u), dfeas=%d/%d(%u)\n",
13976 lpirows[r]->name, lpirows[r]->lhs, lpirows[r]->rhs, lpirows[r]->activity, lpirows[r]->dualsol,
13979 primalfeasible !=
NULL ? stillprimalfeasible :
TRUE,
13982 dualfeasible !=
NULL ? stilldualfeasible : TRUE);
13990 if( stilldualfeasible &&
13993 if( stilldualfeasible &&
13997 SCIPsetDebugMsg(
set,
" row <%s> [%.9g,%.9g] + %.9g: activity=%.9f, dualsol=%.9f, pfeas=%u/%u(%u), dfeas=%d/%d(%u)\n",
13998 lpirows[r]->name, lpirows[r]->lhs, lpirows[r]->rhs, lpirows[r]->constant, lpirows[r]->activity, lpirows[r]->dualsol,
14001 primalfeasible !=
NULL ? stillprimalfeasible :
TRUE,
14004 dualfeasible !=
NULL ? stilldualfeasible : TRUE);
14011 if( stilldualfeasible )
14015 else if( lpirows[r]->dualsol < 0.0 && !
SCIPsetIsInfinity(
set, lpirows[r]->rhs) )
14016 dualbound += (lpirows[r]->dualsol * (lpirows[r]->rhs - lpirows[r]->constant));
14045 if( primalfeasible !=
NULL )
14046 *primalfeasible = stillprimalfeasible;
14047 if( dualfeasible !=
NULL )
14048 *dualfeasible = stilldualfeasible;
14083 assert(lp !=
NULL);
14088 assert(
set !=
NULL);
14089 assert(stat !=
NULL);
14092 if( primalfeasible !=
NULL )
14093 *primalfeasible =
TRUE;
14094 if( rayfeasible !=
NULL )
14095 *rayfeasible =
TRUE;
14131 for( c = 0; c < nlpicols; ++c )
14133 assert(lpicols[c] !=
NULL);
14134 assert(lpicols[c]->var !=
NULL);
14137 if( rayfeasible !=
NULL )
14138 *rayfeasible = *rayfeasible
14145 if( primalfeasible !=
NULL )
14146 *primalfeasible = *primalfeasible
14151 rayobjval += ray[c] * lpicols[c]->
obj;
14155 if( primalfeasible !=
NULL && !(*primalfeasible) )
14160 else if( rayfeasible !=
NULL && !(*rayfeasible) )
14170 if( rayfeasible !=
NULL )
14172 *rayfeasible =
FALSE;
14179 assert(rayobjval != 0.0);
14186 for( c = 0; c < nlpicols; ++c )
14189 rayscale =
MIN(rayscale, (lpicols[c]->ub - primsol[c])/ray[c]);
14191 rayscale =
MIN(rayscale, (lpicols[c]->lb - primsol[c])/ray[c]);
14197 SCIPsetDebugMsg(
set,
"unbounded LP solution: rayobjval=%f, rayscale=%f\n", rayobjval, rayscale);
14200 for( c = 0; c < nlpicols; ++c )
14203 lpicols[c]->
primsol = primsol[c];
14206 SCIP_Real primsolval = primsol[c] + rayscale * ray[c];
14213 for( r = 0; r < nlpirows; ++r )
14220 if( primalfeasible !=
NULL )
14221 *primalfeasible = *primalfeasible
14249 assert(lp !=
NULL);
14250 assert(
set !=
NULL);
14251 assert(ray !=
NULL);
14276 for( c = 0; c < nlpicols; c++ )
14278 assert(lpicols[c] !=
NULL);
14280 var = lpicols[c]->
var;
14281 assert(var !=
NULL);
14306 assert(lp !=
NULL);
14310 assert(
set !=
NULL);
14311 assert(stat !=
NULL);
14332 for( r = 0; r < nlpirows; ++r )
14334 SCIPsetDebugMsg(
set,
" row <%s>: dualfarkas=%f\n", lpirows[r]->name, dualfarkas[r]);
14343 for( c = 0; c < nlpicols; ++c )
14363 assert(lp !=
NULL);
14385 assert(lp !=
NULL);
14390 assert(stat !=
NULL);
14400 for( c = 0; c < nlpicols; ++c )
14402 assert(lpicols[c] == lp->
cols[c]);
14403 if( lpicols[c]->primsol == 0.0 )
14406 lpicols[c]->
age = 0;
14411 for( r = 0; r < nlpirows; ++r )
14414 assert(lpirows[r] == lp->
rows[r]);
14416 if( lpirows[r]->dualsol == 0.0 )
14423 lpirows[r]->
age = 0;
14443 assert(lp !=
NULL);
14447 assert(coldstat !=
NULL);
14456 for( c = 0; c < ncols; ++c )
14459 assert(col !=
NULL);
14460 assert(col == lp->
lpicols[c]);
14461 assert(coldstat[c] <= c);
14462 col->
lppos = coldstat[c];
14463 if( coldstat[c] == -1 )
14481 else if( coldstat[c] < c )
14483 assert(lp->
cols[coldstat[c]] ==
NULL);
14485 lp->
cols[coldstat[c]] = col;
14486 lp->
lpicols[coldstat[c]] = col;
14487 lp->
cols[coldstat[c]]->
lppos = coldstat[c];
14488 lp->
cols[coldstat[c]]->
lpipos = coldstat[c];
14496 while( c < lp->nlazycols )
14508 if( lp->
ncols < ncols )
14545 assert(lp !=
NULL);
14549 assert(rowdstat !=
NULL);
14557 for( r = 0; r < nrows; ++r )
14560 assert(row == lp->
lpirows[r]);
14561 assert(rowdstat[r] <= r);
14562 assert(row !=
NULL);
14563 row->
lppos = rowdstat[r];
14564 if( rowdstat[r] == -1 )
14593 else if( rowdstat[r] < r )
14595 assert(lp->
rows[rowdstat[r]] ==
NULL);
14597 lp->
rows[rowdstat[r]] = row;
14598 lp->
lpirows[rowdstat[r]] = row;
14599 lp->
rows[rowdstat[r]]->
lppos = rowdstat[r];
14600 lp->
rows[rowdstat[r]]->
lpipos = rowdstat[r];
14607 if( lp->
nrows < nrows )
14646 assert(lp !=
NULL);
14651 assert(
set !=
NULL);
14652 assert(stat !=
NULL);
14669 for( c = firstcol; c < ncols; ++c )
14671 assert(cols[c] == lpicols[c]);
14672 assert(cols[c]->lppos == c);
14673 assert(cols[c]->lpipos == c);
14674 if( cols[c]->removable
14675 && cols[c]->obsoletenode != stat->
nnodes 14676 && cols[c]->
age > set->lp_colagelimit
14680 assert(cols[c]->primsol == 0.0);
14684 SCIPsetDebugMsg(
set,
"removing obsolete col <%s>: primsol=%f, bounds=[%g,%g]\n",
14685 SCIPvarGetName(cols[c]->var), cols[c]->primsol, cols[c]->lb, cols[c]->ub);
14689 SCIPsetDebugMsg(
set,
"removing %d/%d obsolete columns from LP\n", ndelcols, ncols);
14696 assert(lp->
ncols == ncols - ndelcols);
14725 assert(lp !=
NULL);
14730 assert(
set !=
NULL);
14731 assert(stat !=
NULL);
14748 for( r = firstrow; r < nrows; ++r )
14750 assert(rows[r] == lpirows[r]);
14751 assert(rows[r]->lppos == r);
14752 assert(rows[r]->lpipos == r);
14753 if( rows[r]->removable
14754 && rows[r]->obsoletenode != stat->
nnodes 14755 && rows[r]->
age > set->lp_rowagelimit
14761 SCIPsetDebugMsg(
set,
"removing obsolete row <%s>: activity=%f, sides=[%g,%g]\n",
14762 rows[r]->name, rows[r]->activity, rows[r]->lhs, rows[r]->rhs);
14766 SCIPsetDebugMsg(
set,
"removing %d/%d obsolete rows from LP\n", ndelrows, nrows);
14773 assert(lp->
nrows == nrows - ndelrows);
14791 assert(lp !=
NULL);
14795 assert(
set !=
NULL);
14797 SCIPsetDebugMsg(
set,
"removing obsolete columns starting with %d/%d, obsolete rows starting with %d/%d\n",
14822 assert(lp !=
NULL);
14826 assert(
set !=
NULL);
14830 if( 0 < lp->
ncols )
14834 if( 0 < lp->
nrows )
14858 assert(lp !=
NULL);
14862 assert(stat !=
NULL);
14864 assert(0 <= firstcol && firstcol < lp->ncols);
14879 for( c = firstcol; c < ncols; ++c )
14881 assert(cols[c] == lpicols[c]);
14882 assert(cols[c]->lppos == c);
14883 assert(cols[c]->lpipos == c);
14884 if( lpicols[c]->removable
14886 && lpicols[c]->primsol == 0.0
14894 SCIPsetDebugMsg(
set,
"removing %d/%d unused columns from LP\n", ndelcols, ncols);
14901 assert(lp->
ncols == ncols - ndelcols);
14930 assert(lp !=
NULL);
14935 assert(stat !=
NULL);
14937 assert(0 <= firstrow && firstrow < lp->nrows);
14954 for( r = firstrow; r < nrows; ++r )
14956 assert(rows[r] == lpirows[r]);
14957 assert(rows[r]->lppos == r);
14958 assert(rows[r]->lpipos == r);
14966 SCIPsetDebugMsg(
set,
"removing %d/%d unused rows from LP\n", ndelrows, nrows);
14973 assert(lp->
nrows == nrows - ndelrows);
14995 assert(lp !=
NULL);
14999 assert(
set !=
NULL);
15002 cleanupcols = (root ?
set->lp_cleanupcolsroot :
set->lp_cleanupcols);
15003 cleanuprows = (root ?
set->lp_cleanuprowsroot :
set->lp_cleanuprows);
15005 SCIPsetDebugMsg(
set,
"removing unused columns starting with %d/%d (%u), unused rows starting with %d/%d (%u), LP algo: %d, basic sol: %u\n",
15034 assert(lp !=
NULL);
15038 assert(
set !=
NULL);
15041 cleanupcols = (root ?
set->lp_cleanupcolsroot :
set->lp_cleanupcols);
15042 cleanuprows = (root ?
set->lp_cleanuprowsroot :
set->lp_cleanuprows);
15044 SCIPsetDebugMsg(
set,
"removing all unused columns (%u) and rows (%u), LP algo: %d, basic sol: %u\n",
15047 if( cleanupcols && 0 < lp->
ncols )
15051 if( cleanuprows && 0 < lp->
nrows )
15078 assert(lp !=
NULL);
15083 assert(stat !=
NULL);
15104 assert(rows[r] == lpirows[r]);
15105 assert(rows[r]->lppos == r);
15106 assert(rows[r]->lpipos == r);
15110 SCIPsetDebugMsg(
set,
"basic row <%s> is redundant: sides=[%g,%g], act=[%g,%g]\n",
15118 SCIPsetDebugMsg(
set,
"removing %d/%d redundant basic rows from LP\n", ndelrows, nrows);
15125 assert(lp->
nrows == nrows - ndelrows);
15144 assert(lp !=
NULL);
15152 assert(blkmem !=
NULL);
15153 assert(
set !=
NULL);
15156 SCIPsetDebugMsg(
set,
"diving started (LP flushed: %u, LP solved: %u, solstat: %d)\n",
15160 for( c = 0; c < lp->
ncols; ++c )
15182 if( !set->lp_resolverestore && lp->
solved )
15213 for( c = 0; c < lp->
ncols; ++c )
15217 for( r = 0; r < lp->
nrows; ++r )
15253 assert(lp !=
NULL);
15255 assert(blkmem !=
NULL);
15256 assert(nvars == 0 || vars !=
NULL);
15261 for( v = 0; v < nvars; ++v )
15264 assert(var !=
NULL);
15329 SCIP_CALL(
SCIPlpSolveAndEval(lp,
set, messagehdlr, blkmem, stat, eventqueue, eventfilter, prob, -1LL,
FALSE,
FALSE,
FALSE, &lperror) );
15341 "LP was not resolved to a sufficient status after diving\n");
15382 for( c = 0; c < lp->
ncols; ++c )
15386 for( r = 0; r < lp->
nrows; ++r )
15400 for( c = 0; c < lp->
ncols; ++c )
15416 #define DIVESTACKGROWFACT 1.5 15425 assert(lp !=
NULL);
15426 assert(row !=
NULL);
15447 assert(lp !=
NULL);
15462 assert(lp !=
NULL);
15477 assert(lp !=
NULL);
15490 assert(lp !=
NULL);
15531 assert(lp !=
NULL);
15533 assert(
set !=
NULL);
15534 assert(bound !=
NULL);
15541 for( j = 0; j < lp->
nrows; ++j )
15544 assert(row !=
NULL);
15570 for( j = 0; j < lp->
ncols; ++j )
15573 assert(col !=
NULL);
15578 c = usefarkas ? 0.0 : col->
obj;
15581 for( i = 0; i < col->
nlprows; ++i )
15585 assert(col->
linkpos[i] >= 0);
15592 for( i = col->
nlprows; i < col->len; ++i )
15598 assert(col->
linkpos[i] >= 0);
15641 assert(proved !=
NULL);
15645 *proved = (bound > 0.0);
15647 SCIPsetDebugMsg(
set,
"proved Farkas value of LP: %g -> infeasibility %sproved\n", bound, *proved ?
"" :
"not ");
15660 assert(lp !=
NULL);
15662 assert(fname !=
NULL);
15690 assert(lp !=
NULL);
15692 assert(fname !=
NULL);
15695 file = fopen(fname,
"w");
15705 SCIPmessageFPrintInfo(messagehdlr, file,
"\\ Original Variable and Constraint Names have been replaced by generic names.\n");
15708 SCIPmessageFPrintInfo(messagehdlr, file,
"\\ Warning: Variable and Constraint Names should not contain special characters like '+', '=' etc.\n");
15712 if( origobj && objoffset != 0.0 )
15714 SCIPmessageFPrintInfo(messagehdlr, file,
"\\ An artificial variable 'objoffset' has been added and fixed to 1.\n");
15715 SCIPmessageFPrintInfo(messagehdlr, file,
"\\ Switching this variable to 0 will disable the offset in the objective.\n\n");
15728 for( i = 0; i < lp->
ncols; ++i )
15730 if( lp->
cols[i]->
obj != 0.0 )
15750 if( origobj && objoffset != 0.0 )
15755 for( i = 0; i < lp->
nrows; i++ )
15788 if( strlen(rowname) > 0 )
15793 SCIPmessageFPrintInfo(messagehdlr, file,
"are not in a valid range. The following two constraints may be corrupted!\n");
15816 if( (j+1) % 10 == 0 )
15847 for( i = 0; i < lp->
nrows; i++ )
15880 if( strlen(rowname) > 0 )
15885 SCIPmessageFPrintInfo(messagehdlr, file,
"are not in a valid range. The following two constraints may be corrupted!\n");
15908 if( (j+1) % 10 == 0 )
15938 for( i = 0; i < lp->
ncols; ++i )
15958 if( origobj && objoffset != 0.0 )
15964 for( i = 0; i < lp->
ncols; ++i )
15996 #undef SCIPcolGetObj 15997 #undef SCIPcolGetLb 15998 #undef SCIPcolGetUb 15999 #undef SCIPcolGetBestBound 16000 #undef SCIPcolGetPrimsol 16001 #undef SCIPcolGetMinPrimsol 16002 #undef SCIPcolGetMaxPrimsol 16003 #undef SCIPcolGetBasisStatus 16004 #undef SCIPcolGetVar 16005 #undef SCIPcolGetIndex 16006 #undef SCIPcolIsIntegral 16007 #undef SCIPcolIsRemovable 16008 #undef SCIPcolGetLPPos 16009 #undef SCIPcolGetLPDepth 16010 #undef SCIPcolIsInLP 16011 #undef SCIPcolGetNNonz 16012 #undef SCIPcolGetNLPNonz 16013 #undef SCIPcolGetRows 16014 #undef SCIPcolGetVals 16015 #undef SCIPcolGetStrongbranchNode 16016 #undef SCIPcolGetNStrongbranchs 16017 #undef SCIPboundtypeOpposite 16018 #undef SCIProwGetNNonz 16019 #undef SCIProwGetNLPNonz 16020 #undef SCIProwGetCols 16021 #undef SCIProwGetVals 16022 #undef SCIProwGetConstant 16023 #undef SCIProwGetNorm 16024 #undef SCIProwGetSumNorm 16025 #undef SCIProwGetLhs 16026 #undef SCIProwGetRhs 16027 #undef SCIProwGetDualsol 16028 #undef SCIProwGetDualfarkas 16029 #undef SCIProwGetBasisStatus 16030 #undef SCIProwGetName 16031 #undef SCIProwGetIndex 16032 #undef SCIProwGetAge 16033 #undef SCIProwGetRank 16034 #undef SCIProwIsIntegral 16035 #undef SCIProwIsLocal 16036 #undef SCIProwIsModifiable 16037 #undef SCIProwIsRemovable 16038 #undef SCIProwGetOrigintype 16039 #undef SCIProwGetOriginCons 16040 #undef SCIProwGetOriginSepa 16041 #undef SCIProwIsInGlobalCutpool 16042 #undef SCIProwGetLPPos 16043 #undef SCIProwGetLPDepth 16044 #undef SCIProwIsInLP 16045 #undef SCIProwGetActiveLPCount 16046 #undef SCIProwGetNLPsAfterCreation 16047 #undef SCIProwChgRank 16048 #undef SCIPlpGetCols 16049 #undef SCIPlpGetNCols 16050 #undef SCIPlpGetRows 16051 #undef SCIPlpGetNRows 16052 #undef SCIPlpGetNewcols 16053 #undef SCIPlpGetNNewcols 16054 #undef SCIPlpGetNewrows 16055 #undef SCIPlpGetNNewrows 16056 #undef SCIPlpGetObjNorm 16057 #undef SCIPlpGetRootObjval 16058 #undef SCIPlpGetRootColumnObjval 16059 #undef SCIPlpGetRootLooseObjval 16060 #undef SCIPlpGetLPI 16061 #undef SCIPlpSetIsRelax 16062 #undef SCIPlpIsRelax 16063 #undef SCIPlpIsSolved 16064 #undef SCIPlpIsSolBasic 16065 #undef SCIPlpDiving 16066 #undef SCIPlpDivingObjChanged 16067 #undef SCIPlpMarkDivingObjChanged 16068 #undef SCIPlpUnmarkDivingObjChanged 16069 #undef SCIPlpDivingRowsChanged 16076 assert(col !=
NULL);
16086 assert(col !=
NULL);
16096 assert(col !=
NULL);
16106 assert(col !=
NULL);
16108 if( col->
obj >= 0.0 )
16119 assert(col !=
NULL);
16121 if( col->
lppos >= 0 )
16132 assert(col !=
NULL);
16142 assert(col !=
NULL);
16154 assert(col !=
NULL);
16165 assert(col !=
NULL);
16175 assert(col !=
NULL);
16185 assert(col !=
NULL);
16196 assert(col !=
NULL);
16206 assert(col !=
NULL);
16217 assert(col !=
NULL);
16228 assert(col !=
NULL);
16231 return (col->
lppos >= 0);
16239 assert(col !=
NULL);
16253 assert(col !=
NULL);
16264 assert(col !=
NULL);
16274 assert(col !=
NULL);
16286 assert(col !=
NULL);
16296 assert(col !=
NULL);
16316 assert(row !=
NULL);
16330 assert(row !=
NULL);
16341 assert(row !=
NULL);
16351 assert(row !=
NULL);
16361 assert(row !=
NULL);
16371 assert(row !=
NULL);
16383 assert(row !=
NULL);
16395 assert(row !=
NULL);
16405 assert(row !=
NULL);
16415 assert(row !=
NULL);
16417 if( row->
lppos >= 0 )
16428 assert(row !=
NULL);
16430 if( row->
lppos >= 0 )
16443 assert(row !=
NULL);
16454 assert(row !=
NULL);
16464 assert(row !=
NULL);
16474 assert(row !=
NULL);
16484 assert(row !=
NULL);
16494 assert(row !=
NULL);
16504 assert(row !=
NULL);
16514 assert(row !=
NULL);
16524 assert(row !=
NULL);
16534 assert( row !=
NULL );
16544 assert( row !=
NULL );
16559 assert( row !=
NULL );
16574 assert(row !=
NULL);
16584 assert(row !=
NULL);
16595 assert(row !=
NULL);
16606 assert(row !=
NULL);
16609 return (row->
lppos >= 0);
16618 assert(row !=
NULL);
16628 assert(row !=
NULL);
16638 assert(row !=
NULL);
16648 assert(lp !=
NULL);
16658 assert(lp !=
NULL);
16668 assert(lp !=
NULL);
16678 assert(lp !=
NULL);
16688 assert(lp !=
NULL);
16699 assert(lp !=
NULL);
16710 assert(lp !=
NULL);
16721 assert(lp !=
NULL);
16739 assert(cols !=
NULL || lp->
ncols == 0);
16743 for( c = lp->
ncols - 1; c >= 0; --c )
16745 lp->
objsqrnorm += SQR(cols[c]->unchangedobj);
16763 assert(lp !=
NULL);
16776 assert(lp !=
NULL);
16786 assert(lp !=
NULL);
16796 assert(lp !=
NULL);
16808 assert(lp !=
NULL);
16820 assert(lp !=
NULL);
16830 assert(lp !=
NULL);
16841 assert(lp !=
NULL);
16853 assert(lp !=
NULL);
16863 assert(lp !=
NULL);
16873 assert(lp !=
NULL);
16883 assert(lp !=
NULL);
16893 assert(lp !=
NULL);
16903 assert(lp !=
NULL);
16913 assert(lp !=
NULL);
16923 assert(lp !=
NULL);
16934 assert(lp !=
NULL);
16945 assert(lp !=
NULL);
17021 assert(
set !=
NULL);
17022 assert(lp !=
NULL);
17023 assert(point !=
NULL);
17024 assert(success !=
NULL);
17029 if ( timelimit <= 0.0 || iterlimit <= 0 )
17033 assert(lp->
nrows >= 0);
17034 assert(lp->
ncols >= 0);
17035 if( lp->
ncols == 0 )
17040 inclobjcutoff =
FALSE;
17042 SCIPsetDebugMsg(
set,
"Computing relative interior point to current LP.\n");
17045 if( lp->
nrows == 0 && !inclobjcutoff )
17070 nnewcols = 3*lp->
ncols + 2*lp->
nrows + (inclobjcutoff ? 1 : 0) + 1;
17076 for( j = 0; j < lp->
ncols; ++j )
17086 nnewcols = lp->
ncols;
17087 obj[nnewcols] = 0.0;
17088 lb[nnewcols] = 1.0;
17093 for( i = 0; i < lp->
nrows; ++i )
17098 assert( row !=
NULL );
17113 else if( relaxrows )
17118 obj[nnewcols] = 1.0;
17119 lb[nnewcols] = 0.0;
17120 ub[nnewcols] = 1.0;
17125 obj[nnewcols] = 1.0;
17126 lb[nnewcols] = 0.0;
17127 ub[nnewcols] = 1.0;
17134 if( inclobjcutoff && relaxrows )
17137 obj[nnewcols] = 1.0;
17138 lb[nnewcols] = 0.0;
17139 ub[nnewcols] = 1.0;
17144 for( j = 0; j < lp->
ncols; ++j )
17149 assert( col !=
NULL );
17158 obj[nnewcols] = 1.0;
17159 lb[nnewcols] = 0.0;
17160 ub[nnewcols] = 1.0;
17165 obj[nnewcols] = 1.0;
17166 lb[nnewcols] = 0.0;
17167 ub[nnewcols] = 1.0;
17172 nslacks = nnewcols - lp->
ncols - 1;
17173 assert( nslacks >= 0 );
17174 assert( nnewcols <= 3*lp->ncols + 2*lp->
nrows + (inclobjcutoff ? 1 : 0) + 1 );
17195 for( i = 0; i < lp->
nrows; ++i )
17205 assert( row !=
NULL );
17215 assert( nnonz <= lp->ncols );
17216 rowcols = row->
cols;
17217 rowvals = row->
vals;
17220 for( j = 0; j < nnonz; ++j )
17222 assert( rowcols[j] !=
NULL );
17223 assert( 0 <= rowcols[j]->lppos && rowcols[j]->lppos < lp->ncols );
17224 assert( lp->
cols[rowcols[j]->
lppos] == rowcols[j] );
17225 colinds[j] = rowcols[j]->
lppos;
17226 colvals[j] = rowvals[j];
17233 colinds[nnonz] = lp->
ncols;
17234 colvals[nnonz] = -rhs;
17250 colinds[nnonz] = lp->
ncols;
17251 colvals[nnonz] = -lhs;
17256 colinds[nnonz+1] = lp->
ncols + 1 + cnt;
17257 colvals[nnonz+1] = -
MAX(1.0, lhs);
17273 colinds[nnonz] = lp->
ncols;
17274 colvals[nnonz] = -rhs;
17279 colinds[nnonz+1] = lp->
ncols + 1 + cnt;
17280 colvals[nnonz+1] =
MAX(1.0, absrhs);
17293 if( inclobjcutoff )
17304 for( j = 0; j < lp->
ncols; ++j )
17309 if( lp->
cols[j]->
obj == 0.0 )
17312 colvals[nnonz] = lp->
cols[j]->
obj;
17318 colinds[nnonz] = lp->
ncols;
17319 colvals[nnonz] = -rhs;
17327 colinds[nnonz] = lp->
ncols + 1 + cnt;
17328 colvals[nnonz] =
MAX(1.0, absrhs);
17336 for( j = 0; j < lp->
ncols; ++j )
17343 assert( col !=
NULL );
17344 assert( col->
lppos == j );
17354 colinds[1] = lp->
ncols;
17355 colvals[1] = -col->
lb;
17370 colinds[1] = lp->
ncols;
17371 colvals[1] = -col->
lb;
17374 colinds[2] = lp->
ncols + 1 + cnt;
17375 colvals[2] = -
MAX(1.0, abscollb);
17384 colinds[1] = lp->
ncols;
17385 colvals[1] = -col->
ub;
17388 colinds[2] = lp->
ncols + 1 + cnt;
17389 colvals[2] =
MAX(1.0, abscolub);
17394 assert( cnt == nslacks );
17407 assert( ncols == nnewcols );
17418 SCIPmessagePrintWarning(messagehdlr,
"Could not set time limit of LP solver for relative interior point computation.\n");
17425 SCIPmessagePrintWarning(messagehdlr,
"Could not set iteration limit of LP solver for relative interior point computation.\n");
17450 alpha = primal[lp->
ncols];
17453 SCIPsetDebugMsg(
set,
"Solved relative interior lp with objective %g.\n", objval);
17456 for( j = 0; j < lp->
ncols; ++j )
17457 point[j] = primal[j]/alpha;
17464 for( i = 0; i < lp->
nrows; ++i )
17475 assert( row !=
NULL );
17481 assert( nnonz <= lp->ncols );
17482 rowcols = row->
cols;
17483 rowvals = row->
vals;
17486 for( j = 0; j < nnonz; ++j )
17487 sum += rowvals[j] * primal[rowcols[j]->lppos];
17511 if( inclobjcutoff )
17520 for( j = 0; j < lp->
ncols; ++j )
17529 for( j = 0; j < lp->
ncols; ++j )
17537 assert( col !=
NULL );
17539 val = primal[col->
lppos] / alpha;
static SCIP_RETCODE lpRestoreSolVals(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_Longint validlp)
SCIP_Bool SCIPsetIsUpdateUnreliable(SCIP_SET *set, SCIP_Real newvalue, SCIP_Real oldvalue)
SCIP_Bool SCIProwIsRemovable(SCIP_ROW *row)
enum SCIP_BoundType SCIP_BOUNDTYPE
SCIP_RETCODE SCIPeventfilterCreate(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem)
SCIP_Longint ndualresolvelpiterations
void SCIPcolMarkNotRemovableLocal(SCIP_COL *col, SCIP_STAT *stat)
SCIP_RETCODE SCIPlpGetProvedLowerbound(SCIP_LP *lp, SCIP_SET *set, SCIP_Real *bound)
SCIP_Real SCIProwGetSolFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)
void SCIPlpInvalidateRootObjval(SCIP_LP *lp)
void SCIPcolGetStrongbranchLast(SCIP_COL *col, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Real *solval, SCIP_Real *lpobjval)
SCIP_Bool SCIPsolveIsStopped(SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool checknodelimits)
SCIP_Longint nsbdivinglps
static SCIP_RETCODE lpStoreSolVals(SCIP_LP *lp, SCIP_STAT *stat, BMS_BLKMEM *blkmem)
SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)
SCIP_Bool SCIPsetIsSumGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
static SCIP_RETCODE lpSetBoolpar(SCIP_LP *lp, SCIP_LPPARAM lpparam, SCIP_Bool value, SCIP_Bool *success)
static SCIP_RETCODE lpSetFastmip(SCIP_LP *lp, int fastmip, SCIP_Bool *success)
int SCIProwGetMaxidx(SCIP_ROW *row, SCIP_SET *set)
#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)
static SCIP_RETCODE lpSetDualfeastol(SCIP_LP *lp, SCIP_Real dualfeastol, SCIP_Bool *success)
static SCIP_RETCODE lpUpdateVarProved(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real oldlb, SCIP_Real oldub, SCIP_Real newobj, SCIP_Real newlb, SCIP_Real newub)
static void colUpdateDelLP(SCIP_COL *col, SCIP_SET *set)
SCIP_RETCODE SCIPeventCreateRowAddedLP(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
internal methods for managing events
SCIP_RETCODE SCIPlpFreeNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
SCIP_Bool SCIPlpDivingRowsChanged(SCIP_LP *lp)
static SCIP_RETCODE lpSetFromscratch(SCIP_LP *lp, SCIP_Bool fromscratch, SCIP_Bool *success)
static int SCIProwGetDiscreteScalarProduct(SCIP_ROW *row1, SCIP_ROW *row2)
SCIP_Bool SCIPsetIsLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPlpiIsDualFeasible(SCIP_LPI *lpi)
int SCIPlpGetNNewrows(SCIP_LP *lp)
SCIP_Bool SCIPsetIsFeasZero(SCIP_SET *set, SCIP_Real val)
internal methods for storing primal CIP solutions
static SCIP_RETCODE lpSetRowrepswitch(SCIP_LP *lp, SCIP_Real rowrepswitch, SCIP_Bool *success)
SCIP_Real SCIProwGetScalarProduct(SCIP_ROW *row1, SCIP_ROW *row2)
SCIP_EVENTFILTER * eventfilter
static SCIP_RETCODE rowScale(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real scaleval, SCIP_Bool integralcontvars, SCIP_Real minrounddelta, SCIP_Real maxrounddelta)
SCIP_RETCODE SCIPlpiSolveDual(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpUpdateAddVar(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
SCIP_Longint nlpiterations
SCIP_Bool SCIPlpDiving(SCIP_LP *lp)
SCIP_RETCODE SCIPlpiFreeNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
SCIP_RETCODE SCIPlpiSetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, const SCIP_LPISTATE *lpistate)
static SCIP_RETCODE colChgCoefPos(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, int pos, SCIP_Real val)
#define BMSfreeMemoryArrayNull(ptr)
SCIP_RETCODE SCIPlpShrinkRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int newnrows)
void SCIPlpSetIsRelax(SCIP_LP *lp, SCIP_Bool relax)
SCIP_RETCODE SCIPlpiGetDualfarkas(SCIP_LPI *lpi, SCIP_Real *dualfarkas)
SCIP_Longint validactivitylp
static SCIP_RETCODE colUnlink(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
static SCIP_Bool isNewValueUnreliable(SCIP_SET *set, SCIP_Real newvalue, SCIP_Real oldvalue)
int SCIProwGetAge(SCIP_ROW *row)
static void rowSwapCoefs(SCIP_ROW *row, int pos1, int pos2)
SCIP_SEPA * SCIProwGetOriginSepa(SCIP_ROW *row)
#define SCIP_EVENTTYPE_ROWADDEDLP
SCIP_Longint nnumtroublelpmsgs
SCIP_Real SCIProwGetMinval(SCIP_ROW *row, SCIP_SET *set)
enum SCIP_LPAlgo SCIP_LPALGO
void SCIPlpEndStrongbranchProbing(SCIP_LP *lp)
static SCIP_RETCODE lpCleanupCols(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, int firstcol)
SCIP_RETCODE SCIPlpComputeRelIntPoint(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_LP *lp, SCIP_PROB *prob, SCIP_Bool relaxrows, SCIP_Bool inclobjcutoff, SCIP_Real timelimit, int iterlimit, SCIP_Real *point, SCIP_Bool *success)
static SCIP_Real getFiniteLooseObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
static SCIP_RETCODE lpSetConditionLimit(SCIP_LP *lp, SCIP_Real condlimit, SCIP_Bool *success)
SCIP_RETCODE SCIPeventCreateRowDeletedLP(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
static SCIP_RETCODE ensureLpirowsSize(SCIP_LP *lp, SCIP_SET *set, int num)
SCIP_RETCODE SCIPlpFlush(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
SCIP_RETCODE SCIPlpGetBInvCol(SCIP_LP *lp, int c, SCIP_Real *coef, int *inds, int *ninds)
SCIP_RETCODE SCIPlpiGetBInvARow(SCIP_LPI *lpi, int r, const SCIP_Real *binvrow, SCIP_Real *coef, int *inds, int *ninds)
SCIP_Real SCIPvarGetUbLazy(SCIP_VAR *var)
SCIP_Real SCIProwGetRelaxFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
SCIP_RETCODE SCIPcolChgCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val)
SCIP_Bool SCIPsetIsFeasEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
static SCIP_RETCODE rowStoreSolVals(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_Bool infeasible)
enum SCIP_BaseStat SCIP_BASESTAT
SCIP_RETCODE SCIPlpRemoveAllObsoletes(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
SCIP_Real SCIProwGetPseudoActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
void SCIPlpSetRootLPIsRelax(SCIP_LP *lp, SCIP_Bool isrelax)
SCIP_Longint activeinlpcounter
SCIP_RETCODE SCIPeventqueueAdd(SCIP_EVENTQUEUE *eventqueue, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter, SCIP_EVENT **event)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_Bool SCIProwIsRedundant(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
static SCIP_RETCODE lpFlushAddCols(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
SCIP_Bool SCIPlpiHasStateBasis(SCIP_LPI *lpi, SCIP_LPISTATE *lpistate)
SCIP_BASESTAT SCIPcolGetBasisStatus(SCIP_COL *col)
void SCIProwRecalcLPActivity(SCIP_ROW *row, SCIP_STAT *stat)
SCIP_RETCODE SCIPlpiGetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real *dval)
void SCIPlpRecalculateObjSqrNorm(SCIP_SET *set, SCIP_LP *lp)
enum SCIP_RowOriginType SCIP_ROWORIGINTYPE
internal methods for clocks and timing issues
static void getObjvalDeltaUb(SCIP_SET *set, SCIP_Real obj, SCIP_Real oldub, SCIP_Real newub, SCIP_Real *deltaval, int *deltainf)
SCIP_Real * SCIPcolGetVals(SCIP_COL *col)
SCIP_RETCODE SCIPlpiGetBInvCol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds)
SCIP_Longint SCIPcolGetStrongbranchNode(SCIP_COL *col)
SCIP_Bool SCIPsetIsPositive(SCIP_SET *set, SCIP_Real val)
#define debugRowPrint(x, y)
int SCIProwGetNNonz(SCIP_ROW *row)
SCIP_RETCODE SCIPeventfilterDel(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
void SCIProwCapture(SCIP_ROW *row)
SCIP_RETCODE SCIProwChgConstant(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real constant)
static SCIP_RETCODE lpDelColset(SCIP_LP *lp, SCIP_SET *set, int *coldstat)
SCIP_RETCODE SCIPlpGetIterations(SCIP_LP *lp, int *iterations)
static void adjustLPobjval(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
const char * SCIProwGetName(SCIP_ROW *row)
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)
static void rowSortLP(SCIP_ROW *row)
interface methods for specific LP solvers
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_Real SCIPsetInfinity(SCIP_SET *set)
static void colMoveCoef(SCIP_COL *col, int oldpos, int newpos)
static void rowUpdateAddLP(SCIP_ROW *row)
int SCIPlpiGetInternalStatus(SCIP_LPI *lpi)
SCIP_RETCODE SCIPcolChgObj(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newobj)
static void markColDeleted(SCIP_COL *col)
SCIP_Longint SCIProwGetActiveLPCount(SCIP_ROW *row)
SCIP_Real SCIPlpGetGlobalPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
SCIP_RETCODE SCIPlpUpdateVarLb(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)
SCIP_RETCODE SCIPlpiIgnoreInstability(SCIP_LPI *lpi, SCIP_Bool *success)
static SCIP_RETCODE lpUpdateVarLoose(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
SCIP_RETCODE SCIProwEnsureSize(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
static void lpNumericalTroubleMessage(SCIP_MESSAGEHDLR *messagehdlr, SCIP_SET *set, SCIP_STAT *stat, SCIP_VERBLEVEL verblevel, const char *formatstr,...)
unsigned int nonlprowssorted
SCIP_RETCODE SCIPlpFreeState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
static void colSwapCoefs(SCIP_COL *col, int pos1, int pos2)
SCIP_RETCODE SCIPlpiGetBInvACol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds)
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)
#define SCIP_EVENTTYPE_ROWSIDECHANGED
#define SCIP_EVENTTYPE_ROWCHANGED
int SCIProwGetNLPNonz(SCIP_ROW *row)
#define debugColPrint(x, y)
SCIP_RETCODE SCIPcolCreate(SCIP_COL **col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, int len, SCIP_ROW **rows, SCIP_Real *vals, SCIP_Bool removable)
static const int nscalars
void SCIPswapPointers(void **pointer1, void **pointer2)
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_RETCODE SCIPlpiGetObj(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *vals)
enum SCIP_ClockType SCIP_CLOCKTYPE
SCIP_RETCODE SCIPlpUpdateVarLbGlobal(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)
SCIP_Real SCIProwGetLhs(SCIP_ROW *row)
SCIP_RETCODE SCIPlpiEndStrongbranch(SCIP_LPI *lpi)
void SCIPsortIntPtrIntReal(int *intarray1, void **ptrarray, int *intarray2, SCIP_Real *realarray, int len)
void SCIPintervalMul(SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2)
SCIP_RETCODE SCIPlpWrite(SCIP_LP *lp, const char *fname)
SCIP_Bool SCIPlpIsSolBasic(SCIP_LP *lp)
static SCIP_RETCODE ensureLazycolsSize(SCIP_LP *lp, SCIP_SET *set, int num)
SCIP_RETCODE SCIPlpUpdateVarUbGlobal(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)
SCIP_Bool SCIPsetIsFeasIntegral(SCIP_SET *set, SCIP_Real val)
static void recomputeLooseObjectiveValue(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
SCIP_Bool SCIPcolIsIntegral(SCIP_COL *col)
static SCIP_RETCODE insertColChgcols(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp)
SCIP_Real SCIPcolGetUb(SCIP_COL *col)
static SCIP_RETCODE colAddCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val, int linkpos)
SCIP_Real SCIPrelDiff(SCIP_Real val1, SCIP_Real val2)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_BASESTAT SCIProwGetBasisStatus(SCIP_ROW *row)
SCIP_Real SCIPcolGetObj(SCIP_COL *col)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIP_Bool SCIPlpiIsStable(SCIP_LPI *lpi)
SCIP_Bool SCIPsetIsZero(SCIP_SET *set, SCIP_Real val)
SCIP_RETCODE SCIPlpIsInfeasibilityProved(SCIP_LP *lp, SCIP_SET *set, SCIP_Bool *proved)
static SCIP_RETCODE lpFlushAddRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
enum SCIP_Retcode SCIP_RETCODE
SCIP_RETCODE SCIPlpiFree(SCIP_LPI **lpi)
SCIP_RETCODE SCIPlpiChgObj(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *obj)
static SCIP_RETCODE lpSetBarrierconvtol(SCIP_LP *lp, SCIP_Real barrierconvtol, SCIP_Bool *success)
SCIP_Real SCIProwGetLPEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_RETCODE SCIPlpGetState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
SCIP_Real SCIPlpGetRootColumnObjval(SCIP_LP *lp)
void SCIPlpStartStrongbranchProbing(SCIP_LP *lp)
#define SCIPsetAllocBufferArray(set, ptr, num)
#define BMSfreeBlockMemoryNull(mem, ptr)
static SCIP_RETCODE lpCheckIntpar(SCIP_LP *lp, SCIP_LPPARAM lpparam, int value)
SCIP_RETCODE SCIProwChgCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val)
int SCIPvarGetProbindex(SCIP_VAR *var)
SCIP_RETCODE SCIPlpiGetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int *ival)
enum SCIP_VerbLevel SCIP_VERBLEVEL
#define DIVESTACKGROWFACT
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
int SCIPcolGetLPDepth(SCIP_COL *col)
void SCIPintervalSetBounds(SCIP_INTERVAL *resultant, SCIP_Real inf, SCIP_Real sup)
enum SCIP_LPParam SCIP_LPPARAM
SCIP_RETCODE SCIPlpRemoveNewObsoletes(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPlpiGetSides(SCIP_LPI *lpi, int firstrow, int lastrow, SCIP_Real *lhss, SCIP_Real *rhss)
SCIP_Real SCIPsetRound(SCIP_SET *set, SCIP_Real val)
static SCIP_RETCODE lpSetLPInfo(SCIP_LP *lp, SCIP_Bool lpinfo)
static void freeDiveChgSideArrays(SCIP_LP *lp)
#define BMSallocMemoryArray(ptr, num)
SCIP_Real SCIProwGetNLPEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
static void rowAddNorms(SCIP_ROW *row, SCIP_SET *set, SCIP_COL *col, SCIP_Real val, SCIP_Bool updateidxvals)
SCIP_RETCODE SCIPlpEndDive(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_VAR **vars, int nvars)
SCIP_RETCODE SCIProwMakeIntegral(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Bool *success)
SCIP_Real relpseudoobjval
static SCIP_RETCODE lpSetPresolving(SCIP_LP *lp, SCIP_Bool presolving, SCIP_Bool *success)
SCIP_RETCODE SCIPlpSolveAndEval(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_Longint itlim, SCIP_Bool limitresolveiters, SCIP_Bool aging, SCIP_Bool keepsol, SCIP_Bool *lperror)
SCIP_CLOCK * barrierlptime
static SCIP_RETCODE updateLazyBounds(SCIP_LP *lp, SCIP_SET *set)
SCIP_ROW ** SCIPlpGetRows(SCIP_LP *lp)
static SCIP_RETCODE lpFlushDelCols(SCIP_LP *lp)
static void lpUpdateObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real deltaval, int deltainf, SCIP_Bool local, SCIP_Bool loose, SCIP_Bool global)
SCIP_Real SCIPlpGetPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
SCIP_Real rootlooseobjval
SCIP_RETCODE SCIPcolIncCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real incval)
SCIP_RETCODE SCIPlpCleanupAll(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool root)
SCIP_RETCODE SCIPcolDelCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row)
SCIP_Real SCIPlpGetCutoffbound(SCIP_LP *lp)
SCIP_RETCODE SCIProwCreate(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_ROWORIGINTYPE origintype, void *origin, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
SCIP_RETCODE SCIPlpUpdateAges(SCIP_LP *lp, SCIP_STAT *stat)
static SCIP_RETCODE colStoreSolVals(SCIP_COL *col, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPlpSetNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS *lpinorms)
static int colSearchCoef(SCIP_COL *col, const SCIP_ROW *row)
#define SCIP_EVENTTYPE_ROWDELETEDLP
SCIP_Bool SCIPsetIsNegative(SCIP_SET *set, SCIP_Real val)
SCIP_ROWORIGINTYPE SCIProwGetOrigintype(SCIP_ROW *row)
static SCIP_RETCODE lpSetPricing(SCIP_LP *lp, SCIP_PRICING pricing)
static void rowSortNonLP(SCIP_ROW *row)
static SCIP_RETCODE ensureChgcolsSize(SCIP_LP *lp, SCIP_SET *set, int num)
#define SCIPsetFreeBufferArray(set, ptr)
enum SCIP_LPSolStat SCIP_LPSOLSTAT
#define BMSfreeMemory(ptr)
SCIP_RETCODE SCIPlpEndProbing(SCIP_LP *lp)
static SCIP_RETCODE lpSetRealpar(SCIP_LP *lp, SCIP_LPPARAM lpparam, SCIP_Real value, SCIP_Bool *success)
SCIP_Real SCIPsetSumFloor(SCIP_SET *set, SCIP_Real val)
static SCIP_RETCODE reallocDiveChgSideArrays(SCIP_LP *lp, int minsize, SCIP_Real growfact)
enum SCIP_Pricing SCIP_PRICING
SCIP_Bool flushdeletedcols
SCIP_Bool SCIPlpiIsObjlimExc(SCIP_LPI *lpi)
SCIP_RETCODE SCIProwIncCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real incval)
SCIP_RETCODE SCIPlpiGetNCols(SCIP_LPI *lpi, int *ncols)
SCIP_Real SCIProwGetDualsol(SCIP_ROW *row)
static SCIP_RETCODE lpAlgorithm(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPALGO lpalgo, SCIP_Bool resolve, SCIP_Bool keepsol, SCIP_Bool *timelimit, SCIP_Bool *lperror)
unsigned int lprowssorted
SCIP_LPSOLSTAT SCIPlpGetSolstat(SCIP_LP *lp)
#define SCIPstatIncrement(stat, set, field)
SCIP_Longint SCIPcolGetStrongbranchLPAge(SCIP_COL *col, SCIP_STAT *stat)
internal methods for LP management
static SCIP_RETCODE lpUpdateVarColumnProved(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
static void recomputeGlbPseudoObjectiveValue(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
SCIP_Bool SCIPlpIsRootLPRelax(SCIP_LP *lp)
SCIP_Bool objsqrnormunreliable
SCIP_RETCODE SCIPlpRecordOldRowSideDive(SCIP_LP *lp, SCIP_ROW *row, SCIP_SIDETYPE sidetype)
SCIP_Bool divelpwasdualfeas
SCIP_Bool strongbranching
SCIP_Real SCIPsolGetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)
int SCIPlpGetNCols(SCIP_LP *lp)
static void checkLazyBounds(SCIP_LP *lp, SCIP_SET *set)
SCIP_Bool SCIPlpiIsTimelimExc(SCIP_LPI *lpi)
#define SCIP_DEFAULT_EPSILON
static SCIP_RETCODE lpSolveStable(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LPALGO lpalgo, int itlim, int harditlim, SCIP_Bool resolve, int fastmip, SCIP_Bool tightprimfeastol, SCIP_Bool tightdualfeastol, SCIP_Bool fromscratch, SCIP_Bool keepsol, SCIP_Bool *timelimit, SCIP_Bool *lperror)
SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIProwIsInLP(SCIP_ROW *row)
SCIP_Bool SCIPsetIsEfficacious(SCIP_SET *set, SCIP_Bool root, SCIP_Real efficacy)
static SCIP_RETCODE colLink(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_Bool SCIPrealToRational(SCIP_Real val, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Longint *nominator, SCIP_Longint *denominator)
SCIP_RETCODE SCIPrealarrayIncVal(SCIP_REALARRAY *realarray, int arraygrowinit, SCIP_Real arraygrowfac, int idx, SCIP_Real incval)
static void rowDelNorms(SCIP_ROW *row, SCIP_SET *set, SCIP_COL *col, SCIP_Real val, SCIP_Bool forcenormupdate, SCIP_Bool updateindex, SCIP_Bool updateval)
SCIP_Real SCIPlpGetRootObjval(SCIP_LP *lp)
SCIP_Real SCIPcolCalcRedcost(SCIP_COL *col, SCIP_Real *dualsol)
static void rowCalcIdxsAndVals(SCIP_ROW *row, SCIP_SET *set)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
void SCIProwForceSort(SCIP_ROW *row, SCIP_SET *set)
SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPlpCleanupNew(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool root)
SCIP_Bool SCIPsetIsSumLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPlpSetState(SCIP_LP *lp, 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 SCIProwCatchEvent(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_RETCODE SCIPlpiGetNRows(SCIP_LPI *lpi, int *nrows)
SCIP_Real lpibarrierconvtol
SCIP_RETCODE SCIPcolAddCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val)
int SCIPlpGetNNewcols(SCIP_LP *lp)
SCIP_RETCODE SCIPlpUpdateVarUb(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)
SCIP_Real SCIProwGetSumNorm(SCIP_ROW *row)
#define BMSduplicateBlockMemoryArray(mem, ptr, source, num)
static SCIP_RETCODE rowUnlink(SCIP_ROW *row, SCIP_SET *set, SCIP_LP *lp)
static SCIP_RETCODE lpUpdateVarLooseProved(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
static SCIP_RETCODE colRestoreSolVals(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_Longint validlp, SCIP_Bool freebuffer)
SCIP_RETCODE SCIPlpStartDive(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
SCIP_Real SCIPcolGetPrimsol(SCIP_COL *col)
int SCIProwGetMinidx(SCIP_ROW *row, SCIP_SET *set)
SCIP_RETCODE SCIPlpStartProbing(SCIP_LP *lp)
SCIP_RETCODE SCIProwChgLhs(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real lhs)
void SCIProwSort(SCIP_ROW *row)
SCIP_Bool SCIPlpiIsPrimalFeasible(SCIP_LPI *lpi)
SCIP_Real lpirowrepswitch
static SCIP_RETCODE lpFlushDelRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set)
SCIP_RETCODE SCIPeventfilterAdd(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_RETCODE SCIPlpWriteMip(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *fname, SCIP_Bool genericnames, SCIP_Bool origobj, SCIP_OBJSENSE objsense, SCIP_Real objscale, SCIP_Real objoffset, SCIP_Bool lazyconss)
SCIP_Bool divelpwasdualchecked
SCIP_Bool SCIPlpIsPrimalReliable(SCIP_LP *lp)
SCIP_BOUNDTYPE SCIPboundtypeOpposite(SCIP_BOUNDTYPE boundtype)
internal methods for storing and manipulating the main problem
static SCIP_Bool isIntegralScalar(SCIP_Real val, SCIP_Real scalar, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Real *intval)
SCIP_Real SCIPsetLpfeastol(SCIP_SET *set)
void SCIPmessagePrintVerbInfo(SCIP_MESSAGEHDLR *messagehdlr, SCIP_VERBLEVEL verblevel, SCIP_VERBLEVEL msgverblevel, const char *formatstr,...)
static SCIP_RETCODE lpSetSolutionPolishing(SCIP_LP *lp, SCIP_Bool polishing, SCIP_Bool *success)
void SCIPlpDecNLoosevars(SCIP_LP *lp)
interval arithmetics for provable bounds
SCIP_Bool SCIPlpIsDualReliable(SCIP_LP *lp)
void SCIPsortPtrRealInt(void **ptrarray, SCIP_Real *realarray, int *intarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
SCIP_ROW ** SCIPcolGetRows(SCIP_COL *col)
SCIP_RETCODE SCIPlpAddCol(SCIP_LP *lp, SCIP_SET *set, SCIP_COL *col, int depth)
SCIP_Real SCIPintervalGetInf(SCIP_INTERVAL interval)
static void colSortNonLP(SCIP_COL *col)
SCIP_RETCODE SCIPlpiGetBounds(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *lbs, SCIP_Real *ubs)
SCIP_RETCODE SCIPlpShrinkCols(SCIP_LP *lp, SCIP_SET *set, int newncols)
SCIP_COL ** SCIPlpGetCols(SCIP_LP *lp)
SCIP_Bool SCIProwIsLocal(SCIP_ROW *row)
static SCIP_Real colCalcInternalFarkasCoef(SCIP_COL *col)
SCIPInterval sqrt(const SCIPInterval &x)
SCIP_RETCODE SCIPlpiFreeState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
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_Bool SCIPlpiHasDualRay(SCIP_LPI *lpi)
static SCIP_RETCODE lpCleanupRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int firstrow)
static SCIP_RETCODE lpCopyIntegrality(SCIP_LP *lp, SCIP_SET *set)
SCIP_RETCODE SCIProwChgLocal(SCIP_ROW *row, SCIP_Bool local)
SCIP_Longint validfarkaslp
SCIP_RETCODE SCIPlpSumRows(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real *weights, SCIP_REALARRAY *sumcoef, SCIP_Real *sumlhs, SCIP_Real *sumrhs)
SCIP_Longint validactivitybdsdomchg
void SCIPlpMarkSize(SCIP_LP *lp)
SCIP_Real SCIPsetBarrierconvtol(SCIP_SET *set)
SCIP_Real SCIPcolGetLb(SCIP_COL *col)
#define SCIP_EVENTTYPE_ROWCONSTCHANGED
struct SCIP_EventData SCIP_EVENTDATA
const char * SCIPvarGetName(SCIP_VAR *var)
static SCIP_RETCODE rowAddCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val, int linkpos)
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
SCIP_Real SCIPlpiInfinity(SCIP_LPI *lpi)
SCIP_Bool SCIProwIsIntegral(SCIP_ROW *row)
SCIP_RETCODE SCIPlpiDelRows(SCIP_LPI *lpi, int firstrow, int lastrow)
void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
SCIP_Real SCIProwGetNLPFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
SCIP_RETCODE SCIPlpiChgSides(SCIP_LPI *lpi, int nrows, const int *ind, const SCIP_Real *lhs, const SCIP_Real *rhs)
SCIP_RETCODE SCIPlpiStartStrongbranch(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpGetUnboundedSol(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *rayfeasible)
void SCIProwDelaySort(SCIP_ROW *row)
SCIP_RETCODE SCIPlpiGetObjval(SCIP_LPI *lpi, SCIP_Real *objval)
SCIP_Real SCIProwGetPseudoFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
SCIP_RETCODE SCIPlpAddRow(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_ROW *row, int depth)
internal miscellaneous methods
SCIP_CONSHDLR * SCIProwGetOriginCons(SCIP_ROW *row)
static SCIP_RETCODE lpPrimalSimplex(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool resolve, SCIP_Bool keepsol, SCIP_Bool *lperror)
SCIP_Real SCIPlpGetObjNorm(SCIP_LP *lp)
SCIP_Longint nprimalresolvelpiterations
SCIP_LPSOLVALS * storedsolvals
static SCIP_RETCODE lpSetFeastol(SCIP_LP *lp, SCIP_Real feastol, SCIP_Bool *success)
const char * SCIPlpiGetSolverName(void)
SCIP_RETCODE SCIPlpGetDualfarkas(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat)
internal methods for global SCIP settings
SCIP_Bool SCIPlpiIsOptimal(SCIP_LPI *lpi)
SCIP_Bool SCIPsetIsFeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPvarGetLbLazy(SCIP_VAR *var)
static void rowCalcActivityBounds(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
int SCIPlpGetNRows(SCIP_LP *lp)
void SCIPmessagePrintInfo(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
SCIP_Longint nlpsaftercreation
void SCIPlpMarkDivingObjChanged(SCIP_LP *lp)
SCIP_Longint nduallpiterations
#define SCIPstatAdd(stat, set, field, val)
void SCIPintervalSet(SCIP_INTERVAL *resultant, SCIP_Real value)
SCIP_Real SCIProwGetRhs(SCIP_ROW *row)
static SCIP_RETCODE lpFlushChgCols(SCIP_LP *lp, SCIP_SET *set)
SCIP_Bool SCIPlpiIsPrimalInfeasible(SCIP_LPI *lpi)
#define MAXNUMTROUBLELPMSGS
SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
#define lpCutoffDisabled(set)
SCIP_LPI * SCIPlpGetLPI(SCIP_LP *lp)
SCIP_Real SCIPlpGetObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
void SCIProwPrint(SCIP_ROW *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
static SCIP_RETCODE rowLink(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
SCIP_Bool SCIProwIsModifiable(SCIP_ROW *row)
static SCIP_RETCODE colDelCoefPos(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, int pos)
SCIP_RETCODE SCIPlpiDelRowset(SCIP_LPI *lpi, int *dstat)
SCIP_Real glbpseudoobjval
SCIP_Bool SCIPsetIsFeasLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_COL ** SCIProwGetCols(SCIP_ROW *row)
SCIP_Bool SCIProwIsSolEfficacious(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Bool root)
SCIP_Longint nprimalresolvelps
SCIP_SIDETYPE * divechgsidetypes
static SCIP_RETCODE rowSideChanged(SCIP_ROW *row, SCIP_SET *set, SCIP_LP *lp, SCIP_SIDETYPE sidetype)
SCIP_RETCODE SCIPlpStartStrongbranch(SCIP_LP *lp)
SCIP_CLOCK * divinglptime
static SCIP_RETCODE rowEventSideChanged(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_SIDETYPE side, SCIP_Real oldval, SCIP_Real newval)
static SCIP_RETCODE allocDiveChgSideArrays(SCIP_LP *lp, int initsize)
SCIP_RETCODE SCIPlpiGetSol(SCIP_LPI *lpi, SCIP_Real *objval, SCIP_Real *primsol, SCIP_Real *dualsol, SCIP_Real *activity, SCIP_Real *redcost)
static void colUpdateAddLP(SCIP_COL *col, SCIP_SET *set)
SCIP_RETCODE SCIProwRelease(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
static SCIP_RETCODE lpSolve(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LPALGO lpalgo, int resolveitlim, int harditlim, SCIP_Bool needprimalray, SCIP_Bool needdualray, SCIP_Bool resolve, int fastmip, SCIP_Bool tightprimfeastol, SCIP_Bool tightdualfeastol, SCIP_Bool fromscratch, SCIP_Bool keepsol, SCIP_Bool *lperror)
SCIP_Real SCIProwGetSolActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)
int SCIPcolGetIndex(SCIP_COL *col)
#define BMSfreeBlockMemory(mem, ptr)
internal methods for problem variables
static void computeLPBounds(SCIP_LP *lp, SCIP_SET *set, SCIP_COL *col, SCIP_Real lpiinf, SCIP_Real *lb, SCIP_Real *ub)
SCIP_RETCODE SCIPlpGetBasisInd(SCIP_LP *lp, int *basisind)
SCIP_Bool SCIPsetIsIntegral(SCIP_SET *set, SCIP_Real val)
SCIP_Real * SCIProwGetVals(SCIP_ROW *row)
SCIP_Real SCIPlpGetRootLooseObjval(SCIP_LP *lp)
SCIP_RETCODE SCIPlpClear(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
void SCIPlpRecomputeLocalAndGlobalPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
SCIP_Real SCIPsetSumepsilon(SCIP_SET *set)
SCIP_Longint ndualresolvelps
#define BMSallocBlockMemoryArray(mem, ptr, num)
SCIP_RETCODE SCIPlpiSetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int ival)
static void recomputePseudoObjectiveValue(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
void SCIPprintSysError(const char *message)
static SCIP_RETCODE lpDelRowset(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int *rowdstat)
enum SCIP_Objsense SCIP_OBJSENSE
SCIP_RETCODE SCIPlpFree(SCIP_LP **lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPlpiGetPrimalRay(SCIP_LPI *lpi, SCIP_Real *ray)
SCIP_Real SCIPcolGetBestBound(SCIP_COL *col)
static void rowMerge(SCIP_ROW *row, SCIP_SET *set)
#define SCIP_EVENTTYPE_ROWCOEFCHANGED
static SCIP_Real colCalcInternalRedcost(SCIP_COL *col)
SCIP_RETCODE SCIPeventCreateRowSideChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_SIDETYPE side, SCIP_Real oldval, SCIP_Real newval)
SCIP_ROW ** SCIPlpGetNewrows(SCIP_LP *lp)
SCIP_Real SCIPvarGetNLPSol(SCIP_VAR *var)
SCIP_RETCODE SCIPlpiSetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real dval)
SCIP_Longint validfarkaslp
static SCIP_RETCODE ensureRowsSize(SCIP_LP *lp, SCIP_SET *set, int num)
SCIP_RETCODE SCIPlpGetBInvRow(SCIP_LP *lp, int r, SCIP_Real *coef, int *inds, int *ninds)
SCIP_RETCODE SCIPlpiSetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, const SCIP_LPINORMS *lpinorms)
#define BMSfreeBlockMemoryArray(mem, ptr, num)
SCIP_Bool SCIPlpDivingObjChanged(SCIP_LP *lp)
SCIP_RETCODE SCIPcolChgLb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newlb)
static int colSearchCoefPart(SCIP_COL *col, const SCIP_ROW *row, int minpos, int maxpos)
SCIP_Bool updateintegrality
SCIP_Real SCIPvarGetUnchangedObj(SCIP_VAR *var)
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)
#define DIVESTACKINITSIZE
SCIP_Bool lpihaspolishing
void SCIPcolSetStrongbranchData(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real lpobjval, SCIP_Real primsol, SCIP_Real sbdown, SCIP_Real sbup, SCIP_Bool sbdownvalid, SCIP_Bool sbupvalid, SCIP_Longint iter, int itlim)
SCIP_Bool SCIPcolIsRemovable(SCIP_COL *col)
static SCIP_RETCODE rowDelCoefPos(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, int pos)
SCIP_Bool SCIPprobAllColsInLP(SCIP_PROB *prob, SCIP_SET *set, SCIP_LP *lp)
SCIP_Bool divelpwasprimchecked
SCIP_RETCODE SCIPlpiGetBase(SCIP_LPI *lpi, int *cstat, int *rstat)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
void SCIPintervalAdd(SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2)
SCIP_RETCODE SCIProwDelCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col)
SCIP_RETCODE SCIPlpiSolvePrimal(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpCreate(SCIP_LP **lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, const char *name)
SCIP_RETCODE SCIPlpGetBase(SCIP_LP *lp, int *cstat, int *rstat)
SCIP_RETCODE SCIPlpiDelColset(SCIP_LPI *lpi, int *dstat)
unsigned int lpcolssorted
SCIP_Bool divinglazyapplied
SCIP_RETCODE SCIPsetSetCharParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, char value)
void SCIPlpSetSizeMark(SCIP_LP *lp, int nrows, int ncols)
SCIP_Real SCIProwGetDualfarkas(SCIP_ROW *row)
SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)
static void colSortLP(SCIP_COL *col)
SCIP_Real SCIPvarGetRelaxSol(SCIP_VAR *var, SCIP_SET *set)
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_Real SCIProwGetSolEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)
SCIP_RETCODE SCIPlpiWriteLP(SCIP_LPI *lpi, const char *fname)
SCIP_Real SCIProwGetRelaxEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
static SCIP_RETCODE ensureColsSize(SCIP_LP *lp, SCIP_SET *set, int num)
SCIP_Bool SCIPlpiExistsPrimalRay(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpRemoveRedundantRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
SCIP_Bool SCIPsetIsFeasLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPsetIsSumEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_Longint validredcostlp
SCIP_RETCODE SCIPcolChgUb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newub)
static int rowSearchCoef(SCIP_ROW *row, const SCIP_COL *col)
SCIP_LPISTATE * divelpistate
SCIP_RETCODE SCIPlpGetNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
SCIP_RETCODE SCIPsetGetCharParam(SCIP_SET *set, const char *name, char *value)
SCIP_RETCODE SCIProwDropEvent(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_RETCODE SCIPcolFree(SCIP_COL **col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
void SCIPcolPrint(SCIP_COL *col, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
static int lpGetResolveItlim(SCIP_SET *set, SCIP_STAT *stat, int itlim)
static int rowSearchCoefPart(SCIP_ROW *row, const SCIP_COL *col, int minpos, int maxpos)
SCIP_RETCODE SCIPeventCreateRowCoefChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_COL *col, SCIP_Real oldval, SCIP_Real newval)
int SCIProwGetRank(SCIP_ROW *row)
static void getObjvalDeltaObj(SCIP_SET *set, SCIP_Real oldobj, SCIP_Real newobj, SCIP_Real lb, SCIP_Real ub, SCIP_Real *deltaval, int *deltainf)
SCIP_CLOCK * lexduallptime
SCIP_Real SCIPcolGetMinPrimsol(SCIP_COL *col)
SCIP_RETCODE SCIPlpiGetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
SCIP_RETCODE SCIPlpReset(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPcolGetStrongbranches(SCIP_COL **cols, int ncols, SCIP_Bool integral, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *lperror)
void SCIProwLock(SCIP_ROW *row)
SCIP_Bool SCIPsetIsDualfeasPositive(SCIP_SET *set, SCIP_Real val)
SCIP_Real SCIProwGetMaxActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
static void getObjvalDeltaLb(SCIP_SET *set, SCIP_Real obj, SCIP_Real oldlb, SCIP_Real newlb, SCIP_Real *deltaval, int *deltainf)
static SCIP_RETCODE lpBarrier(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool crossover, SCIP_Bool keepsol, SCIP_Bool *lperror)
SCIP_Longint nrootlpiterations
SCIP_Real SCIProwGetParallelism(SCIP_ROW *row1, SCIP_ROW *row2, char orthofunc)
#define checkRowObjprod(row)
SCIP_Real SCIPlpGetLooseObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
static SCIP_RETCODE provedBound(SCIP_LP *lp, SCIP_SET *set, SCIP_Bool usefarkas, SCIP_Real *bound)
static void markRowDeleted(SCIP_ROW *row)
SCIP_Real SCIPlpGetModifiedPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype)
static SCIP_RETCODE rowRestoreSolVals(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_Longint validlp, SCIP_Bool freebuffer, SCIP_Bool infeasible)
static SCIP_RETCODE lpCheckRealpar(SCIP_LP *lp, SCIP_LPPARAM lpparam, SCIP_Real value)
SCIP_CLOCK * strongbranchtime
SCIP_RETCODE SCIPlpiSetIntegralityInformation(SCIP_LPI *lpi, int ncols, int *intInfo)
SCIP_RETCODE SCIPlpiChgBounds(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *lb, const SCIP_Real *ub)
static SCIP_RETCODE rowEventCoefChanged(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_COL *col, SCIP_Real oldval, SCIP_Real newval)
SCIP_Real relglbpseudoobjval
SCIP_Real SCIProwGetConstant(SCIP_ROW *row)
static SCIP_RETCODE lpRemoveObsoleteCols(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, int firstcol)
void SCIPlpStoreRootObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
int SCIPcolGetNNonz(SCIP_COL *col)
SCIP_Bool SCIProwIsLPEfficacious(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Bool root)
SCIP_Bool SCIPlpiIsIterlimExc(SCIP_LPI *lpi)
SCIP_RETCODE SCIPlpiGetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
SCIP_Longint validpsactivitydomchg
SCIP_COLSOLVALS * storedsolvals
SCIP_Real SCIProwGetMinActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
SCIP_Bool strongbranchprobing
SCIP_VAR * SCIPcolGetVar(SCIP_COL *col)
static void rowUpdateDelLP(SCIP_ROW *row)
SCIP_RETCODE SCIPlpSetCutoffbound(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real cutoffbound)
static const SCIP_Real scalars[]
internal methods for main solving loop and node processing
void SCIPmessageVFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr, va_list ap)
SCIP_ROWSOLVALS * storedsolvals
void SCIProwChgRank(SCIP_ROW *row, int rank)
SCIP_RETCODE SCIPlpMarkFlushed(SCIP_LP *lp, SCIP_SET *set)
static void coefChanged(SCIP_ROW *row, SCIP_COL *col, SCIP_LP *lp)
SCIP_RETCODE SCIPlpiCreate(SCIP_LPI **lpi, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_OBJSEN objsen)
SCIP_RETCODE SCIPeventfilterFree(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set)
#define SCIP_EVENTTYPE_FORMAT
static SCIP_RETCODE lpFlushChgRows(SCIP_LP *lp, SCIP_SET *set)
SCIP_CLOCK * primallptime
SCIP_RETCODE SCIPlpUpdateVarObj(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
SCIP_Real SCIPsetSumCeil(SCIP_SET *set, SCIP_Real val)
#define BMSfreeMemoryNull(ptr)
unsigned int inglobalcutpool
#define checkRowSqrnorm(row)
static SCIP_RETCODE lpRemoveObsoleteRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int firstrow)
#define SCIP_DEFAULT_SUMEPSILON
static SCIP_RETCODE lpUpdateVarColumn(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
static SCIP_RETCODE ensureChgrowsSize(SCIP_LP *lp, SCIP_SET *set, int num)
public methods for message output
static void rowCalcNorms(SCIP_ROW *row, SCIP_SET *set)
SCIP_Bool divelpwasprimfeas
#define SCIPstatUpdate(stat, set, field, val)
void SCIPmessageFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)
SCIP_Real SCIProwGetLPFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_Bool SCIPsetIsGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
int SCIPcolGetNStrongbranchs(SCIP_COL *col)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
int SCIProwGetLPPos(SCIP_ROW *row)
SCIP_RETCODE SCIPcolGetStrongbranch(SCIP_COL *col, SCIP_Bool integral, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *lperror)
internal methods for problem statistics
SCIP_Bool SCIPlpIsSolved(SCIP_LP *lp)
SCIP_Real SCIProwGetObjParallelism(SCIP_ROW *row, SCIP_SET *set, SCIP_LP *lp)
SCIP_Bool SCIPsetIsFeasPositive(SCIP_SET *set, SCIP_Real val)
SCIP_RETCODE SCIPrealarrayExtend(SCIP_REALARRAY *realarray, int arraygrowinit, SCIP_Real arraygrowfac, int minidx, int maxidx)
SCIP_Real SCIPsetDualfeastol(SCIP_SET *set)
static SCIP_RETCODE lpSetUobjlim(SCIP_LP *lp, SCIP_SET *set, SCIP_Real uobjlim)
#define SCIPsetDebugMsgPrint
SCIP_Real SCIPcolGetFarkasValue(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_RETCODE SCIPlpiGetSolFeasibility(SCIP_LPI *lpi, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
#define BMSallocMemory(ptr)
SCIP_RETCODE SCIPlpUpdateVarLoose(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
#define BMSreallocMemoryArray(ptr, num)
SCIP_RETCODE SCIProwChgRhs(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real rhs)
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_Bool SCIPlpIsRelax(SCIP_LP *lp)
SCIP_BOUNDTYPE SCIPvarGetBestBoundType(SCIP_VAR *var)
SCIP_Bool SCIPsetIsDualfeasZero(SCIP_SET *set, SCIP_Real val)
static const char * lpalgoName(SCIP_LPALGO lpalgo)
static SCIP_RETCODE lpSetPricingChar(SCIP_LP *lp, char pricingchar)
SCIP_RETCODE SCIPlpiGetIterations(SCIP_LPI *lpi, int *iterations)
SCIP_RETCODE SCIPlpiGetBInvRow(SCIP_LPI *lpi, int r, SCIP_Real *coef, int *inds, int *ninds)
int SCIProwGetLPDepth(SCIP_ROW *row)
SCIP_RETCODE SCIPlpGetPrimalRay(SCIP_LP *lp, SCIP_SET *set, SCIP_Real *ray)
SCIP_Longint nprimallpiterations
static SCIP_RETCODE lpSetIterationLimit(SCIP_LP *lp, int itlim)
SCIP_RETCODE SCIProwCalcIntegralScalar(SCIP_ROW *row, SCIP_SET *set, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Real *intscalar, SCIP_Bool *success)
SCIP_RETCODE SCIPlpiDelCols(SCIP_LPI *lpi, int firstcol, int lastcol)
SCIP_Bool lpisolutionpolishing
SCIP_Bool SCIPsetIsFeasGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPlpGetBInvARow(SCIP_LP *lp, int r, SCIP_Real *binvrow, SCIP_Real *coef, int *inds, int *ninds)
void SCIProwMarkNotRemovableLocal(SCIP_ROW *row, SCIP_STAT *stat)
int SCIPsetInitializeRandomSeed(SCIP_SET *set, int initialseedvalue)
int SCIProwGetIndex(SCIP_ROW *row)
void SCIPintervalSub(SCIP_Real infinity, SCIP_INTERVAL *resultant, SCIP_INTERVAL operand1, SCIP_INTERVAL operand2)
static SCIP_RETCODE colEnsureSize(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
SCIP_Real SCIProwGetMaxval(SCIP_ROW *row, SCIP_SET *set)
SCIP_Real SCIPcolGetFarkasCoef(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_Real SCIProwGetLPActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
static SCIP_RETCODE lpSetScaling(SCIP_LP *lp, int scaling, SCIP_Bool *success)
SCIP_Bool SCIPlpiHasPrimalRay(SCIP_LPI *lpi)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
#define BMSallocBlockMemory(mem, ptr)
SCIP_Bool SCIPsetIsDualfeasNegative(SCIP_SET *set, SCIP_Real val)
void SCIPcolSort(SCIP_COL *col)
SCIP_Real SCIPcolGetFeasibility(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_Longint obsoletenode
SCIP_DECL_SORTPTRCOMP(SCIProwComp)
#define BMSclearMemoryArray(ptr, num)
SCIP_RETCODE SCIPlpGetBInvACol(SCIP_LP *lp, int c, SCIP_Real *coef, int *inds, int *ninds)
SCIP_RETCODE SCIPlpUpdateVarColumn(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
SCIP_Longint obsoletenode
common defines and data types used in all packages of SCIP
SCIP_Real SCIPlpGetModifiedProvedPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype)
static SCIP_Real getFinitePseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
struct BMS_BlkMem BMS_BLKMEM
void SCIPcolInvalidateStrongbranchData(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_RETCODE SCIPlpUpdateDelVar(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
static SCIP_RETCODE rowEventConstantChanged(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_Real oldval, SCIP_Real newval)
static SCIP_RETCODE lpSetRandomseed(SCIP_LP *lp, int randomseed, SCIP_Bool *success)
SCIP_COL ** SCIPlpGetNewcols(SCIP_LP *lp)
SCIP_Real SCIPcolGetMaxPrimsol(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)
unsigned int validminmaxidx
SCIP_Real SCIPcolGetRedcost(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
SCIP_RETCODE SCIPlpGetSol(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
SCIP_Real SCIPlpGetColumnObjval(SCIP_LP *lp)
void SCIProwRecalcPseudoActivity(SCIP_ROW *row, SCIP_STAT *stat)
static SCIP_RETCODE lpSetThreads(SCIP_LP *lp, int threads, SCIP_Bool *success)
static SCIP_RETCODE ensureLpicolsSize(SCIP_LP *lp, SCIP_SET *set, int num)
static SCIP_RETCODE rowChgCoefPos(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, int pos, SCIP_Real val)
int SCIPcolGetNLPNonz(SCIP_COL *col)
static SCIP_RETCODE lpSetIntpar(SCIP_LP *lp, SCIP_LPPARAM lpparam, int value, SCIP_Bool *success)
unsigned int nonlpcolssorted
int SCIPcolGetLPPos(SCIP_COL *col)
SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)
static SCIP_RETCODE lpLexDualSimplex(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool resolve, SCIP_Bool keepsol, SCIP_Bool *lperror)
SCIP_Longint SCIProwGetNLPsAfterCreation(SCIP_ROW *row)
SCIP_Bool glbpseudoobjvalid
SCIP_Longint SCIPcalcGreComDiv(SCIP_Longint val1, SCIP_Longint val2)
static SCIP_RETCODE lpCheckBoolpar(SCIP_LP *lp, SCIP_LPPARAM lpparam, SCIP_Bool value)
SCIP_RETCODE SCIPlpEndStrongbranch(SCIP_LP *lp)
SCIP_Real SCIProwGetNorm(SCIP_ROW *row)
static SCIP_RETCODE lpDualSimplex(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool resolve, SCIP_Bool keepsol, SCIP_Bool *lperror)
void SCIPlpUnmarkDivingObjChanged(SCIP_LP *lp)
#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)
static void rowMoveCoef(SCIP_ROW *row, int oldpos, int newpos)
static void lpUpdateObjNorms(SCIP_LP *lp, SCIP_SET *set, SCIP_Real oldobj, SCIP_Real newobj)
SCIP_Bool SCIPcolIsInLP(SCIP_COL *col)
SCIP_RETCODE SCIPlpiGetBasisInd(SCIP_LPI *lpi, int *bind)
SCIP_RETCODE SCIProwFree(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
SCIP_Bool flushdeletedrows
SCIP_Real SCIProwGetOrthogonality(SCIP_ROW *row1, SCIP_ROW *row2, char orthofunc)
SCIP_RETCODE SCIPlpiSolveBarrier(SCIP_LPI *lpi, SCIP_Bool crossover)
SCIP_Bool SCIPsetIsFeasNegative(SCIP_SET *set, SCIP_Real val)
static SCIP_RETCODE lpFlushAndSolve(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue, int resolveitlim, int harditlim, SCIP_Bool needprimalray, SCIP_Bool needdualray, int fastmip, SCIP_Bool tightprimfeastol, SCIP_Bool tightdualfeastol, SCIP_Bool fromscratch, SCIP_Bool keepsol, SCIP_Bool *lperror)
static void checkLazyColArray(SCIP_LP *lp, SCIP_SET *set)
SCIP_RETCODE SCIProwAddConstant(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real addval)
SCIP_RETCODE SCIPeventCreateRowConstChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_Real oldval, SCIP_Real newval)
void SCIProwUnlock(SCIP_ROW *row)
SCIP_RETCODE SCIPrealarrayClear(SCIP_REALARRAY *realarray)
SCIP_Real SCIPcolCalcFarkasCoef(SCIP_COL *col, SCIP_Real *dualfarkas)
SCIP_Real lpiconditionlimit
static SCIP_RETCODE lpSetTiming(SCIP_LP *lp, SCIP_CLOCKTYPE timing, SCIP_Bool enabled, SCIP_Bool *success)
SCIP_Bool SCIProwIsInGlobalCutpool(SCIP_ROW *row)
enum SCIP_SideType SCIP_SIDETYPE
#define checkRowSumnorm(row)