A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://scip.zib.de/doc/html/solve_8c_source.php below:

SCIP Doxygen Documentation: solve.c Source File

94#define MAXNLPERRORS 10 95#define MAXNCLOCKSKIPS 64 96#define NINITCALLS 1000L 97#define SAFETYFACTOR 1e-2 109

assert(stat !=

NULL

);

121 if

(

set

->limitchanged )

133 if

(

set

->misc_catchctrlc )

145 else if

(

set

->istimelimitfinite )

161 if

( (

SAFETYFACTOR

* (

set

->limit_time - currtime) / (avgisstoppedfreq + 1e-6)) < nclockskips )

170 if

( currtime >=

set

->limit_time )

201 else if

( checknodelimits &&

set

->limit_nodes >= 0 && stat->

nnodes

>=

set

->limit_nodes )

203 else if

( checknodelimits &&

set

->limit_totalnodes >= 0 && stat->

ntotalnodes

>=

set

->limit_totalnodes )

205 else if

( checknodelimits &&

set

->limit_stallnodes >= 0 && stat->

nnodes

>= stat->

bestsolnode

+

set

->limit_stallnodes )

211 if

( !checknodelimits )

238 int

lpstateforkdepth;

246

assert(primal !=

NULL

);

256

assert(foundsol !=

NULL

);

278

heurtiming &= ~SCIP_HEURTIMING_AFTERNODE;

281

assert(nextnode ==

NULL 307

lpstateforkdepth = -1;

314

assert(tree !=

NULL

);

318 SCIPsetDebugMsg

(

set

,

"calling primal heuristics in depth %d (timing: %u)\n"

, depth, heurtiming);

340 else if

( lp !=

NULL

)

345 for

(

h

= 0;

h

<

set

->nheurs; ++

h

)

368

&ndelayedheurs, &result) );

395

assert(0 <= ndelayedheurs && ndelayedheurs <= set->nheurs);

424

assert(delayed !=

NULL

);

425

assert(propagain !=

NULL

);

426

assert(cutoff !=

NULL

);

427

assert(postpone !=

NULL

);

441 for

( i = 0; i <

set

->nprops && !(*postpone) && (!(*cutoff) || !abortoncutoff); ++i )

492 for

( i = 0; i <

set

->nconshdlrs && !(*postpone) && (!(*cutoff) || !abortoncutoff); ++i )

504

tree->

sbprobing

, timingmask, &result) );

517 SCIPsetDebugMsg

(

set

,

" -> constraint handler <%s> detected cutoff in propagation\n"

,

530 for

( i = 0; i <

set

->nprops && !(*postpone) && (!(*cutoff) || !abortoncutoff); ++i )

592

assert(tree !=

NULL

);

594

assert(cutoff !=

NULL

);

603 if

( maxproprounds == 0 )

604

maxproprounds = (depth == 0 ?

set

->prop_maxroundsroot :

set

->prop_maxrounds);

605 if

( maxproprounds == -1 )

606

maxproprounds = INT_MAX;

608 SCIPsetDebugMsg

(

set

,

"domain propagation of node %p in depth %d (using depth %d, maxrounds %d, proptiming %u)\n"

,

621 SCIP_CALL

(

propagationRound

(blkmem,

set

, stat, tree, depth, fullpropagation,

FALSE

, &delayed, &propagain, timingmask, cutoff, postpone) );

624 while

( delayed && (!propagain || propround >= maxproprounds) && !(*cutoff) )

627 SCIP_CALL

(

propagationRound

(blkmem,

set

, stat, tree, depth, fullpropagation,

TRUE

, &delayed, &propagain, timingmask, cutoff, postpone) );

633

fullpropagation =

TRUE

;

641 SCIPsetDebugMsg

(

set

,

" --> domain propagation of node %p finished: cutoff!\n"

, (

void

*)node);

673 SCIP_CALL

(

SCIPconflictFlushConss

(conflict, blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue, cliquetable) );

690

assert(var !=

NULL

);

761

assert(tree !=

NULL

);

768

assert(tree->

path

[actdepth] == focusnode);

799

node = tree->

path

[d];

808 for

( i = 0; i < nboundchgs; ++i )

810

var = boundchgs[i].

var

;

811

assert(var !=

NULL

);

826

updates[nupdates] = &boundchgs[i];

849

weight = (nvalidupdates > 0 ? 1.0 / (

SCIP_Real

)nvalidupdates : 1.0);

851

lpgain =

MAX

(lpgain, 0.0);

853 for

( i = 0; i < nupdates; ++i )

857

var = updates[i]->

var

;

858

assert(var !=

NULL

);

865 SCIPsetDebugMsg

(

set

,

"updating pseudocosts of <%s>: sol: %g -> %g, LP: %e -> %e => solvaldelta = %g, gain=%g, weight: %g\n"

,

900

assert(

set

->branch_lpgainnorm ==

'd'

||

set

->branch_lpgainnorm ==

's'

);

904 if

(

set

->branch_lpgainnorm ==

'd'

)

906

assert(!updates[i]->redundant);

914 for

( j = nbdchginfos-1; j >= 0; --j )

931

assert(updates[i]->redundant);

938

assert(j >= 0 || updates[i]->redundant);

948

delta = updates[i]->

newbound

- oldbound;

960 for

( j = nbdchginfos-1; j >= 0; --j )

977

assert(updates[i]->redundant);

984

assert(j >= 0 || updates[i]->redundant);

994

delta = updates[i]->

newbound

- oldbound;

1036 SCIPsetDebugMsg

(

set

,

"updating pseudocosts of <%s> with strategy %c: domain: [%g,%g] -> [%g,%g], LP: %e -> %e => " 1037 "delta = %g, gain=%g, weight: %g\n"

,

1044

delta, lpgain, weight);

1082

assert(focusnode !=

NULL

);

1097 for

( i = 0; i < nlpcands; ++i )

1104

estimate +=

MIN

(pscdown, pscup);

1135

assert(lp !=

NULL

);

1136

assert(cutoff !=

NULL

);

1145 for

(

h

= 0;

h

<

set

->nconshdlrs && !(*cutoff); ++

h

)

1150 if

(

set

->reopt_enable &&

set

->reopt_usecuts && firstsubtreeinit && !(*cutoff) )

1154

eventfilter, lp, root) );

1160 SCIP_CALL

(

SCIPsepastoreApplyCuts

(sepastore, blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, branchcand,

1202

assert(transprob !=

NULL

);

1203

assert(lp !=

NULL

);

1204

assert(cutoff !=

NULL

);

1215

oldnvars = transprob->

nvars

;

1222 for

( v = 0; v < transprob->

nvars

; ++v )

1224

var = transprob->

vars

[v];

1253 SCIP_CALL

(

SCIPinitConssLP

(blkmem,

set

, sepastore, cutpool, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,

1254

eventfilter, cliquetable, root,

TRUE

, cutoff) );

1260 if

( root && transprob->

nvars

> oldnvars )

1266 for

( v = 0; v < transprob->

nvars

; ++v )

1268

var = transprob->

vars

[v];

1316

assert(tree !=

NULL

);

1317

assert(cutoff !=

NULL

);

1351 SCIP_CALL

(

SCIPsepastoreApplyCuts

(sepastore, blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, branchcand,

1366 SCIP_CALL

(

initLP

(blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, pricestore, sepastore, cutpool, branchcand,

1367

eventqueue, eventfilter, cliquetable, initroot, cutoff) );

1370 else if

( newinitconss )

1373

origprob, tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,

FALSE

,

FALSE

,

1396

assert(blkmem !=

NULL

);

1398

assert(stat !=

NULL

);

1399

assert(prob !=

NULL

);

1400

assert(primal !=

NULL

);

1401

assert(tree !=

NULL

);

1402

assert(lp !=

NULL

);

1423

vars = prob->

vars

;

1424

nvars = prob->

nvars

;

1436 for

( i = 0; i < nvars; i++ )

1481

assert(stat !=

NULL

);

1482

assert(tree !=

NULL

);

1483

assert(lp !=

NULL

);

1484

assert(cutoff !=

NULL

);

1485

assert(lperror !=

NULL

);

1493 SCIP_CALL

(

SCIPconstructCurrentLP

(blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, pricestore, sepastore, cutpool,

1494

branchcand, eventqueue, eventfilter, cliquetable, newinitconss, cutoff) );

1505 if

( focusnode->

depth

== 0 )

1516

assert(lp->

solved

|| *lperror);

1559 if

(

set

->misc_exactsolve )

1592

assert(lp !=

NULL

);

1593

assert(lperror !=

NULL

);

1594

assert(mustsepa !=

NULL

);

1595

assert(mustprice !=

NULL

);

1602 SCIP_CALL

(

SCIPlpSolveAndEval

(lp,

set

, messagehdlr, blkmem, stat, eventqueue, eventfilter, prob,

set

->lp_iterlim,

FALSE

,

TRUE

,

FALSE

,

FALSE

, lperror) );

1604

assert(lp->

solved

|| *lperror);

1647

assert(lp !=

NULL

);

1648

assert(

set

->conshdlrs_sepa !=

NULL

);

1649

assert(delayed !=

NULL

);

1650

assert(enoughcuts !=

NULL

);

1651

assert(cutoff !=

NULL

);

1652

assert(lperror !=

NULL

);

1654

root = (actdepth == 0);

1657

*enoughcuts =

TRUE

;

1659

*enoughcuts =

FALSE

;

1666 SCIPsetDebugMsg

(

set

,

"calling separators on LP solution in depth %d (onlydelayed: %u)\n"

, actdepth, onlydelayed);

1672 for

( i = 0; i <

set

->nsepas && !(*cutoff) && !(*lperror) && !(*enoughcuts) && lp->

flushed

&& lp->

solved 1699

*enoughcuts =

TRUE

;

1713 SCIP_CALL

(

separationRoundResolveLP

(blkmem,

set

, messagehdlr, stat, eventqueue, eventfilter, prob, primal, tree, lp, lperror, mustsepa, mustprice) );

1730 for

( i = 0; i <

set

->nconshdlrs && !(*cutoff) && !(*lperror) && !(*enoughcuts) && lp->

flushed

&& lp->

solved 1737 SCIPsetDebugMsg

(

set

,

" -> executing separation of constraint handler <%s> with priority %d\n"

,

1745

*enoughcuts =

TRUE

;

1759 SCIP_CALL

(

separationRoundResolveLP

(blkmem,

set

, messagehdlr, stat, eventqueue, eventfilter, prob, primal, tree, lp, lperror, mustsepa, mustprice) );

1777 for

( i = 0; i <

set

->nsepas && !(*cutoff) && !(*lperror) && !(*enoughcuts) && lp->

flushed

&& lp->

solved 1794

*enoughcuts =

TRUE

;

1808 SCIP_CALL

(

separationRoundResolveLP

(blkmem,

set

, messagehdlr, stat, eventqueue, eventfilter, prob, primal, tree, lp, lperror, mustsepa, mustprice) );

1827

assert(!onlydelayed);

1830 for

( i = 0; i <

set

->nconshdlrs && !(*cutoff) && !(*lperror) && !(*enoughcuts) && lp->

flushed

&& lp->

solved 1834 SCIPsetDebugMsg

(

set

,

" -> executing separation of constraint handler <%s> with priority %d\n"

,

1842

*enoughcuts =

TRUE

;

1856 SCIP_CALL

(

separationRoundResolveLP

(blkmem,

set

, messagehdlr, stat, eventqueue, eventfilter, prob, primal, tree, lp, lperror, mustsepa, mustprice) );

1865 SCIPsetDebugMsg

(

set

,

" -> separation round finished: delayed=%u, enoughcuts=%u, lpflushed=%u, cutoff=%u\n"

,

1866

*delayed, *enoughcuts, lp->

flushed

, *cutoff);

1893

assert(

set

->conshdlrs_sepa !=

NULL

);

1894

assert(delayed !=

NULL

);

1895

assert(enoughcuts !=

NULL

);

1896

assert(cutoff !=

NULL

);

1899

*enoughcuts =

FALSE

;

1901

root = (actdepth == 0);

1903 SCIPsetDebugMsg

(

set

,

"calling separators on primal solution in depth %d (onlydelayed: %u)\n"

, actdepth, onlydelayed);

1921

*enoughcuts =

TRUE

;

1955

*enoughcuts =

TRUE

;

1967 SCIPsetDebugMsg

(

set

,

" -> constraint handler <%s> detected cutoff in separation\n"

,

1992

*enoughcuts =

TRUE

;

2018

assert(!onlydelayed);

2027

*enoughcuts =

TRUE

;

2039 SCIPsetDebugMsg

(

set

,

" -> constraint handler <%s> detected cutoff in separation\n"

,

2045 SCIPsetDebugMsg

(

set

,

" -> separation round finished: delayed=%u, enoughcuts=%u, cutoff=%u\n"

,

2046

*delayed, *enoughcuts, *cutoff);

2074

assert(delayed !=

NULL

);

2075

assert(cutoff !=

NULL

);

2079

enoughcuts =

FALSE

;

2091 SCIP_CALL

(

separationRoundLP

(blkmem,

set

, messagehdlr, stat, eventqueue, eventfilter, prob, primal, tree, lp, sepastore, \

2092

actdepth, 0.0, allowlocal, onlydelayed, delayed, &enoughcuts, cutoff, \

2093

&lperror, &mustsepa, &mustprice) );

2098 SCIP_CALL

(

separationRoundSol

(blkmem,

set

, stat, sepastore, sol, actdepth, allowlocal, onlydelayed, delayed, &enoughcuts, cutoff) );

2127 int

* npricedcolvars,

2140

assert(transprob !=

NULL

);

2141

assert(lp !=

NULL

);

2144

assert(npricedcolvars !=

NULL

);

2145

assert(mustsepa !=

NULL

);

2146

assert(lperror !=

NULL

);

2147

assert(aborted !=

NULL

);

2151

*npricedcolvars = transprob->

ncolvars

;

2164 if

( maxpricerounds == -1 )

2165

maxpricerounds = INT_MAX;

2169 while

( !(*lperror) && mustprice && npricerounds < maxpricerounds )

2196 FALSE

, &foundsol, &unbounded) );

2203

*npricedcolvars = transprob->

ncolvars

;

2214

stoppricing =

FALSE

;

2215 for

( p = 0; p <

set

->nactivepricers && !enoughvars; ++p )

2236 if

( p == 0 && stopearly )

2237

stoppricing =

TRUE

;

2240 if

( stoppricing && !stopearly )

2241

stoppricing =

FALSE

;

2260

mustprice = !lp->

flushed

|| (transprob->

ncolvars

!= *npricedcolvars);

2261

*mustsepa = *mustsepa || !lp->

flushed

;

2267 SCIP_CALL

(

SCIPlpSolveAndEval

(lp,

set

, messagehdlr, blkmem, stat, eventqueue, eventfilter, transprob, -1LL,

FALSE

,

TRUE

,

FALSE

,

FALSE

, lperror) );

2269

assert(lp->

solved

|| *lperror);

2279 SCIP_CALL

(

SCIPinitConssLP

(blkmem,

set

, sepastore, cutpool, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,

2280

eventfilter, cliquetable,

FALSE

,

FALSE

, &cutoff) );

2281

assert(cutoff ==

FALSE

);

2283

mustprice = mustprice || !lp->

flushed

|| (transprob->

ncolvars

!= *npricedcolvars);

2284

*mustsepa = *mustsepa || !lp->

flushed

;

2295 SCIPsetDebugMsg

(

set

,

"pricing: solve LP after resetting bounds and adding new initial constraints\n"

);

2296 SCIP_CALL

(

SCIPlpSolveAndEval

(lp,

set

, messagehdlr, blkmem, stat, eventqueue, eventfilter, transprob, -1LL,

FALSE

,

FALSE

,

FALSE

,

FALSE

, lperror) );

2298

assert(lp->

solved

|| *lperror);

2308 if

( displayinfo && mustprice )

2318

mustprice = mustprice &&

2327

assert(lp->

solved

|| *lperror);

2356 if

( (

set

->sepa_poolfreq == 0 && actdepth == 0)

2357

|| (

set

->sepa_poolfreq > 0 && actdepth %

set

->sepa_poolfreq == 0) )

2361 SCIP_CALL

(

SCIPcutpoolSeparate

(cutpool, blkmem,

set

, stat, eventqueue, eventfilter, lp, sepastore,

NULL

, cutpoolisdelayed, root, &result) );

2364

*enoughcuts =

TRUE

;

2427 int

maxsepapartialrounds;

2428 int

nsepastallrounds;

2429 int

maxsepastallrounds;

2435

assert(blkmem !=

NULL

);

2436

assert(stat !=

NULL

);

2437

assert(transprob !=

NULL

);

2438

assert(tree !=

NULL

);

2439

assert(lp !=

NULL

);

2440

assert(pricestore !=

NULL

);

2441

assert(sepastore !=

NULL

);

2442

assert(cutpool !=

NULL

);

2443

assert(delayedcutpool !=

NULL

);

2444

assert(primal !=

NULL

);

2445

assert(cutoff !=

NULL

);

2446

assert(unbounded !=

NULL

);

2447

assert(lperror !=

NULL

);

2450

assert(focusnode !=

NULL

);

2453

root = (actdepth == 0);

2459

bounddist = (loclowerbound - glblowerbound)/(primal->

cutoffbound

- glblowerbound);

2461

separate = (

set

->sepa_maxruns == -1 || stat->

nruns

<

set

->sepa_maxruns);

2464

maxseparounds = (root ?

set

->sepa_maxroundsroot :

set

->sepa_maxrounds);

2465 if

( maxseparounds == -1 )

2466

maxseparounds = INT_MAX;

2467 if

( stat->

nruns

> 1 && root &&

set

->sepa_maxroundsrootsubrun >= 0 )

2468

maxseparounds =

MIN

(maxseparounds,

set

->sepa_maxroundsrootsubrun);

2471

maxsepapartialrounds = INT_MAX;

2472 if

( !fullseparation &&

set

->sepa_maxaddrounds >= 0 )

2473

maxsepapartialrounds = stat->

nseparounds

+

set

->sepa_maxaddrounds;

2476

maxsepastallrounds = root ?

set

->sepa_maxstallroundsroot :

set

->sepa_maxstallrounds;

2477 if

( maxsepastallrounds == -1 )

2478

maxsepastallrounds = INT_MAX;

2485

assert(lp->

solved

|| *lperror);

2491

npricedcolvars = transprob->

ncolvars

;

2493

mustsepa = separate;

2494

delayedsepa =

FALSE

;

2497

nsepastallrounds = 0;

2500

stallnfracs = INT_MAX;

2502 while

( !(*cutoff) && !(*unbounded) && !(*lperror) && ( mustprice || mustsepa ) )

2509 while

( mustprice && !(*lperror) )

2511 SCIP_CALL

(

SCIPpriceLoop

(blkmem,

set

, messagehdlr, stat, transprob, origprob, primal, tree, reopt, lp,

2512

pricestore, sepastore, cutpool, branchcand, eventqueue, eventfilter, cliquetable, root, root, -1, &npricedcolvars,

2513

&mustsepa, lperror, pricingaborted) );

2518

assert(lp->

solved

|| *lperror);

2521 if

( !(*lperror) && !(*pricingaborted) &&

SCIPlpIsRelax

(lp) )

2556 SCIPsetDebugMsg

(

set

,

" -> LP solved: call propagators that are applicable during LP solving loop\n"

);

2567 SCIP_CALL

(

SCIPinitConssLP

(blkmem,

set

, sepastore, cutpool, stat, transprob, origprob, tree, reopt, lp,

2568

branchcand, eventqueue, eventfilter, cliquetable,

FALSE

,

FALSE

, cutoff) );

2571 if

( !(*cutoff) && !(*unbounded) )

2589

assert(lp->

solved

|| *lperror);

2595

*propagateagain =

TRUE

;

2601 else if

( stat->

nboundchgs

> oldnboundchgs )

2603

*propagateagain =

TRUE

;

2631 FALSE

, &foundsol, unbounded) );

2637

assert(lp->

flushed

|| *cutoff || *unbounded);

2638

assert(lp->

solved

|| *lperror || *cutoff || *unbounded);

2644

mustsepa = mustsepa && separate && !(*cutoff) && !(*unbounded)

2646

&& ( delayedsepa || stat->

nseparounds

< maxsepapartialrounds )

2647

&& nsepastallrounds < maxsepastallrounds

2662

assert(!(*lperror));

2669

delayedsepa = delayedsepa && stat->

nseparounds

>= maxsepapartialrounds;

2673 if

( !enoughcuts && !delayedsepa )

2675 SCIP_CALL

(

cutpoolSeparate

(cutpool, blkmem,

set

, stat, eventqueue, eventfilter, lp, sepastore,

FALSE

, root,

2676

actdepth, &enoughcuts, cutoff) );

2686

assert(!(*lperror));

2689 if

( !(*cutoff) && !enoughcuts )

2696

lp, sepastore, actdepth, bounddist, allowlocal, delayedsepa,

2697

&delayedsepa, &enoughcuts, cutoff, lperror, &mustsepa, &mustprice) );

2701 if

( !(*cutoff) && !(*lperror) && lp->

solved

&& !enoughcuts && delayedsepa

2702

&& ( stat->

nseparounds

+ 1 >= maxseparounds || nsepastallrounds + 1 >= maxsepastallrounds )

2706

tree, lp, sepastore, actdepth, bounddist, allowlocal, delayedsepa,

2707

&delayedsepa, &enoughcuts, cutoff, lperror, &mustsepa, &mustprice) );

2715 SCIP_CALL

(

cutpoolSeparate

(cutpool, blkmem,

set

, stat, eventqueue, eventfilter, lp, sepastore,

FALSE

, root,

2716

actdepth, &enoughcuts, cutoff) );

2728

root, actdepth, &enoughcuts, cutoff) );

2743

tree, lp, sepastore, actdepth, bounddist, allowlocal, delayedsepa,

2744

&delayedsepa, &enoughcuts, cutoff, lperror, &mustsepa, &mustprice) );

2750

assert( !(*lperror) );

2753

root, actdepth, &enoughcuts, cutoff) );

2774 if

( *cutoff || *lperror

2789

mustprice = mustprice || !lp->

flushed

|| (transprob->

ncolvars

!= npricedcolvars);

2790

mustsepa = mustsepa || !lp->

flushed

;

2797

*propagateagain =

TRUE

;

2812 SCIP_CALL

(

SCIPinitConssLP

(blkmem,

set

, sepastore, cutpool, stat, transprob, origprob, tree, reopt, lp,

2813

branchcand, eventqueue, eventfilter, cliquetable,

FALSE

,

FALSE

, cutoff) );

2825

assert(lp->

solved

|| *lperror);

2838 if

( stat->

domchgcount

!= olddomchgcount && (!mustprice || mustsepa) && !(*cutoff)

2868

objreldiff =

SCIPrelDiff

(lpobjval, stalllpobjval);

2870

stalllpobjval, lpobjval, objreldiff);

2873

objreldiff <= 1e-04 &&

2874

nfracs >= (0.9 - 0.1 * nsepastallrounds) * stallnfracs);

2876

stalllpobjval = lpobjval;

2877

stallnfracs = nfracs;

2886

nsepastallrounds = 0;

2896 if

( nsepastallrounds + 1 >= maxsepastallrounds )

2899 SCIPsetDebugMsg

(

set

,

" -> nsepastallrounds=%d/%d\n"

, nsepastallrounds, maxsepastallrounds);

2904

assert(*cutoff || *lperror || (lp->

flushed

&& lp->

solved

));

2909 SCIPsetDebugMsg

(

set

,

"separation round %d/%d finished (%d/%d stall rounds): mustprice=%u, mustsepa=%u, delayedsepa=%u, propagateagain=%u\n"

,

2910

stat->

nseparounds

, maxseparounds, nsepastallrounds, maxsepastallrounds, mustprice, mustsepa, delayedsepa, *propagateagain);

2914 if

( root && nsepastallrounds >= maxsepastallrounds )

2917 "Truncate separation round because of stalling (%d stall rounds).\n"

, maxsepastallrounds);

2927 if

( !(*cutoff) && !(*lperror) )

2955

lp, branchcand, eventqueue, cliquetable,

NULL

) );

3000

assert(transprob !=

NULL

);

3001

assert(origprob !=

NULL

);

3002

assert(primal !=

NULL

);

3003

assert(cutoff !=

NULL

);

3016 SCIPsetDebugMsg

(

set

,

" -> lower bound: %g [%g] (pseudoobj: %g [%g]), cutoff bound: %g [%g]\n"

,

3028 SCIP_CALL

(

SCIPconflictAnalyzePseudo

(conflict, blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue, cliquetable,

NULL

) );

3048

assert(relaxation !=

NULL

);

3052 for

(

r

= 0;

r

<

set

->nrelaxs; ++

r

)

3098

assert(stat !=

NULL

);

3099

assert(tree !=

NULL

);

3101

assert(cutoff !=

NULL

);

3102

assert(unbounded !=

NULL

);

3103

assert(lperror !=

NULL

);

3104

assert(*cutoff ==

FALSE

);

3105

assert(*unbounded ==

FALSE

);

3106

assert(*lperror ==

FALSE

);

3108

nlps = stat->

nlps

;

3112 if

( !initiallpsolved )

3115 SCIP_CALL

(

solveNodeInitialLP

(blkmem,

set

, messagehdlr, stat, transprob, origprob, primal, tree, reopt, lp,

3116

pricestore, sepastore, cutpool, branchcand, eventfilter, eventqueue, cliquetable, newinitconss,

3117

forcedlpsolve, cutoff, lperror) );

3119

assert(*cutoff || *lperror || (lp->

flushed

&& lp->

solved

));

3144

checklprows =

FALSE

;

3146

checklprows =

TRUE

;

3150 SCIP_CALL

(

SCIPprimalTrySol

(primal, blkmem,

set

, messagehdlr, stat, origprob, transprob, tree, reopt, lp,

3157 SCIP_CALL

(

SCIPsolCheck

(sol,

set

, messagehdlr, blkmem, stat, transprob,

FALSE

,

FALSE

,

TRUE

,

TRUE

,

3158

checklprows, &feasible) );

3164 SCIP_CALL

(

SCIPprimalTrySolFree

(primal, blkmem,

set

, messagehdlr, stat, origprob, transprob, tree, reopt, lp,

3165

eventqueue, eventfilter, &sol,

FALSE

,

FALSE

,

TRUE

,

TRUE

, checklprows, &stored) );

3177 if

(

set

->reopt_enable )

3179

assert(reopt !=

NULL

);

3193

origprob, tree, reopt, lp, branchcand, eventqueue, eventfilter, cliquetable,

FALSE

,

FALSE

,

3199 SCIP_CALL

(

applyBounding

(blkmem,

set

, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue, conflict, cliquetable, cutoff) );

3214 if

( !(*cutoff) && !(*lperror) )

3220 int

oldncutsapplied;

3222

oldnpricedvars = transprob->

ncolvars

;

3229 SCIP_CALL

(

priceAndCutLoop

(blkmem,

set

, messagehdlr, stat, mem, transprob, origprob, primal, tree, reopt, lp,

3230

pricestore, sepastore, cutpool, delayedcutpool, branchcand, conflict, conflictstore, eventfilter,

3231

eventqueue, cliquetable, fullseparation, forcedlpsolve, propagateagain, cutoff, unbounded, lperror, pricingaborted) );

3238

*solverelaxagain =

TRUE

;

3242

assert(*cutoff || *lperror || (lp->

flushed

&& lp->

solved

));

3262 SCIP_CALL

(

SCIPlpSolveAndEval

(lp,

set

, messagehdlr, blkmem, stat, eventqueue, eventfilter, transprob, -1LL,

FALSE

,

FALSE

,

FALSE

, forcedlpsolve, lperror) );

3267 SCIPsetDebugMsg

(

set

,

"re-optimized LP without cutoff bound: LP status: %d, LP obj: %g\n"

,

3285

assert(*cutoff || *lperror || (lp->

flushed

&& lp->

solved

));

3327

assert(relaxation !=

NULL

);

3328

assert(cutoff !=

NULL

);

3329

assert(solvelpagain !=

NULL

);

3330

assert(propagateagain !=

NULL

);

3331

assert(solverelaxagain !=

NULL

);

3332

assert(relaxcalled !=

NULL

);

3338 for

(

r

= 0;

r

<

set

->nrelaxs && !(*cutoff); ++

r

)

3343

*relaxcalled =

TRUE

;

3358

*solvelpagain =

TRUE

;

3359

*propagateagain =

TRUE

;

3363

*solvelpagain =

TRUE

;

3364

*propagateagain =

TRUE

;

3368

*solvelpagain =

TRUE

;

3372

*solverelaxagain =

TRUE

;

3389

assert(focusnode !=

NULL

);

3434

assert(stat !=

NULL

);

3435

assert(tree !=

NULL

);

3437

assert(branched !=

NULL

);

3438

assert(cutoff !=

NULL

);

3439

assert(infeasible !=

NULL

);

3440

assert(propagateagain !=

NULL

);

3441

assert(solvelpagain !=

NULL

);

3442

assert(solverelaxagain !=

NULL

);

3444

assert(!(*propagateagain));

3445

assert(!(*solvelpagain));

3446

assert(!(*solverelaxagain));

3456 for

(

h

= 0;

h

<

set

->nconshdlrs && enforcerelaxsol; ++

h

)

3458 if

(

set

->conshdlrs_enfo[

h

]->consenforelax ==

NULL

&& ((!

set

->conshdlrs_enfo[

h

]->needscons) ||

3459

(

set

->conshdlrs_enfo[

h

]->nconss > 0)) )

3463

enforcerelaxsol =

FALSE

;

3477 " since constraint handler %s does not implement enforelax-callback\n"

,

3486 if

( enforcerelaxsol )

3498

objinfeasible =

FALSE

;

3518 if

( enforcerelaxsol )

3523 for

(

h

= 0;

h

<

set

->nconshdlrs && !resolved; ++

h

)

3528 if

( enforcerelaxsol )

3533

relaxsol, *infeasible, &result) );

3548

objinfeasible, forced, &result) );

3551 SCIPerrorMessage

(

"pseudo enforcing method of constraint handler <%s> separated cuts\n"

,

3563

*infeasible =

TRUE

;

3565 SCIPsetDebugMsg

(

set

,

" -> constraint handler <%s> detected cutoff in enforcement\n"

,

3571

*infeasible =

TRUE

;

3572

*propagateagain =

TRUE

;

3573

*solvelpagain =

TRUE

;

3574

*solverelaxagain =

TRUE

;

3581

*infeasible =

TRUE

;

3582

*propagateagain =

TRUE

;

3583

*solvelpagain =

TRUE

;

3584

*solverelaxagain =

TRUE

;

3592

*infeasible =

TRUE

;

3593

*solvelpagain =

TRUE

;

3594

*solverelaxagain =

TRUE

;

3603

*infeasible =

TRUE

;

3617

*infeasible =

TRUE

;

3618

*solvelpagain =

TRUE

;

3627

*infeasible =

TRUE

;

3640

assert(objinfeasible);

3641

*infeasible =

TRUE

;

3645 SCIPerrorMessage

(

"invalid result code <%d> from enforcing method of constraint handler <%s>\n"

,

3656

*infeasible =

TRUE

;

3664

*propagateagain =

FALSE

;

3665

*solvelpagain =

FALSE

;

3668

assert(!(*branched) || (resolved && !(*cutoff) && *infeasible && !(*propagateagain) && !(*solvelpagain)));

3669

assert(!(*cutoff) || (resolved && !(*branched) && *infeasible && !(*propagateagain) && !(*solvelpagain)));

3670

assert(*infeasible || (!resolved && !(*branched) && !(*cutoff) && !(*propagateagain) && !(*solvelpagain)));

3671

assert(!(*propagateagain) || (resolved && !(*branched) && !(*cutoff) && *infeasible));

3672

assert(!(*solvelpagain) || (resolved && !(*branched) && !(*cutoff) && *infeasible));

3674

assert(!objinfeasible || *infeasible);

3675

assert(resolved == (*branched || *cutoff || *propagateagain || *solvelpagain));

3679 if

( enforcerelaxsol )

3687 SCIPsetDebugMsg

(

set

,

" -> enforcing result: branched=%u, cutoff=%u, infeasible=%u, propagateagain=%u, solvelpagain=%u, resolved=%u\n"

,

3688

*branched, *cutoff, *infeasible, *propagateagain, *solvelpagain, resolved);

3718

assert(stat !=

NULL

);

3719

assert(cutoff !=

NULL

);

3720

assert(propagateagain !=

NULL

);

3721

assert(solvelpagain !=

NULL

);

3731 int

oldncutsapplied;

3735 SCIP_CALL

(

SCIPsepastoreApplyCuts

(sepastore, blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, branchcand,

3736

eventqueue, eventfilter, cliquetable, root, efficiacychoice, cutoff) );

3737

*propagateagain = *propagateagain || (stat->

domchgcount

!= olddomchgcount);

3738

*solvelpagain =

TRUE

;

3741

*solverelaxagain =

TRUE

;

3765

assert(stat !=

NULL

);

3766

assert(cutoff !=

NULL

);

3767

assert(propagateagain !=

NULL

);

3768

assert(solverelaxagain !=

NULL

);

3771

*cutoff = *cutoff || (tree->

cutoffdepth

<= depth);

3781 for

(

r

= 0;

r

<

set

->nrelaxs && !(*solverelaxagain); ++

r

)

3787

*propagateagain =

FALSE

;

3788

*solverelaxagain =

FALSE

;

3846

assert(stat !=

NULL

);

3847

assert(origprob !=

NULL

);

3848

assert(transprob !=

NULL

);

3849

assert(tree !=

NULL

);

3850

assert(lp !=

NULL

);

3851

assert(primal !=

NULL

);

3852

assert(pricestore !=

NULL

);

3853

assert(sepastore !=

NULL

);

3855

assert(branchcand !=

NULL

);

3856

assert(cutpool !=

NULL

);

3857

assert(delayedcutpool !=

NULL

);

3858

assert(conflict !=

NULL

);

3860

assert(eventfilter !=

NULL

);

3861

assert(eventqueue !=

NULL

);

3862

assert(focusnode !=

NULL

);

3863

assert(heurtiming !=

NULL

);

3864

assert(nlperrors !=

NULL

);

3865

assert(fullpropagation !=

NULL

);

3866

assert(propagateagain !=

NULL

);

3867

assert(afterlpproplps !=

NULL

);

3868

assert(lpsolved !=

NULL

);

3869

assert(solvelpagain !=

NULL

);

3870

assert(solverelaxagain !=

NULL

);

3871

assert(cutoff !=

NULL

);

3872

assert(postpone !=

NULL

);

3873

assert(unbounded !=

NULL

);

3874

assert(lperror !=

NULL

);

3875

assert(pricingaborted !=

NULL

);

3876

assert(forcedenforcement !=

NULL

);

3878

newinitconss =

FALSE

;

3880 if

( !(*cutoff) && !(*postpone) )

3891 if

( ((*afterlpproplps) < stat->

nnodelps

&& (*lpsolved)) || (*relaxcalled) )

3898

*cutoff = *cutoff || (tree->

cutoffdepth

<= actdepth);

3899

*afterlpproplps = stat->

nnodelps

;

3900

propagate = propagate || (stat->

nboundchgs

> oldnboundchgs);

3904 if

( propagate && !(*cutoff) )

3912

*fullpropagation =

FALSE

;

3915

*cutoff = *cutoff || (tree->

cutoffdepth

<= actdepth);

3920

solvelp = solvelp || (lpwasflushed && (!lp->

flushed

|| newinitconss));

3921

solverelax = solverelax || newinitconss;

3951 SCIP_CALL

(

applyBounding

(blkmem,

set

, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue,

3952

conflict, cliquetable, cutoff) );

3966 FALSE

, propagateagain, unbounded) );

3995 if

( *propagateagain )

3997

*solvelpagain = solvelp;

3998

*solverelaxagain = solverelax;

4005

*relaxcalled =

FALSE

;

4006 if

( solverelax && !(*cutoff) )

4012

cutoff, propagateagain, solvelpagain, solverelaxagain, relaxcalled) );

4016

*cutoff = *cutoff || (tree->

cutoffdepth

<= actdepth);

4019 SCIP_CALL

(

applyCuts

(blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, relaxation, sepastore, branchcand,

4021

solvelpagain, solverelaxagain) );

4024 SCIP_CALL

(

applyBounding

(blkmem,

set

, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue, conflict, cliquetable, cutoff) );

4032

*unbounded =

FALSE

;

4035 SCIP_CALL

(

solveNodeLP

(blkmem,

set

, messagehdlr, stat, mem, origprob, transprob, primal, tree, reopt, lp, relaxation, pricestore,

4036

sepastore, cutpool, delayedcutpool, branchcand, conflict, conflictstore, eventfilter, eventqueue, cliquetable,

4037

initiallpsolved, fullseparation, newinitconss, forcedlpsolve, propagateagain, solverelaxagain, cutoff, unbounded, lperror, pricingaborted) );

4040

*solvelpagain =

FALSE

;

4047

*cutoff = *cutoff || (tree->

cutoffdepth

<= actdepth);

4052 if

( forcedlpsolve )

4068

*forcedenforcement =

TRUE

;

4098

*forcedenforcement =

TRUE

;

4107 SCIP_CALL

(

applyBounding

(blkmem,

set

, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue, conflict,

4108

cliquetable, cutoff) );

4116

*solverelaxagain = *solverelaxagain && *relaxcalled;

4119 if

( solverelax && !(*cutoff) )

4122

propagateagain, solvelpagain, solverelaxagain, relaxcalled) );

4126

*cutoff = *cutoff || (tree->

cutoffdepth

<= actdepth);

4129 SCIP_CALL

(

applyCuts

(blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, relaxation, sepastore, branchcand,

4131

solvelpagain, solverelaxagain) );

4134 SCIP_CALL

(

applyBounding

(blkmem,

set

, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue, conflict,

4135

cliquetable, cutoff) );

4151

assert(stat !=

NULL

);

4153 return set

->nactivepricers == 0 && !

set

->reopt_enable

4154

&& (

set

->presol_maxrestarts == -1 || stat->

nruns

<=

set

->presol_maxrestarts );

4157#define restartAllowed(set,stat) ((set)->nactivepricers == 0 && !set->reopt_enable && ((set)->presol_maxrestarts == -1 || (stat)->nruns <= (set)->presol_maxrestarts)) 4218

assert(stat !=

NULL

);

4219

assert(origprob !=

NULL

);

4220

assert(transprob !=

NULL

);

4221

assert(tree !=

NULL

);

4222

assert(primal !=

NULL

);

4225

assert(cutoff !=

NULL

);

4226

assert(postpone !=

NULL

);

4227

assert(unbounded !=

NULL

);

4228

assert(infeasible !=

NULL

);

4229

assert(restart !=

NULL

);

4230

assert(afternodeheur !=

NULL

);

4234

*unbounded =

FALSE

;

4235

*infeasible =

FALSE

;

4237

*afternodeheur =

FALSE

;

4239

pricingaborted =

FALSE

;

4242

assert(focusnode !=

NULL

);

4263

focusnodehaslp = (

set

->lp_solvedepth == -1 || actdepth <=

set

->lp_solvedepth);

4264

focusnodehaslp = focusnodehaslp && (

set

->lp_solvefreq >= 1 && actdepth %

set

->lp_solvefreq == 0);

4265

focusnodehaslp = focusnodehaslp || (actdepth == 0 &&

set

->lp_solvefreq == 0);

4280

lastlpcount = stat->

lpcount

;

4281

initiallpsolved =

FALSE

;

4282

fullseparation =

TRUE

;

4287

solverelaxagain =

TRUE

;

4288

solvelpagain =

TRUE

;

4289

propagateagain =

TRUE

;

4290

fullpropagation =

TRUE

;

4291

forcedlpsolve =

FALSE

;

4294 while

( !(*cutoff) && !(*postpone) && (solverelaxagain || solvelpagain || propagateagain) && nlperrors <

MAXNLPERRORS

&& !(*restart) )

4305

*unbounded =

FALSE

;

4306

*infeasible =

FALSE

;

4312

relaxcalled =

FALSE

;

4313

forcedenforcement =

FALSE

;

4314

afterlpproplps = -1L;

4316 while

( !lperror && !(*cutoff) && (propagateagain || solvelpagain || solverelaxagain

4317

|| (afterlpproplps < stat->nnodelps && lpsolved) || relaxcalled) )

4319

solverelax = solverelaxagain;

4320

solverelaxagain =

FALSE

;

4321

solvelp = solvelpagain;

4322

solvelpagain =

FALSE

;

4323

propagate = propagateagain;

4324

propagateagain =

FALSE

;

4327 SCIP_CALL

(

applyBounding

(blkmem,

set

, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue,

4328

conflict, cliquetable, cutoff) );

4331 SCIPsetDebugMsg

(

set

,

" -> node solving loop: call propagators that are applicable before%s LP is solved\n"

,

4332

lpsolved ?

" and after"

:

""

);

4333 SCIP_CALL

(

propAndSolve

(blkmem,

set

, messagehdlr, stat, mem, origprob, transprob, primal, tree, reopt, lp,

4334

relaxation, pricestore, sepastore, branchcand, cutpool, delayedcutpool, conflict, conflictstore, eventfilter,

4335

eventqueue, cliquetable, focusnode, actdepth, propagate, solvelp, solverelax, forcedlpsolve, initiallpsolved,

4336

fullseparation, &afterlpproplps, &heurtiming, &nlperrors, &fullpropagation, &propagateagain, &lpsolved, &relaxcalled,

4337

&solvelpagain, &solverelaxagain, cutoff, postpone, unbounded, stopped, &lperror, &pricingaborted, &forcedenforcement) );

4338

initiallpsolved |= lpsolved;

4348

fullseparation =

FALSE

;

4351 updateLoopStatus

(

set

, stat, tree, actdepth, cutoff, &propagateagain, &solverelaxagain);

4360 if

( actdepth == 0 && !(*afternodeheur) )

4364

*afternodeheur =

TRUE

;

4369

*cutoff, &foundsol, unbounded) );

4374 SCIP_CALL

(

applyBounding

(blkmem,

set

, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue, conflict, cliquetable, cutoff) );

4380 if

( forcedlpsolve )

4403 if

( forcedlpsolve )

4417 if

( foundsol && !(*cutoff) )

4419

propagateagain =

TRUE

;

4420

solvelpagain =

TRUE

;

4421

solverelaxagain =

TRUE

;

4432 if

( !(*postpone) && !(*restart) && !(*cutoff) && !solverelaxagain && !solvelpagain && !propagateagain )

4442

lastlpcount = stat->

lpcount

;

4443

*infeasible =

FALSE

;

4447 SCIP_CALL

(

enforceConstraints

(blkmem,

set

, messagehdlr, stat, transprob, primal, tree, lp, relaxation, sepastore,

4448

branchcand, &branched, cutoff, infeasible, &propagateagain, &solvelpagain, &solverelaxagain,

4449

forcedenforcement) );

4450

assert(branched == (tree->

nchildren

> 0));

4451

assert(!branched || (!(*cutoff) && *infeasible && !propagateagain && !solvelpagain));

4452

assert(!(*cutoff) || (!branched && *infeasible && !propagateagain && !solvelpagain));

4453

assert(*infeasible || (!branched && !(*cutoff) && !propagateagain && !solvelpagain));

4454

assert(!propagateagain || (!branched && !(*cutoff) && *infeasible));

4455

assert(!solvelpagain || (!branched && !(*cutoff) && *infeasible));

4460 SCIP_CALL

(

applyCuts

(blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, relaxation, sepastore, branchcand,

4462

&solvelpagain, &solverelaxagain) );

4465 SCIP_CALL

(

applyBounding

(blkmem,

set

, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue, conflict, cliquetable, cutoff) );

4468 updateLoopStatus

(

set

, stat, tree, actdepth, cutoff, &propagateagain, &solverelaxagain);

4477 if

( pricingaborted && !(*infeasible) && !(*cutoff) && !(*postpone) && !(*restart) )

4491 SCIP_CALL

(

SCIPprimalTrySol

(primal, blkmem,

set

, messagehdlr, stat, origprob, transprob, tree, reopt, lp,

4511 SCIP_CALL

(

SCIPprimalTrySolFree

(primal, blkmem,

set

, messagehdlr, stat, origprob, transprob, tree, reopt, lp,

4526

*infeasible =

TRUE

;

4539

wasforcedlpsolve = forcedlpsolve;

4540

forcedlpsolve =

FALSE

;

4541 if

( (*infeasible) && !(*cutoff) && !(*postpone) && !(*restart)

4543

&& !solverelaxagain && !solvelpagain && !propagateagain && !branched )

4562

assert( nlpcands > 0 );

4565 SCIPsetDebugMsg

(

set

,

"infeasibility in depth %d was not resolved: branch on LP solution with %d fractionals\n"

,

4567 SCIP_CALL

(

SCIPbranchExecLP

(blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, sepastore, branchcand,

4578 SCIPsetDebugMsg

(

set

,

"infeasibility in depth %d was not resolved: branch on %d external branching candidates.\n"

,

4580 SCIP_CALL

(

SCIPbranchExecExtern

(blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, sepastore, branchcand,

4589 SCIPsetDebugMsg

(

set

,

"infeasibility in depth %d was not resolved: branch on pseudo solution with %d unfixed integers\n"

,

4591 SCIP_CALL

(

SCIPbranchExecPseudo

(blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue,

4605 "Starting spatial branch-and-bound on unbounded variable <%s> ([%g,%g]) - cannot guarantee finite termination.\n"

,

4622 SCIPerrorMessage

(

"LP branching rule added constraint, which was not allowed this time\n"

);

4625

propagateagain =

TRUE

;

4626

solvelpagain =

TRUE

;

4627

solverelaxagain =

TRUE

;

4632

propagateagain =

TRUE

;

4633

solvelpagain =

TRUE

;

4634

solverelaxagain =

TRUE

;

4640

solvelpagain =

TRUE

;

4641

solverelaxagain =

TRUE

;

4665 if

( transprob->

ncontvars

== 0 &&

set

->nactivepricers == 0 )

4668 SCIPsetDebugMsg

(

set

,

" -> cutoff because all variables are fixed in current node\n"

);

4694 if

( pricingaborted )

4696 SCIPerrorMessage

(

"pricing was aborted, but no branching could be created!\n"

);

4700 if

( wasforcedlpsolve )

4703 SCIPerrorMessage

(

"LP was solved, all integers fixed, some constraint still infeasible, but no branching could be created!\n"

);

4724

solvelpagain =

TRUE

;

4725

forcedlpsolve =

TRUE

;

4730 SCIPerrorMessage

(

"invalid result code <%d> from SCIPbranchLP(), SCIPbranchExt() or SCIPbranchPseudo()\n"

, result);

4733

assert(*cutoff || solvelpagain || propagateagain || branched);

4734

assert(!(*cutoff) || (!solvelpagain && !propagateagain && !branched));

4735

assert(!solvelpagain || (!(*cutoff) && !branched));

4736

assert(!propagateagain || (!(*cutoff) && !branched));

4737

assert(!branched || (!solvelpagain && !propagateagain));

4738

assert(branched == (tree->

nchildren

> 0));

4741 SCIP_CALL

(

applyCuts

(blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, relaxation, sepastore, branchcand,

4743

&solvelpagain, &solverelaxagain) );

4746 SCIP_CALL

(

applyBounding

(blkmem,

set

, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue, conflict, cliquetable, cutoff) );

4749 updateLoopStatus

(

set

, stat, tree, actdepth, cutoff, &propagateagain, &solverelaxagain);

4757 SCIPsetDebugMsg

(

set

,

"node solving iteration %d finished: cutoff=%u, postpone=%u, propagateagain=%u, solverelaxagain=%u, solvelpagain=%u, nlperrors=%d, restart=%u\n"

,

4758

nloops, *cutoff, *postpone, propagateagain, solverelaxagain, solvelpagain, nlperrors, *restart);

4764 SCIP_CALL

(

SCIPconflictFlushConss

(conflict, blkmem,

set

, stat, transprob, origprob, tree, reopt, lp, branchcand, eventqueue, cliquetable) );

4774

restartfac =

set

->presol_subrestartfac;

4775 if

( actdepth == 0 )

4776

restartfac =

MIN

(restartfac,

set

->presol_restartfac);

4782 if

( actdepth == 0 && !(*cutoff) && !(*unbounded) && !(*postpone) )

4796

*unbounded =

FALSE

;

4797

*infeasible =

TRUE

;

4856 if

( checksol ||

set

->misc_exactsolve )

4859 SCIP_CALL

(

SCIPprimalTrySolFree

(primal, blkmem,

set

, messagehdlr, stat, origprob, transprob, tree, reopt, lp,

4864 SCIP_CALL

(

SCIPprimalAddSolFree

(primal, blkmem,

set

, messagehdlr, stat, origprob, transprob, tree, reopt, lp,

4865

eventqueue, eventfilter, &sol, &foundsol) );

4894 if

( checksol ||

set

->misc_exactsolve )

4897 SCIP_CALL

(

SCIPprimalTrySolFree

(primal, blkmem,

set

, messagehdlr, stat, origprob, transprob, tree, reopt, lp,

4902 SCIP_CALL

(

SCIPprimalAddSolFree

(primal, blkmem,

set

, messagehdlr, stat, origprob, transprob, tree, reopt, lp,

4903

eventqueue, eventfilter, &sol, &foundsol) );

4930 if

( checksol ||

set

->misc_exactsolve )

4933 SCIP_CALL

(

SCIPprimalTrySolFree

(primal, blkmem,

set

, messagehdlr, stat, origprob, transprob, tree, reopt, lp,

4938 SCIP_CALL

(

SCIPprimalAddSolFree

(primal, blkmem,

set

, messagehdlr, stat, origprob, transprob, tree, reopt, lp,

4939

eventqueue, eventfilter, &sol, &foundsol) );

5002

assert(blkmem !=

NULL

);

5003

assert(stat !=

NULL

);

5004

assert(transprob !=

NULL

);

5005

assert(tree !=

NULL

);

5006

assert(lp !=

NULL

);

5007

assert(pricestore !=

NULL

);

5008

assert(sepastore !=

NULL

);

5009

assert(branchcand !=

NULL

);

5010

assert(cutpool !=

NULL

);

5011

assert(delayedcutpool !=

NULL

);

5012

assert(primal !=

NULL

);

5013

assert(eventfilter !=

NULL

);

5014

assert(eventqueue !=

NULL

);

5015

assert(restart !=

NULL

);

5018

restartfac =

set

->presol_subrestartfac;

5020

restartfac =

MIN

(restartfac,

set

->presol_restartfac);

5026 if

(

set

->conf_restartnum > 0 )

5031 for

( i = 0; i < stat->nconfrestarts; ++i )

5032

restartconfnum *=

set

->conf_restartfac;

5036

assert(restartconfnum >= 0.0);

5056

infeasible =

FALSE

;

5074 if

( nextnode ==

NULL

)

5079

focusnode = nextnode;

5087 SCIP_CALL

(

SCIPnodeFocus

(&focusnode, blkmem,

set

, messagehdlr, stat, transprob, origprob, primal, tree, reopt,

5088

lp, branchcand, conflict, conflictstore, eventfilter, eventqueue, cliquetable, &cutoff,

FALSE

,

FALSE

) );

5103 if

( focusnode ==

NULL

)

5126 SCIP_CALL

(

solveNode

(blkmem,

set

, messagehdlr, stat, mem, origprob, transprob, primal, tree, reopt, lp, relaxation,

5127

pricestore, sepastore, branchcand, cutpool, delayedcutpool, conflict, conflictstore, eventfilter, eventqueue,

5128

cliquetable, &cutoff, &postpone, &unbounded, &infeasible, restart, &afternodeheur, &stopped) );

5129

assert(!cutoff || infeasible);

5140 if

( !(*restart) && !postpone )

5183 SCIP_CALL

(

addCurrentSolution

(blkmem,

set

, messagehdlr, stat, origprob, transprob, primal, relaxation, tree, reopt,

5184

lp, eventqueue, eventfilter,

FALSE

) );

5193 SCIP_CALL

(

applyBounding

(blkmem,

set

, stat, transprob, origprob, primal, tree, reopt, lp, branchcand, eventqueue, conflict, cliquetable, &cutoff) );

5199 if

(

set

->reopt_enable )

5201

assert(reopt !=

NULL

);

5208 else if

( !unbounded || branched )

5229 if

(

set

->reopt_enable )

5231

assert(reopt !=

NULL

);

5251 if

(

set

->reopt_enable )

5253

assert(reopt !=

NULL

);

5278

assert(

set

->misc_exactsolve);

5288 SCIPerrorMessage

(

"cannot branch on all-fixed LP -- have to call PerPlex instead\n"

);

5311 if

( !afternodeheur && (!cutoff ||

nnodes

> 0) && !stopped )

5314

cutoff, &foundsol, &unbounded) );

5328 else if

( !infeasible && !postpone )

5334 SCIP_CALL

(

addCurrentSolution

(blkmem,

set

, messagehdlr, stat, origprob, transprob, primal, relaxation, tree, reopt, lp,

5335

eventqueue, eventfilter,

TRUE

) );

5337 if

(

set

->reopt_enable )

5339

assert(reopt !=

NULL

);

5346 else if

( postpone )

5351 SCIP_CALL

(

SCIPnodeFocus

(&newfocusnode, blkmem,

set

, messagehdlr, stat, transprob, origprob, primal, tree, reopt, lp,

5352

branchcand, conflict, conflictstore, eventfilter, eventqueue, cliquetable, &cutoff,

TRUE

,

FALSE

) );

5364

stat->

nruns

, stat->

nnodes

, nsuccessconflicts);

5377 "(run %d, node %" SCIP_LONGINT_FORMAT ") restarting: triggering parameter controlled restart)\n"

,

5395 SCIPsetDebugMsg

(

set

,

"**********************************************************************\n"

);

5421 if

(

set

->reopt_enable )

5423

assert(reopt !=

NULL

);

5430 SCIP_CALL

(

SCIPnodeFocus

(&focusnode, blkmem,

set

, messagehdlr, stat, transprob, origprob, primal, tree, reopt, lp,

5431

branchcand, conflict, conflictstore, eventfilter, eventqueue, cliquetable, &cutoff,

FALSE

,

FALSE

) );

5443 if

( primal->

nsols

> 0 )

SCIP_RETCODE SCIPbranchcandGetLPCands(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_VAR ***lpcands, SCIP_Real **lpcandssol, SCIP_Real **lpcandsfrac, int *nlpcands, int *npriolpcands, int *nfracimplvars)

int SCIPbranchcandGetNExternCands(SCIP_BRANCHCAND *branchcand)

SCIP_RETCODE SCIPbranchExecPseudo(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)

int SCIPbranchcandGetNPrioExternCands(SCIP_BRANCHCAND *branchcand)

void SCIPbranchcandClearExternCands(SCIP_BRANCHCAND *branchcand)

int SCIPbranchcandGetExternMaxPrio(SCIP_BRANCHCAND *branchcand)

int SCIPbranchcandGetNPseudoCands(SCIP_BRANCHCAND *branchcand)

int SCIPbranchcandGetNPrioLPCands(SCIP_BRANCHCAND *branchcand)

SCIP_RETCODE SCIPbranchExecExtern(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_SEPASTORE *sepastore, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)

SCIP_RETCODE SCIPbranchExecLP(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_SEPASTORE *sepastore, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)

int SCIPbranchcandGetLPMaxPrio(SCIP_BRANCHCAND *branchcand)

internal methods for branching rules and branching candidate storage

void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)

void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)

SCIP_Real SCIPclockGetLastTime(SCIP_CLOCK *clck)

SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)

internal methods for clocks and timing issues

SCIP_Longint SCIPgetConcurrentMemTotal(SCIP *scip)

int SCIPgetNConcurrentSolvers(SCIP *scip)

helper functions for concurrent scip solvers

internal methods for conflict analysis

int SCIPconflictGetNConflicts(SCIP_CONFLICT *conflict)

SCIP_Longint SCIPconflictGetNInfeasibleLPSuccess(SCIP_CONFLICT *conflict)

SCIP_Longint SCIPconflictGetNBoundexceedingLPSuccess(SCIP_CONFLICT *conflict)

SCIP_RETCODE SCIPconflictAnalyzePseudo(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *success)

SCIP_RETCODE SCIPconflictAnalyzeLP(SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *success)

SCIP_Longint SCIPconflictGetNPseudoSuccess(SCIP_CONFLICT *conflict)

SCIP_Longint SCIPconflictGetNPropSuccess(SCIP_CONFLICT *conflict)

SCIP_Longint SCIPconflictGetNStrongbranchSuccess(SCIP_CONFLICT *conflict)

SCIP_RETCODE SCIPconflictFlushConss(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable)

SCIP_RETCODE SCIPconshdlrSeparateLP(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_SEPASTORE *sepastore, int depth, SCIP_Bool execdelayed, SCIP_RESULT *result)

SCIP_RETCODE SCIPconshdlrEnforceRelaxSol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_SEPASTORE *sepastore, SCIP_SOL *relaxsol, SCIP_Bool solinfeasible, SCIP_RESULT *result)

SCIP_RETCODE SCIPconshdlrSeparateSol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_SEPASTORE *sepastore, SCIP_SOL *sol, int depth, SCIP_Bool execdelayed, SCIP_RESULT *result)

SCIP_RETCODE SCIPconshdlrEnforceLPSol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_SEPASTORE *sepastore, SCIP_Bool solinfeasible, SCIP_RESULT *result)

SCIP_RETCODE SCIPconshdlrInitLP(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_Bool initkeptconss, SCIP_Bool *cutoff)

SCIP_RETCODE SCIPconshdlrPropagate(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool fullpropagation, SCIP_Bool execdelayed, SCIP_Bool instrongbranching, SCIP_PROPTIMING proptiming, SCIP_RESULT *result)

SCIP_RETCODE SCIPconshdlrEnforcePseudoSol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_BRANCHCAND *branchcand, SCIP_Bool solinfeasible, SCIP_Bool objinfeasible, SCIP_Bool forced, SCIP_RESULT *result)

internal methods for constraints and constraint handlers

SCIP_RETCODE SCIPcutpoolSeparate(SCIP_CUTPOOL *cutpool, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_SEPASTORE *sepastore, SCIP_SOL *sol, SCIP_Bool cutpoolisdelayed, SCIP_Bool root, SCIP_RESULT *result)

internal methods for storing cuts in a cut pool

#define SCIP_LONGINT_FORMAT

SCIP_RETCODE SCIPdispPrintLine(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, FILE *file, SCIP_Bool forcedisplay, SCIP_Bool endline)

internal methods for displaying runtime statistics

SCIP_RETCODE SCIPeventChgNode(SCIP_EVENT *event, SCIP_NODE *node)

SCIP_RETCODE SCIPeventProcess(SCIP_EVENT *event, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter)

SCIP_RETCODE SCIPeventChgType(SCIP_EVENT *event, SCIP_EVENTTYPE eventtype)

internal methods for managing events

SCIP_Real SCIPgetOrigObjoffset(SCIP *scip)

SCIP_OBJSENSE SCIPgetObjsense(SCIP *scip)

SCIP_Real SCIPgetTransObjscale(SCIP *scip)

SCIP_Real SCIPlpiInfinity(SCIP_LPI *lpi)

SCIP_Real SCIPrelDiff(SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPcolIsInLP(SCIP_COL *col)

SCIP_PROPTIMING SCIPconshdlrGetPropTiming(SCIP_CONSHDLR *conshdlr)

SCIP_Bool SCIPconshdlrWasSolSeparationDelayed(SCIP_CONSHDLR *conshdlr)

int SCIPconshdlrGetSepaPriority(SCIP_CONSHDLR *conshdlr)

const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)

SCIP_Bool SCIPconshdlrWasLPSeparationDelayed(SCIP_CONSHDLR *conshdlr)

SCIP_Bool SCIPconshdlrWasPropagationDelayed(SCIP_CONSHDLR *conshdlr)

int SCIPheurGetPriority(SCIP_HEUR *heur)

const char * SCIPheurGetName(SCIP_HEUR *heur)

BMS_BUFMEM * SCIPbuffer(SCIP *scip)

SCIP_NODETYPE SCIPnodeGetType(SCIP_NODE *node)

SCIP_Real SCIPnodeGetLowerbound(SCIP_NODE *node)

SCIP_Bool SCIPnodeIsActive(SCIP_NODE *node)

int SCIPnodeGetDepth(SCIP_NODE *node)

SCIP_Bool SCIPnodeIsPropagatedAgain(SCIP_NODE *node)

SCIP_SYNCSTORE * SCIPgetSyncstore(SCIP *scip)

const char * SCIPpricerGetName(SCIP_PRICER *pricer)

SCIP_Bool SCIPpropWasDelayed(SCIP_PROP *prop)

const char * SCIPpropGetName(SCIP_PROP *prop)

int SCIPpropGetPriority(SCIP_PROP *prop)

SCIP_PROPTIMING SCIPpropGetTimingmask(SCIP_PROP *prop)

void SCIPrelaxMarkUnsolved(SCIP_RELAX *relax)

const char * SCIPrelaxGetName(SCIP_RELAX *relax)

int SCIPrelaxGetPriority(SCIP_RELAX *relax)

SCIP_Bool SCIPsepaWasSolDelayed(SCIP_SEPA *sepa)

int SCIPsepaGetPriority(SCIP_SEPA *sepa)

const char * SCIPsepaGetName(SCIP_SEPA *sepa)

SCIP_Bool SCIPsepaWasLPDelayed(SCIP_SEPA *sepa)

SCIP_RETCODE SCIPcheckSolOrig(SCIP *scip, SCIP_SOL *sol, SCIP_Bool *feasible, SCIP_Bool printreason, SCIP_Bool completely)

SCIP_RETCODE SCIPprintRay(SCIP *scip, SCIP_SOL *sol, FILE *file, SCIP_Bool printzeros)

SCIP_Real SCIPgetPrimalbound(SCIP *scip)

SCIP_Real SCIPgetUpperbound(SCIP *scip)

SCIP_Real SCIPgetGap(SCIP *scip)

SCIP_Real SCIPgetDualbound(SCIP *scip)

SCIP_Real SCIPgetLowerbound(SCIP *scip)

SCIP_Longint SCIPgetNLimSolsFound(SCIP *scip)

void SCIPstoreSolutionGap(SCIP *scip)

SCIP_Longint SCIPgetNBestSolsFound(SCIP *scip)

SCIP_Bool SCIPvarIsInitial(SCIP_VAR *var)

SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)

SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)

SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)

SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)

int SCIPvarGetProbindex(SCIP_VAR *var)

const char * SCIPvarGetName(SCIP_VAR *var)

SCIP_Real SCIPvarGetLPSol(SCIP_VAR *var)

SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)

SCIP_BDCHGINFO * SCIPvarGetBdchgInfoLb(SCIP_VAR *var, int pos)

int SCIPvarGetNBdchgInfosUb(SCIP_VAR *var)

SCIP_BDCHGINFO * SCIPvarGetBdchgInfoUb(SCIP_VAR *var, int pos)

int SCIPvarGetNBdchgInfosLb(SCIP_VAR *var)

void SCIPregressionAddObservation(SCIP_REGRESSION *regression, SCIP_Real x, SCIP_Real y)

SCIP_RETCODE SCIPheurExec(SCIP_HEUR *heur, SCIP_SET *set, SCIP_PRIMAL *primal, int depth, int lpstateforkdepth, SCIP_HEURTIMING heurtiming, SCIP_Bool nodeinfeasible, int *ndelayedheurs, SCIP_RESULT *result)

SCIP_Bool SCIPheurShouldBeExecuted(SCIP_HEUR *heur, int depth, int lpstateforkdepth, SCIP_HEURTIMING heurtiming, SCIP_Bool *delayed)

internal methods for primal heuristics

void SCIPresetInterrupted(void)

SCIP_Bool SCIPterminated(void)

SCIP_Bool SCIPinterrupted(void)

methods for catching the user CTRL-C interrupt

SCIP_RETCODE SCIPlpFlush(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue)

SCIP_LPSOLSTAT SCIPlpGetSolstat(SCIP_LP *lp)

void SCIPlpSetIsRelax(SCIP_LP *lp, SCIP_Bool relax)

SCIP_Bool SCIPlpIsRelax(SCIP_LP *lp)

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 forcedlpsolve, SCIP_Bool *lperror)

SCIP_Real SCIPlpGetObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

SCIP_RETCODE SCIPlpGetProvedLowerbound(SCIP_LP *lp, SCIP_SET *set, SCIP_Real *bound)

SCIP_LPI * SCIPlpGetLPI(SCIP_LP *lp)

SCIP_RETCODE SCIPlpRemoveRedundantRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)

SCIP_Bool SCIPlpDiving(SCIP_LP *lp)

SCIP_Bool SCIPlpIsSolved(SCIP_LP *lp)

SCIP_Real SCIPlpGetGlobalPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

int SCIPlpGetNCols(SCIP_LP *lp)

void SCIPlpResetFeastol(SCIP_LP *lp, SCIP_SET *set)

SCIP_RETCODE SCIPlpGetPrimalRay(SCIP_LP *lp, SCIP_SET *set, SCIP_Real *ray)

int SCIPlpGetNRows(SCIP_LP *lp)

SCIP_Real SCIPlpGetPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)

internal methods for LP management

interface methods for specific LP solvers

size_t BMSgetNUsedBufferMemory(BMS_BUFMEM *buffer)

#define BMSclearMemoryArray(ptr, num)

struct BMS_BlkMem BMS_BLKMEM

void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)

void SCIPmessagePrintVerbInfo(SCIP_MESSAGEHDLR *messagehdlr, SCIP_VERBLEVEL verblevel, SCIP_VERBLEVEL msgverblevel, const char *formatstr,...)

SCIP_RETCODE SCIPnodeselSelect(SCIP_NODESEL *nodesel, SCIP_SET *set, SCIP_NODE **selnode)

internal methods for node selectors and node priority queues

SCIP_RETCODE SCIPpricerExec(SCIP_PRICER *pricer, SCIP_SET *set, SCIP_PROB *prob, SCIP_LP *lp, SCIP_PRICESTORE *pricestore, SCIP_Real *lowerbound, SCIP_Bool *stopearly, SCIP_RESULT *result)

internal methods for variable pricers

void SCIPpricestoreStartInitialLP(SCIP_PRICESTORE *pricestore)

SCIP_RETCODE SCIPpricestoreApplyVars(SCIP_PRICESTORE *pricestore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp)

int SCIPpricestoreGetNVars(SCIP_PRICESTORE *pricestore)

SCIP_RETCODE SCIPpricestoreAddProbVars(SCIP_PRICESTORE *pricestore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)

SCIP_RETCODE SCIPpricestoreAddVar(SCIP_PRICESTORE *pricestore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_VAR *var, SCIP_Real score, SCIP_Bool root)

int SCIPpricestoreGetNBoundResets(SCIP_PRICESTORE *pricestore)

void SCIPpricestoreEndInitialLP(SCIP_PRICESTORE *pricestore)

SCIP_RETCODE SCIPpricestoreResetBounds(SCIP_PRICESTORE *pricestore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)

internal methods for storing priced variables

SCIP_RETCODE SCIPprimalTrySolFree(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_SOL **sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)

SCIP_RETCODE SCIPprimalTrySol(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)

SCIP_RETCODE SCIPprimalAddSolFree(SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_SOL **sol, SCIP_Bool *stored)

internal methods for collecting primal CIP solutions and primal informations

SCIP_Real SCIPprobGetObjlim(SCIP_PROB *prob, SCIP_SET *set)

SCIP_Real SCIPprobExternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)

void SCIPprobStoreRootSol(SCIP_PROB *prob, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Bool roothaslp)

SCIP_Bool SCIPprobAllColsInLP(SCIP_PROB *prob, SCIP_SET *set, SCIP_LP *lp)

void SCIPprobUpdateBestRootSol(SCIP_PROB *prob, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)

SCIP_Real SCIPprobInternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)

internal methods for storing and manipulating the main problem

SCIP_RETCODE SCIPpropExec(SCIP_PROP *prop, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool execdelayed, SCIP_Bool instrongbranching, SCIP_PROPTIMING proptiming, SCIP_RESULT *result)

internal methods for propagators

public methods for managing constraints

public methods for primal heuristics

public methods for message output

public data structures and miscellaneous methods

public methods for variable pricers

public methods for propagators

public methods for relaxation handlers

public methods for separators

public methods for branch and bound tree

public methods for problem variables

void SCIPrelaxationSetSolValid(SCIP_RELAXATION *relaxation, SCIP_Bool isvalid, SCIP_Bool includeslp)

SCIP_Real SCIPrelaxationGetSolObj(SCIP_RELAXATION *relaxation)

SCIP_Bool SCIPrelaxIsSolved(SCIP_RELAX *relax, SCIP_STAT *stat)

SCIP_RETCODE SCIPrelaxExec(SCIP_RELAX *relax, SCIP_SET *set, SCIP_TREE *tree, SCIP_STAT *stat, int depth, SCIP_Real *lowerbound, SCIP_RESULT *result)

SCIP_Bool SCIPrelaxationIsLpIncludedForSol(SCIP_RELAXATION *relaxation)

SCIP_Bool SCIPrelaxationIsSolValid(SCIP_RELAXATION *relaxation)

internal methods for relaxators

SCIP_RETCODE SCIPreoptCheckCutoff(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_EVENTTYPE eventtype, SCIP_LP *lp, SCIP_LPSOLSTAT lpsolstat, SCIP_Bool isrootnode, SCIP_Bool isfocusnode, SCIP_Real lowerbound, int effectiverootdepth)

SCIP_RETCODE SCIPreoptApplyCuts(SCIP_REOPT *reopt, SCIP_NODE *node, SCIP_SEPASTORE *sepastore, SCIP_CUTPOOL *cutpool, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_Bool root)

SCIP_Bool SCIPreoptGetSolveLP(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_NODE *node)

data structures and methods for collecting reoptimization information

public methods for concurrent solving mode

public methods for memory management

public methods for global and local (sub)problems

public methods for solutions

public methods for querying solving statistics

SCIP_RETCODE SCIPsepaExecLP(SCIP_SEPA *sepa, SCIP_SET *set, SCIP_STAT *stat, SCIP_SEPASTORE *sepastore, int depth, SCIP_Real bounddist, SCIP_Bool allowlocal, SCIP_Bool execdelayed, SCIP_RESULT *result)

SCIP_RETCODE SCIPsepaExecSol(SCIP_SEPA *sepa, SCIP_SET *set, SCIP_STAT *stat, SCIP_SEPASTORE *sepastore, SCIP_SOL *sol, int depth, SCIP_Bool allowlocal, SCIP_Bool execdelayed, SCIP_RESULT *result)

internal methods for separators

void SCIPsepastoreEndInitialLP(SCIP_SEPASTORE *sepastore)

SCIP_RETCODE SCIPsepastoreClearCuts(SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp)

int SCIPsepastoreGetNCuts(SCIP_SEPASTORE *sepastore)

SCIP_RETCODE SCIPsepastoreAddCut(SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_ROW *cut, SCIP_Bool forcecut, SCIP_Bool root, SCIP_Bool *infeasible)

void SCIPsepastoreStartForceCuts(SCIP_SEPASTORE *sepastore)

void SCIPsepastoreEndForceCuts(SCIP_SEPASTORE *sepastore)

void SCIPsepastoreStartInitialLP(SCIP_SEPASTORE *sepastore)

SCIP_RETCODE SCIPsepastoreApplyCuts(SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool root, SCIP_EFFICIACYCHOICE efficiacychoice, SCIP_Bool *cutoff)

int SCIPsepastoreGetNCutsApplied(SCIP_SEPASTORE *sepastore)

internal methods for storing separated cuts

SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Real SCIPsetCeil(SCIP_SET *set, SCIP_Real val)

int SCIPsetGetSepaMaxcuts(SCIP_SET *set, SCIP_Bool root)

SCIP_Bool SCIPsetIsRelEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsDualfeasLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsPositive(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

void SCIPsetSortRelaxs(SCIP_SET *set)

SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

void SCIPsetSortPricers(SCIP_SET *set)

void SCIPsetSortSepas(SCIP_SET *set)

SCIP_Real SCIPsetInfinity(SCIP_SET *set)

void SCIPsetSortProps(SCIP_SET *set)

SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)

void SCIPsetSortHeurs(SCIP_SET *set)

SCIP_Real SCIPsetGetSepaMaxcutsGenFactor(SCIP_SET *set, SCIP_Bool root)

SCIP_Bool SCIPsetIsGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPsetIsZero(SCIP_SET *set, SCIP_Real val)

int SCIPsetGetPriceMaxvars(SCIP_SET *set, SCIP_Bool root)

SCIP_NODESEL * SCIPsetGetNodesel(SCIP_SET *set, SCIP_STAT *stat)

SCIP_Bool SCIPsetIsNegative(SCIP_SET *set, SCIP_Real val)

internal methods for global SCIP settings

#define SCIPsetFreeBufferArray(set, ptr)

#define SCIPsetAllocBufferArray(set, ptr, num)

#define SCIPsetReallocBufferArray(set, ptr, num)

SCIP_RETCODE SCIPsolCreateRelaxSol(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_RELAXATION *relaxation, SCIP_HEUR *heur)

SCIP_RETCODE SCIPsolCheck(SCIP_SOL *sol, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *feasible)

SCIP_RETCODE SCIPsolFree(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_PRIMAL *primal)

SCIP_RETCODE SCIPsolCreateCurrentSol(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_HEUR *heur)

SCIP_RETCODE SCIPsolSetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_VAR *var, SCIP_Real val)

SCIP_RETCODE SCIPsolCreatePseudoSol(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_HEUR *heur)

SCIP_RETCODE SCIPsolCreateLPSol(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_HEUR *heur)

SCIP_Real SCIPsolGetObj(SCIP_SOL *sol, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob)

SCIP_RETCODE SCIPsolCreate(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_HEUR *heur)

internal methods for storing primal CIP solutions

static SCIP_RETCODE cutpoolSeparate(SCIP_CUTPOOL *cutpool, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_SEPASTORE *sepastore, SCIP_Bool cutpoolisdelayed, SCIP_Bool root, int actdepth, SCIP_Bool *enoughcuts, SCIP_Bool *cutoff)

static SCIP_RETCODE enforceConstraints(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_RELAXATION *relaxation, SCIP_SEPASTORE *sepastore, SCIP_BRANCHCAND *branchcand, SCIP_Bool *branched, SCIP_Bool *cutoff, SCIP_Bool *infeasible, SCIP_Bool *propagateagain, SCIP_Bool *solvelpagain, SCIP_Bool *solverelaxagain, SCIP_Bool forced)

static SCIP_RETCODE updateEstimate(SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand)

enum PseudocostFlag PSEUDOCOSTFLAG

static SCIP_RETCODE applyBounding(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CONFLICT *conflict, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff)

static SCIP_RETCODE solveNodeInitialLP(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_PRICESTORE *pricestore, SCIP_SEPASTORE *sepastore, SCIP_CUTPOOL *cutpool, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool newinitconss, SCIP_Bool forcedlpsolve, SCIP_Bool *cutoff, SCIP_Bool *lperror)

static SCIP_RETCODE priceAndCutLoop(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_MEM *mem, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_PRICESTORE *pricestore, SCIP_SEPASTORE *sepastore, SCIP_CUTPOOL *cutpool, SCIP_CUTPOOL *delayedcutpool, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool fullseparation, SCIP_Bool forcedlpsolve, SCIP_Bool *propagateagain, SCIP_Bool *cutoff, SCIP_Bool *unbounded, SCIP_Bool *lperror, SCIP_Bool *pricingaborted)

static SCIP_RETCODE updatePseudocost(SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_Bool updateintegers, SCIP_Bool updatecontinuous)

SCIP_RETCODE SCIPsolveCIP(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_MEM *mem, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_RELAXATION *relaxation, SCIP_PRICESTORE *pricestore, SCIP_SEPASTORE *sepastore, SCIP_CUTPOOL *cutpool, SCIP_CUTPOOL *delayedcutpool, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *restart)

static SCIP_RETCODE separationRoundSol(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_SEPASTORE *sepastore, SCIP_SOL *sol, int actdepth, SCIP_Bool allowlocal, SCIP_Bool onlydelayed, SCIP_Bool *delayed, SCIP_Bool *enoughcuts, SCIP_Bool *cutoff)

static void updateLoopStatus(SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, int depth, SCIP_Bool *cutoff, SCIP_Bool *propagateagain, SCIP_Bool *solverelaxagain)

static SCIP_RETCODE propAndSolve(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_MEM *mem, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_RELAXATION *relaxation, SCIP_PRICESTORE *pricestore, SCIP_SEPASTORE *sepastore, SCIP_BRANCHCAND *branchcand, SCIP_CUTPOOL *cutpool, SCIP_CUTPOOL *delayedcutpool, SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_NODE *focusnode, int actdepth, SCIP_Bool propagate, SCIP_Bool solvelp, SCIP_Bool solverelax, SCIP_Bool forcedlpsolve, SCIP_Bool initiallpsolved, SCIP_Bool fullseparation, SCIP_Longint *afterlpproplps, SCIP_HEURTIMING *heurtiming, int *nlperrors, SCIP_Bool *fullpropagation, SCIP_Bool *propagateagain, SCIP_Bool *lpsolved, SCIP_Bool *relaxcalled, SCIP_Bool *solvelpagain, SCIP_Bool *solverelaxagain, SCIP_Bool *cutoff, SCIP_Bool *postpone, SCIP_Bool *unbounded, SCIP_Bool *stopped, SCIP_Bool *lperror, SCIP_Bool *pricingaborted, SCIP_Bool *forcedenforcement)

SCIP_RETCODE SCIPpropagateDomains(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CONFLICT *conflict, SCIP_CLIQUETABLE *cliquetable, int depth, int maxproprounds, SCIP_PROPTIMING timingmask, SCIP_Bool *cutoff)

static SCIP_RETCODE separationRoundLP(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_SEPASTORE *sepastore, int actdepth, SCIP_Real bounddist, SCIP_Bool allowlocal, SCIP_Bool onlydelayed, SCIP_Bool *delayed, SCIP_Bool *enoughcuts, SCIP_Bool *cutoff, SCIP_Bool *lperror, SCIP_Bool *mustsepa, SCIP_Bool *mustprice)

SCIP_RETCODE SCIPinitConssLP(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_SEPASTORE *sepastore, SCIP_CUTPOOL *cutpool, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool root, SCIP_Bool firstsubtreeinit, SCIP_Bool *cutoff)

static SCIP_RETCODE solveNodeRelax(SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_RELAXATION *relaxation, SCIP_PROB *transprob, SCIP_PROB *origprob, int depth, SCIP_Bool beforelp, SCIP_Bool *cutoff, SCIP_Bool *propagateagain, SCIP_Bool *solvelpagain, SCIP_Bool *solverelaxagain, SCIP_Bool *relaxcalled)

static SCIP_RETCODE solveNodeLP(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_MEM *mem, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_RELAXATION *relaxation, SCIP_PRICESTORE *pricestore, SCIP_SEPASTORE *sepastore, SCIP_CUTPOOL *cutpool, SCIP_CUTPOOL *delayedcutpool, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool initiallpsolved, SCIP_Bool fullseparation, SCIP_Bool newinitconss, SCIP_Bool forcedlpsolve, SCIP_Bool *propagateagain, SCIP_Bool *solverelaxagain, SCIP_Bool *cutoff, SCIP_Bool *unbounded, SCIP_Bool *lperror, SCIP_Bool *pricingaborted)

static SCIP_RETCODE applyCuts(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_RELAXATION *relaxation, SCIP_SEPASTORE *sepastore, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool root, SCIP_EFFICIACYCHOICE efficiacychoice, SCIP_Bool *cutoff, SCIP_Bool *propagateagain, SCIP_Bool *solvelpagain, SCIP_Bool *solverelaxagain)

static SCIP_RETCODE propagationRound(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, int depth, SCIP_Bool fullpropagation, SCIP_Bool onlydelayed, SCIP_Bool *delayed, SCIP_Bool *propagain, SCIP_PROPTIMING timingmask, SCIP_Bool *cutoff, SCIP_Bool *postpone)

static SCIP_RETCODE propagateDomains(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, int depth, int maxproprounds, SCIP_Bool fullpropagation, SCIP_PROPTIMING timingmask, SCIP_Bool *cutoff, SCIP_Bool *postpone)

SCIP_RETCODE SCIPpriceLoop(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_PRICESTORE *pricestore, SCIP_SEPASTORE *sepastore, SCIP_CUTPOOL *cutpool, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool pretendroot, SCIP_Bool displayinfo, int maxpricerounds, int *npricedcolvars, SCIP_Bool *mustsepa, SCIP_Bool *lperror, SCIP_Bool *aborted)

SCIP_RETCODE SCIPconstructCurrentLP(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_PRICESTORE *pricestore, SCIP_SEPASTORE *sepastore, SCIP_CUTPOOL *cutpool, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool newinitconss, SCIP_Bool *cutoff)

static SCIP_RETCODE addCurrentSolution(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_PRIMAL *primal, SCIP_RELAXATION *relaxation, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool checksol)

SCIP_Bool SCIPsolveIsStopped(SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool checknodelimits)

static SCIP_RETCODE solveNode(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_MEM *mem, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_RELAXATION *relaxation, SCIP_PRICESTORE *pricestore, SCIP_SEPASTORE *sepastore, SCIP_BRANCHCAND *branchcand, SCIP_CUTPOOL *cutpool, SCIP_CUTPOOL *delayedcutpool, SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff, SCIP_Bool *postpone, SCIP_Bool *unbounded, SCIP_Bool *infeasible, SCIP_Bool *restart, SCIP_Bool *afternodeheur, SCIP_Bool *stopped)

static SCIP_RETCODE updatePrimalRay(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_Bool lperror)

static void markRelaxsUnsolved(SCIP_SET *set, SCIP_RELAXATION *relaxation)

SCIP_RETCODE SCIPseparationRound(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_SEPASTORE *sepastore, SCIP_SOL *sol, int actdepth, SCIP_Bool allowlocal, SCIP_Bool onlydelayed, SCIP_Bool *delayed, SCIP_Bool *cutoff)

static SCIP_Bool restartAllowed(SCIP_SET *set, SCIP_STAT *stat)

static SCIP_RETCODE initLP(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_PRICESTORE *pricestore, SCIP_SEPASTORE *sepastore, SCIP_CUTPOOL *cutpool, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool root, SCIP_Bool *cutoff)

static SCIP_RETCODE separationRoundResolveLP(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_Bool *lperror, SCIP_Bool *mustsepa, SCIP_Bool *mustprice)

static SCIP_Bool isPseudocostUpdateValid(SCIP_VAR *var, SCIP_SET *set, SCIP_Real oldlpsolval, SCIP_Bool updateintegers, SCIP_Bool updatecontinuous)

SCIP_RETCODE SCIPprimalHeuristics(SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_NODE *nextnode, SCIP_HEURTIMING heurtiming, SCIP_Bool nodeinfeasible, SCIP_Bool *foundsol, SCIP_Bool *unbounded)

internal methods for main solving loop and node processing

void SCIPstatUpdatePrimalDualIntegrals(SCIP_STAT *stat, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Real upperbound, SCIP_Real lowerbound)

void SCIPstatUpdateMemsaveMode(SCIP_STAT *stat, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_MEM *mem)

internal methods for problem statistics

#define SCIPstatIncrement(stat, set, field)

unsigned int boundchgtype

SCIP_BRANCHINGDATA branchingdata

SCIP_BOUNDCHG * boundchgs

union SCIP_Node::@19 data

SCIP_Longint nbestsolsfound

SCIP_Longint nlimsolsfound

SCIP_Longint nrelaxsolsfound

SCIP_Longint nprimalzeroitlps

SCIP_REGRESSION * regressioncandsobjval

SCIP_Bool disableenforelaxmsg

SCIP_Longint ninfeasleaves

SCIP_Longint ndelayedcutoffs

SCIP_CLOCK * nodeactivationtime

SCIP_Longint externmemestim

SCIP_Longint nrootfirstlpiterations

SCIP_Longint ninitconssadded

SCIP_Longint nlpiterations

SCIP_Longint nnodesaboverefbound

SCIP_Real firstlpdualbound

SCIP_Longint nrootlpiterations

SCIP_Longint ninternalnodes

SCIP_CLOCK * relaxsoltime

SCIP_Longint ntotalinternalnodes

SCIP_BRANCHDIR lastbranchdir

SCIP_CLOCK * pseudosoltime

SCIP_Longint nlpbestsolsfound

SCIP_Longint nrelaxbestsolsfound

SCIP_Longint npsbestsolsfound

SCIP_Longint nisstoppedcalls

SCIP_Longint ndualzeroitlps

SCIP_Longint nnodelpiterations

SCIP_Longint nnodezeroitlps

SCIP_Longint npssolsfound

SCIP_Longint nbarrierzeroitlps

SCIP_Bool branchedunbdvar

SCIP_Longint nlpsolsfound

SCIP_Real lastbranchvalue

SCIP_Longint ninitlpiterations

SCIP_NODE * focuslpstatefork

SCIP_Bool forcinglpmessage

unsigned int pseudocostflag

datastructures for constraints and constraint handlers

datastructures for managing events

data structures for LP management

datastructures for block memory pools and memory buffers

datastructures for collecting primal CIP solutions and primal informations

datastructures for storing and manipulating the main problem

datastructures for global SCIP settings

datastructures for problem statistics

data structures for branch and bound tree

datastructures for problem variables

SCIP_Bool SCIPsyncstoreSolveIsStopped(SCIP_SYNCSTORE *syncstore)

the function declarations for the synchronization store

void SCIPnodeUpdateLowerbound(SCIP_NODE *node, SCIP_STAT *stat, SCIP_SET *set, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_Real newbound)

SCIP_Bool SCIPtreeIsFocusNodeLPConstructed(SCIP_TREE *tree)

SCIP_RETCODE SCIPnodeCutoff(SCIP_NODE *node, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_REOPT *reopt, SCIP_LP *lp, BMS_BLKMEM *blkmem)

SCIP_NODE * SCIPtreeGetFocusNode(SCIP_TREE *tree)

SCIP_Bool SCIPtreeProbing(SCIP_TREE *tree)

int SCIPtreeGetFocusDepth(SCIP_TREE *tree)

SCIP_RETCODE SCIPtreeSetNodesel(SCIP_TREE *tree, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_NODESEL *nodesel)

void SCIPnodeSetEstimate(SCIP_NODE *node, SCIP_SET *set, SCIP_Real newestimate)

SCIP_NODE * SCIPtreeGetCurrentNode(SCIP_TREE *tree)

void SCIPnodeMarkPropagated(SCIP_NODE *node, SCIP_TREE *tree)

int SCIPtreeGetNLeaves(SCIP_TREE *tree)

SCIP_RETCODE SCIPnodeCreateChild(SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_Real nodeselprio, SCIP_Real estimate)

SCIP_Bool SCIPtreeHasCurrentNodeLP(SCIP_TREE *tree)

SCIP_Real SCIPtreeGetLowerbound(SCIP_TREE *tree, SCIP_SET *set)

void SCIPtreeSetFocusNodeLP(SCIP_TREE *tree, SCIP_Bool solvelp)

int SCIPtreeGetNNodes(SCIP_TREE *tree)

SCIP_Bool SCIPtreeHasFocusNodeLP(SCIP_TREE *tree)

SCIP_RETCODE SCIPnodeFocus(SCIP_NODE **node, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *cutoff, SCIP_Bool postponed, SCIP_Bool exitsolve)

int SCIPtreeGetCurrentDepth(SCIP_TREE *tree)

SCIP_RETCODE SCIPnodeUpdateLowerboundLP(SCIP_NODE *node, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_LP *lp)

SCIP_RETCODE SCIPtreeCutoff(SCIP_TREE *tree, SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real cutoffbound)

SCIP_RETCODE SCIPtreeLoadLPState(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)

SCIP_RETCODE SCIPtreeLoadLP(SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_Bool *initroot)

internal methods for branch and bound tree

#define SCIP_EVENTTYPE_FIRSTLPSOLVED

#define SCIP_EVENTTYPE_NODEFEASIBLE

#define SCIP_EVENTTYPE_NODEFOCUSED

#define SCIP_EVENTTYPE_NODEINFEASIBLE

#define SCIP_EVENTTYPE_NODEBRANCHED

#define SCIP_EVENTTYPE_LPSOLVED

enum SCIP_LPSolStat SCIP_LPSOLSTAT

enum SCIP_BoundType SCIP_BOUNDTYPE

@ SCIP_LPSOLSTAT_NOTSOLVED

@ SCIP_LPSOLSTAT_TIMELIMIT

@ SCIP_LPSOLSTAT_UNBOUNDEDRAY

@ SCIP_LPSOLSTAT_INFEASIBLE

@ SCIP_LPSOLSTAT_OBJLIMIT

@ SCIP_LPSOLSTAT_ITERLIMIT

enum SCIP_VerbLevel SCIP_VERBLEVEL

enum SCIP_Result SCIP_RESULT

enum SCIP_Retcode SCIP_RETCODE

@ SCIP_EFFICIACYCHOICE_LP

@ SCIP_EFFICIACYCHOICE_RELAX

enum SCIP_Efficiacychoice SCIP_EFFICIACYCHOICE

@ SCIP_STATUS_TOTALNODELIMIT

@ SCIP_STATUS_BESTSOLLIMIT

@ SCIP_STATUS_PRIMALLIMIT

@ SCIP_STATUS_USERINTERRUPT

@ SCIP_STATUS_STALLNODELIMIT

@ SCIP_STATUS_RESTARTLIMIT

#define SCIP_HEURTIMING_BEFOREPRESOL

#define SCIP_HEURTIMING_DURINGPRICINGLOOP

#define SCIP_HEURTIMING_AFTERPSEUDONODE

#define SCIP_HEURTIMING_AFTERPROPLOOP

unsigned int SCIP_PROPTIMING

unsigned int SCIP_HEURTIMING

#define SCIP_HEURTIMING_DURINGLPLOOP

#define SCIP_HEURTIMING_DURINGPRESOLLOOP

#define SCIP_HEURTIMING_AFTERNODE

#define SCIP_PROPTIMING_AFTERLPLOOP

#define SCIP_HEURTIMING_AFTERLPPLUNGE

#define SCIP_HEURTIMING_AFTERPSEUDOPLUNGE

#define SCIP_PROPTIMING_BEFORELP

#define SCIP_HEURTIMING_AFTERLPNODE

#define SCIP_HEURTIMING_AFTERLPLOOP

#define SCIP_HEURTIMING_BEFORENODE

#define SCIP_PROPTIMING_DURINGLPLOOP

@ SCIP_NODETYPE_REFOCUSNODE

@ SCIP_NODETYPE_PROBINGNODE

@ SCIP_NODETYPE_FOCUSNODE

enum SCIP_BoundchgType SCIP_BOUNDCHGTYPE

@ SCIP_VARTYPE_CONTINUOUS

@ SCIP_BOUNDCHGTYPE_BRANCHING

SCIP_DOMCHGBOUND domchgbound

SCIP_Real SCIPvarGetPseudocost(SCIP_VAR *var, SCIP_STAT *stat, SCIP_Real solvaldelta)

SCIP_RETCODE SCIPvarUpdatePseudocost(SCIP_VAR *var, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real solvaldelta, SCIP_Real objdelta, SCIP_Real weight)

SCIP_RETCODE SCIPvarIncCutoffSum(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Real weight)

internal methods for problem variables

void SCIPvisualSolvedNode(SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node)

void SCIPvisualCutoffNode(SCIP_VISUAL *visual, SCIP_SET *set, SCIP_STAT *stat, SCIP_NODE *node, SCIP_Bool infeasible)

methods for creating output for visualization tools (VBC, BAK)


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4