Skip to content

Commit 8d8c16e

Browse files
committed
Merge remote-tracking branch 'origin/v10-minor'
2 parents eb39bbd + 10cad11 commit 8d8c16e

File tree

6 files changed

+25
-23
lines changed

6 files changed

+25
-23
lines changed

src/scip/lpexact_bounding.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ SCIP_RETCODE projectShiftChooseDualSubmatrix(
189189
}
190190
else if( set->exact_psdualcolselection == (int) PS_DUALCOSTSEL_ACTIVE_EXLP )
191191
{
192-
/* determone which dual variables to include in the problem (in this case we choose dual variables whose primal
192+
/* determine which dual variables to include in the problem (in this case we choose dual variables whose primal
193193
* constraints are active at the solution of the exact LP at the root node)
194194
*/
195195

@@ -1860,9 +1860,10 @@ char chooseInitialBoundingMethod(
18601860
assert(lpexact != NULL);
18611861
assert(set != NULL);
18621862

1863+
/* at the root node always call exact LP solve if allowed, i.e., after separation */
18631864
if( set->scip->stat->nnodes == 1 && lpexact->allowexactsolve )
18641865
dualboundmethod = 'e';
1865-
/* first, check if we need to solve exactly */
1866+
/* check for other reasons to solve exactly */
18661867
else if( lpexact->forceexactsolve || SCIPlpGetSolstat(lpexact->fplp) == SCIP_LPSOLSTAT_UNBOUNDEDRAY )
18671868
dualboundmethod = 'e';
18681869
/* if the LP was solved to optimality and there are no fractional variables we solve exactly to generate a feasible
@@ -1882,11 +1883,11 @@ char chooseInitialBoundingMethod(
18821883
else
18831884
{
18841885
/* decide whether we want to interleave with exact LP call given freq: we do this if we are
1885-
* a) at depth levels 4, 8, 16, ..., or
1886+
* a) at depth levels 2, 4, 8, 16, ..., or
18861887
* b) almost at cutoffbound
18871888
*/
1888-
interleavedepth = set->exact_interleavedbfreq >= 2 && SCIPgetDepth(set->scip) > 0 && isPowerOfTwo(SCIPgetDepth(set->scip) - 1);
1889-
interleavecutoff = (set->exact_interleavedbfreq == 1 || set->exact_interleavedbfreq == 3)
1889+
interleavedepth = set->exact_interleavedbstrat >= 2 && SCIPgetDepth(set->scip) > 1 && isPowerOfTwo(SCIPgetDepth(set->scip));
1890+
interleavecutoff = (set->exact_interleavedbstrat == 1 || set->exact_interleavedbstrat == 3)
18901891
&& SCIPsetIsGE(set, SCIPlpGetObjval(lpexact->fplp, set, prob), SCIPlpGetCutoffbound(lpexact->fplp))
18911892
&& SCIPlpGetObjval(lpexact->fplp, set, prob) < SCIPlpGetCutoffbound(lpexact->fplp);
18921893
if( (interleavedepth || interleavecutoff) && lpexact->allowexactsolve )

src/scip/primal.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2445,7 +2445,7 @@ SCIP_RETCODE SCIPprimalTrySolFreeExact(
24452445
return SCIP_OKAY;
24462446
}
24472447

2448-
/** adds iexact primal solution to solution storage by copying it and frees the solution afterwards */
2448+
/** adds exact primal solution to solution storage by copying it and frees the solution afterwards */
24492449
SCIP_RETCODE SCIPprimalAddSolFreeExact(
24502450
SCIP_PRIMAL* primal, /**< primal data */
24512451
BMS_BLKMEM* blkmem, /**< block memory */

src/scip/primal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ SCIP_RETCODE SCIPprimalTrySolFreeExact(
432432
SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
433433
);
434434

435-
/** adds iexact primal solution to solution storage by copying it and frees the solution afterwards */
435+
/** adds exact primal solution to solution storage by copying it and frees the solution afterwards */
436436
SCIP_RETCODE SCIPprimalAddSolFreeExact(
437437
SCIP_PRIMAL* primal, /**< primal data */
438438
BMS_BLKMEM* blkmem, /**< block memory */

src/scip/set.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -535,8 +535,9 @@
535535
#define SCIP_DEFAULT_EXACT_IMPROVINGSOLS TRUE /**< should only exact solutions be checked which improve the primal bound? */
536536
#define SCIP_DEFAULT_EXACT_SAFEDBMETHOD 'a' /**< method for computing safe dual bounds
537537
* ('n'eumaier-shcherbina, 'p'roject-and-shift, 'e'xact LP, 'a'utomatic) */
538-
#define SCIP_DEFAULT_EXACT_INTERLEAVEDBFREQ 1 /**< frequency at which safe dual bounding method is interleaved with exact LP
539-
* solve (-1: never, 0: automatic, n > 0: every n-th node) */
538+
#define SCIP_DEFAULT_EXACT_INTERLEAVEDBSTRAT 1 /**< strategy to interleave safe dual bounding with exact LP solve (0: never,
539+
* 1: only close to cutoff bound, 2: only at depth lvl 2,4,8,16,...,
540+
* 3: close to cutoff bound OR at depth lvl 2,4,8,16,...) */
540541
#define SCIP_DEFAULT_EXACT_PSDUALCOLSELECTION 1 /**< strategy for dual column selection in project-and-shift to compute interior point
541542
* (0: no sel, 1: active rows of inexact primal LP, 2: active rows of exact primal LP) */
542543
#define SCIP_DEFAULT_EXACT_LPINFO FALSE /**< should the exact LP solver display status messages? */
@@ -2886,9 +2887,9 @@ SCIP_RETCODE SCIPsetCreate(
28862887
"strategy for dual column selection in project-and-shift to compute interior point (0: no sel, 1: active rows of inexact primal LP, 2: active rows of exact primal LP)",
28872888
&(*set)->exact_psdualcolselection, TRUE, SCIP_DEFAULT_EXACT_PSDUALCOLSELECTION, 0, 2, NULL, NULL) );
28882889
SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2889-
"exact/interleavedbfreq",
2890-
"strategy to interleave safe dual bounding with exact LP solve (0: never, 1: only close to cutoff bound, 2: only at depth lvl 4,8,16,..., 3: close to cutoff bound OR at depth lvl 4,8,16,...)",
2891-
&(*set)->exact_interleavedbfreq, FALSE, SCIP_DEFAULT_EXACT_INTERLEAVEDBFREQ, 0, 3, NULL, NULL) );
2890+
"exact/interleavedbstrat",
2891+
"strategy to interleave safe dual bounding with exact LP solve (0: never, 1: only close to cutoff bound, 2: only at depth lvl 2,4,8,16,..., 3: close to cutoff bound OR at depth lvl 2,4,8,16,...)",
2892+
&(*set)->exact_interleavedbstrat, FALSE, SCIP_DEFAULT_EXACT_INTERLEAVEDBSTRAT, 0, 3, NULL, NULL) );
28922893
SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
28932894
"exact/lpinfo",
28942895
"should the exact LP solver display status messages?",
@@ -2928,7 +2929,7 @@ SCIP_RETCODE SCIPsetCreate(
29282929
(*set)->exact_improvingsols = SCIP_DEFAULT_EXACT_IMPROVINGSOLS;
29292930
(*set)->exact_safedbmethod = SCIP_DEFAULT_EXACT_SAFEDBMETHOD;
29302931
(*set)->exact_psdualcolselection = SCIP_DEFAULT_EXACT_PSDUALCOLSELECTION;
2931-
(*set)->exact_interleavedbfreq = SCIP_DEFAULT_EXACT_INTERLEAVEDBFREQ;
2932+
(*set)->exact_interleavedbstrat = SCIP_DEFAULT_EXACT_INTERLEAVEDBSTRAT;
29322933
(*set)->exact_lpinfo = SCIP_DEFAULT_EXACT_LPINFO;
29332934
(*set)->exact_allownegslack = SCIP_DEFAULT_EXACT_ALLOWNEGSLACK;
29342935
(*set)->exact_cutmaxdenom = SCIP_DEFAULT_CUTMAXDENOM;

src/scip/struct_set.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -645,9 +645,9 @@ struct SCIP_Set
645645
/* exact SCIP settings */
646646
SCIP_Bool exact_enable; /**< should the problem be solved exactly (without numerical tolerances)? */
647647
SCIP_Bool exact_improvingsols; /**< should only exact solutions be checked which improve the primal bound? */
648-
int exact_interleavedbfreq; /**< strategy to interleave safe dual bounding with exact LP
649-
* solve (0: never, 1: only close to cutoff bound, 2: only at depth lvl 4,8,16,...,
650-
* 3: close to cutoff bound OR at depth lvl 4,8,16,...) */
648+
int exact_interleavedbstrat; /**< strategy to interleave safe dual bounding with exact LP
649+
* solve (0: never, 1: only close to cutoff bound, 2: only at depth lvl 2,4,8,16,...,
650+
* 3: close to cutoff bound OR at depth lvl 2,4,8,16,...) */
651651
char exact_safedbmethod; /**< method for computing safe dual bounds
652652
* ('n'eumaier-shcherbina, 'p'roject-and-shift, 'e'xact LP, 'a'utomatic) */
653653
int exact_psdualcolselection; /**< strategy for dual column selection in project-and-shift to compute interior point

src/scip/struct_stat.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -226,13 +226,13 @@ struct SCIP_Stat
226226
SCIP_Longint nstrongbranchs; /**< number of strong branching calls */
227227
SCIP_Longint nrootstrongbranchs; /**< number of strong branching calls at the root node */
228228
SCIP_Longint nconflictlps; /**< number of LPs solved during conflict analysis */
229-
SCIP_Longint nexlpinf; /**< number of LPs proved infeasible */
230-
SCIP_Longint nfailexlpinf; /**< number of LPs failed to prove infeasible */
231-
SCIP_Longint nexlp; /**< number of LPs proved feasible */
232-
SCIP_Longint nexlpinter; /**< number of LPs proved feasible */
233-
SCIP_Longint nexlpintfeas; /**< number of LPs proved feasible */
234-
SCIP_Longint nexlpboundexc; /**< number of LPs proved feasible */
235-
SCIP_Longint nfailexlp; /**< number of LPs failed to prove feasible */
229+
SCIP_Longint nexlpinf; /**< number of exact LPs solved to prove infeasibility */
230+
SCIP_Longint nfailexlpinf; /**< number of exact LPs failed to prove infeasibility */
231+
SCIP_Longint nexlp; /**< number of exact LPs solved for safe dual bounding */
232+
SCIP_Longint nexlpinter; /**< number of exact LPs solved because of depth interleaving */
233+
SCIP_Longint nexlpintfeas; /**< number of exact LPs solved for integrality polishing */
234+
SCIP_Longint nexlpboundexc; /**< number of exact LPs solved because close to cutoff bound */
235+
SCIP_Longint nfailexlp; /**< number of exact LPs failed to compute a safe dual bound */
236236
SCIP_Longint nboundshift; /**< number of boundshift calls for feasible lp*/
237237
SCIP_Longint nfailboundshift; /**< number of failed boundshift calls for feasible lp */
238238
SCIP_Longint nboundshiftinf; /**< number of boundshift calls for infeasible lp */

0 commit comments

Comments
 (0)