A RetroSearch Logo

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

Search Query:

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

SCIP Doxygen Documentation: reopt.c Source File

60#define DEFAULT_MEM_VARAFTERDUAL 10 61#define DEFAULT_MEM_VAR 10 62#define DEFAULT_MEM_NODES 1000 63#define DEFAULT_MEM_RUN 200 64#define DEFAULT_MEM_DUALCONS 10 66#define DEFAULT_RANDSEED 67 69#define EVENTHDLR_NAME "Reopt" 70#define EVENTHDLR_DESC "node event handler for reoptimization" 83

assert(eventhdlr !=

NULL

);

95 if

( eventnode ==

NULL

)

119

assert(eventhdlr !=

NULL

);

145

assert(eventhdlr !=

NULL

);

185

assert(num <= reopt->nmaxactiveconss);

201

assert(runidx <= reopt->runsize);

212

assert(num <= reopt->soltree->solssize[runidx]);

236 for

(

int

s = reopt->

runsize

; s < newsize; ++s )

248

assert(num < reopt->runsize);

261

assert(reopttree !=

NULL

);

262

assert(blkmem !=

NULL

);

273 for

(

unsigned int id

= reopttree->

reoptnodessize

;

id

< (

unsigned int

)newsize; ++

id

)

298

assert(reoptnode !=

NULL

);

299

assert(blkmem !=

NULL

);

300

assert(var_mem >= 0);

301

assert(child_mem >= 0);

302

assert(conss_mem >= 0);

314 else if

( reoptnode->

varssize

< var_mem )

350 else if

( reoptnode->

consssize

< conss_mem )

374

assert(solnode !=

NULL

);

382

sibling = solnode->

child

;

385 while

( sibling !=

NULL

)

409

assert(reopt !=

NULL

);

410

assert(vars !=

NULL

);

418 for

(

int

v = 0; v < nvars; ++v )

445

assert(transvar !=

NULL

);

455

assert(0 <= probidx && probidx < reopt->nobjvars);

457

c1 = reopt->

objs

[obj1_id][probidx];

458

c2 = reopt->

objs

[obj2_id][probidx];

462

norm_obj1 +=

SQR

(c1);

463

norm_obj2 +=

SQR

(c2);

468

norm_obj1 = sqrt(norm_obj1);

469

norm_obj2 = sqrt(norm_obj2);

472

similarity /= (norm_obj1 * norm_obj2);

475

similarity =

MAX

(similarity, -1.0);

476

similarity =

MIN

(similarity, 1.0);

488

assert((*reoptnode) !=

NULL

);

489

assert(blkmem !=

NULL

);

492 if

( (*reoptnode)->consssize > 0 )

494

assert((*reoptnode)->conss !=

NULL

);

496 for

(

int

c = 0; c < (*reoptnode)->nconss; ++c )

498

assert((*reoptnode)->conss[c] !=

NULL

);

499

assert((*reoptnode)->conss[c]->vals !=

NULL

);

500

assert((*reoptnode)->conss[c]->vars !=

NULL

);

508

(*reoptnode)->nconss = 0;

509

(*reoptnode)->consssize = 0;

510

(*reoptnode)->conss =

NULL

;

514 if

( (*reoptnode)->childids !=

NULL

)

517

(*reoptnode)->nchilds = 0;

518

(*reoptnode)->allocchildmem = 0;

519

(*reoptnode)->childids =

NULL

;

523 if

( (*reoptnode)->dualredscur !=

NULL

)

525

assert((*reoptnode)->dualredscur->varssize > 0);

530

(*reoptnode)->dualredscur =

NULL

;

534 if

( (*reoptnode)->dualredsnex !=

NULL

)

536

assert((*reoptnode)->dualredsnex->varssize > 0);

541

(*reoptnode)->dualredsnex =

NULL

;

545 if

((*reoptnode)->varboundtypes !=

NULL

)

547

assert((*reoptnode)->varssize > 0);

549

(*reoptnode)->varboundtypes =

NULL

;

553 if

((*reoptnode)->varbounds !=

NULL

)

555

assert((*reoptnode)->varssize > 0);

557

(*reoptnode)->varbounds =

NULL

;

561 if

((*reoptnode)->vars !=

NULL

)

563

assert((*reoptnode)->varssize > 0);

565

(*reoptnode)->vars =

NULL

;

568

(*reoptnode)->varssize = 0;

571 if

((*reoptnode)->afterdualvarboundtypes !=

NULL

)

573

assert((*reoptnode)->afterdualvarssize > 0);

575

(*reoptnode)->afterdualvarboundtypes =

NULL

;

579 if

((*reoptnode)->afterdualvarbounds !=

NULL

)

581

assert((*reoptnode)->afterdualvarssize > 0);

583

(*reoptnode)->afterdualvarbounds =

NULL

;

587 if

((*reoptnode)->afterdualvars !=

NULL

)

589

assert((*reoptnode)->afterdualvarssize > 0);

591

(*reoptnode)->afterdualvars =

NULL

;

594

(*reoptnode)->afterdualvarssize = 0;

597

(*reoptnode) =

NULL

;

610

assert(reoptnode !=

NULL

);

612

assert(blkmem !=

NULL

);

615 if

( reoptnode->

nconss

> 0 )

620 for

(

int

c = 0; c < reoptnode->

nconss

; ++c )

622 if

( !reoptnode->

conss

[c]->linear )

624

assert(reoptnode->

conss

[c]->boundtypes !=

NULL

);

669

reoptnode->

nvars

= 0;

688

assert(reopttree !=

NULL

);

689

assert(id < reopttree->reoptnodessize);

717

assert(soltree !=

NULL

);

725

soltree->

nsols

[s] = 0;

755

assert(reopt !=

NULL

);

758

assert(solnode !=

NULL

);

759

assert(blkmem !=

NULL

);

761

child = (*solnode)->

child

;

764 while

( child !=

NULL

)

767

assert(child !=

NULL

);

774 if

( (*solnode)->sol !=

NULL

)

793

assert(reopt !=

NULL

);

797

assert(blkmem !=

NULL

);

827

assert(blkmem !=

NULL

);

828

assert(curnode !=

NULL

);

829

assert(child !=

NULL

&& *child ==

NULL

);

833

*child = curnode->

child

;

836 if

( *child ==

NULL

)

843

solnode->

father

= curnode;

846

solnode->

value

= val;

848

assert(var !=

NULL

);

855

curnode->

child

= *child;

857#ifdef SCIP_MORE_DEBUG 859

(

void

*) solnode->sibling);

865 while

( *child !=

NULL

)

867#ifdef SCIP_MORE_DEBUG 868 SCIPsetDebugMsg

(

set

,

"-> check %p: father=%p, value=%g, sibling=%p\n"

, (

void

*) *child, (

void

*) (*child)->

father

,

869

(*child)->

value

, (

void

*) (*child)->sibling);

876 if

( (*child)->sibling ==

NULL

)

882

solnode->

father

= curnode;

884

solnode->

value

= val;

886

assert(var !=

NULL

);

896

(*child)->sibling = solnode;

898#ifdef SCIP_MORE_DEBUG 900

(

void

*) solnode->sibling);

907#ifdef SCIP_MORE_DEBUG 909 SCIPsetDebugMsg

(

set

,

" before switching: node %p witch child=%p, sibling=%p, sol=%p, value=%g\n"

,

910

(

void

*) (*child), (

void

*) (*child)->child, (

void

*) (*child)->sibling, (

void

*) (*child)->sol,

913

(

void

*) solnode, (

void

*) solnode->child, (

void

*) solnode->sibling, (

void

*) solnode->sol,

917

solnode->child = (*child)->child;

918

(*child)->child =

NULL

;

921

solnode->value = (*child)->value;

922

(*child)->value = val;

926

solnode->sol = (*child)->sol;

927

(*child)->sol =

NULL

;

928#ifdef SCIP_MORE_DEBUG 929 SCIPsetDebugMsg

(

set

,

" after switching: node %p witch child=%p, sibling=%p, sol=%p, value=%g\n"

,

930

(

void

*) (*child), (

void

*) (*child)->child, (

void

*) (*child)->sibling, (

void

*) (*child)->sol,

933

(

void

*) solnode, (

void

*) solnode->child, (

void

*) solnode->sibling, (

void

*) solnode->sol,

953

solnode->

father

= curnode;

956

solnode->

value

= val;

958

assert(var !=

NULL

);

964

(*child)->sibling = solnode;

967#ifdef SCIP_MORE_DEBUG 969

(

void

*) solnode->sibling);

975

*child = (*child)->sibling;

980

solnode = curnode->

child

;

981

assert(solnode !=

NULL

);

1012

assert(reopt !=

NULL

);

1014

assert(stat !=

NULL

);

1015

assert(origprimal !=

NULL

);

1016

assert(blkmem !=

NULL

);

1017

assert(vars !=

NULL

);

1018

assert(sol !=

NULL

);

1019

assert(solnode !=

NULL

);

1025 if

(

set

->reopt_savesols > 0 )

1032 for

(

int

varid = 0; varid < nvars; ++varid )

1042

assert(child !=

NULL

);

1048 if

( (*added || bestsol) && !purelp )

1057

cursolnode->

sol

= copysol;

1068

assert(cursolnode->

sol

!=

NULL

);

1073

(*solnode) = cursolnode;

1086

assert(node !=

NULL

);

1096

child = node->

child

;

1099 while

( child !=

NULL

)

1123

assert(reopttree !=

NULL

);

1124

assert(id < reopttree->reoptnodessize);

1179

assert(reopttree !=

NULL

);

1181

assert(blkmem !=

NULL

);

1191 for

(

unsigned int id

= 1;

id

< reopttree->

reoptnodessize

; ++id )

1224

assert(reopttree !=

NULL

);

1231 for

(

unsigned int id

= 0;

id

< reopttree->

reoptnodessize

; ++id )

1259

assert(reopttree !=

NULL

);

1260

assert(blkmem !=

NULL

);

1284

assert(reopt !=

NULL

);

1285

assert(blkmem !=

NULL

);

1294

reopt->

dualreds

->varssize = size;

1297 else if

( reopt->

dualreds

->varssize < size )

1303

reopt->

dualreds

->varssize = newsize;

1318

assert(reopt !=

NULL

);

1319

assert(blkmem !=

NULL

);

1357

assert(reopt !=

NULL

);

1401

assert(reopt !=

NULL

);

1402

assert(blkmem !=

NULL

);

1403

assert(node !=

NULL

);

1404

assert(0 <

id

&& id < reopt->reopttree->reoptnodessize);

1411 if

( nconsprops > 0 || npropprops > 0 )

1423

assert(nvars + naddedbndchgs <= reopt->reopttree->reoptnodes[

id

]->varssize);

1427

*transintoorig =

TRUE

;

1455

assert(reopt !=

NULL

);

1456

assert(blkmem !=

NULL

);

1457

assert(node !=

NULL

);

1458

assert(0 <

id

&& id < reopt->reopttree->reoptnodessize);

1510 if

( nbranchvars > 0 )

1511

*transintoorig =

TRUE

;

1513 SCIPsetDebugMsg

(

set

,

" -> save %d bound changes after dual reductions\n"

, nbranchvars);

1535

assert(reopt !=

NULL

);

1537

assert(lp !=

NULL

);

1538

assert(blkmem !=

NULL

);

1543 for

(

int r

= 0;

r

< nlprows; ++

r

)

1576 for

(

int

c = 0; c < ncutvars; ++c )

1582

assert(cutvars[c] !=

NULL

);

1590 if

( cutvars[c] !=

NULL

)

1596

assert(cutvars[c] !=

NULL

);

1605

cutvals[c] = cutvals[c]/scalar;

1629

assert(reopt !=

NULL

);

1630

assert(0 <

id

&& id < reopt->reopttree->reoptnodessize);

1672 unsigned int

* parentid,

1676

assert(reopt !=

NULL

);

1686 int

nbranchings = 0;

1690 if

(

set

->reopt_saveprop )

1695

(*nbndchgs) = (*nbndchgs) + nbranchings + nconsprop + npropprops;

1733 unsigned int

parentid,

1734 unsigned int

childid

1739

assert(reopttree !=

NULL

);

1740

assert(blkmem !=

NULL

);

1766 unsigned int

nodeid,

1767 unsigned int

parentid

1770 unsigned int

childid;

1773

assert(reopt !=

NULL

);

1774

assert(blkmem !=

NULL

);

1775

assert(0 < nodeid && nodeid < reopt->reopttree->reoptnodessize);

1776

assert(parentid < reopt->reopttree->reoptnodessize);

1789

assert(0 < childid && childid < reopt->reopttree->reoptnodessize);

1831

assert(reopttree !=

NULL

);

1832

assert(blkmem !=

NULL

);

1833

assert(id < reopttree->reoptnodessize);

1839 SCIPsetDebugMsg

(

set

,

"-> delete subtree induced by ID %u (hard remove = %u)\n"

,

id

, exitsolve);

1844 unsigned int

childid;

1848

assert(0 < childid && childid < reopttree->reoptnodessize);

1857 if

( delnodeitself )

1879

assert(reopt !=

NULL

);

1880

assert(node !=

NULL

);

1881

assert(id < reopt->reopttree->reoptnodessize);

1884

assert(reoptnodes !=

NULL

);

1885

assert(reoptnodes[

id

] !=

NULL

);

1887 if

( reoptnodes[

id

]->childids !=

NULL

&& reoptnodes[

id

]->nchilds > 0 )

1890 unsigned int

parentid = 0;

1895

assert(parentid !=

id

);

1896

assert(reoptnodes[parentid] !=

NULL

);

1897

assert(reoptnodes[parentid]->childids !=

NULL

&& reoptnodes[parentid]->nchilds);

1907 if

( ndomchgs <= set->reopt_maxdiffofnodes )

1912 id

, reoptnodes[

id

]->nchilds);

1919 while

( reoptnodes[parentid]->childids[c] !=

id

)

1922

assert(c < reoptnodes[parentid]->nchilds);

1925

assert(reoptnodes[parentid]->childids[c] ==

id

);

1929

--reoptnodes[parentid]->

nchilds

;

1952

assert(reopttree !=

NULL

);

1953

assert(id < reopttree->reoptnodessize);

1958 unsigned int

childid;

1964 while

( seenids < nchildids )

1968

assert(childid < reopttree->reoptnodessize);

1997

assert(reoptnode !=

NULL

);

1998

assert(blkmem !=

NULL

);

2037

assert(reopt !=

NULL

);

2040

assert(blkmem !=

NULL

);

2041

assert(node !=

NULL

);

2042

assert(transvars !=

NULL

);

2045

assert(node !=

NULL

);

2047

*localrestart =

FALSE

;

2050

assert(id < reopt->reopttree->reoptnodessize);

2056 if

(

set

->reopt_objsimdelay > -1 )

2069 for

(

int

v = 0; v < ntransvars; ++v )

2078

assert(0 <= idx && idx < ntransvars);

2083

sim += (oldcoef * newcoef);

2092

*localrestart =

TRUE

;

2105 SCIPsetDebugMsg

(

set

,

" -> local similarity: %.4f%s\n"

, sim, *localrestart ?

" (solve subproblem from scratch)"

:

""

);

2120 unsigned int

parentid

2125

assert(reopttree !=

NULL

);

2126

assert(node !=

NULL

);

2127

assert(parent !=

NULL

);

2128

assert(1 <=

id

&& id < reopttree->reoptnodessize);

2130

assert(parentid < reopttree->reoptnodessize);

2131

assert(parentid == 0 || reopttree->

reoptnodes

[parentid] !=

NULL

);

2169

assert(nbranchvars <= reopttree->reoptnodes[

id

]->varssize);

2173

assert(nbranchvars <= reopttree->reoptnodes[

id

]->varssize);

2195

assert(reoptconsdata !=

NULL

);

2196

assert(cons !=

NULL

);

2199

allocbuffervals =

FALSE

;

2200

reoptconsdata->linear =

TRUE

;

2210

reoptconsdata->varssize = reoptconsdata->nvars;

2213

reoptconsdata->boundtypes =

NULL

;

2216

assert(conshdlr !=

NULL

);

2232

allocbuffervals =

TRUE

;

2234 for

(

int

v = 0; v < reoptconsdata->nvars; ++v )

2237

reoptconsdata->lhs = 1.0;

2246

allocbuffervals =

TRUE

;

2248 for

(

int

v = 0; v < reoptconsdata->nvars; ++v )

2253

reoptconsdata->lhs = 1.0;

2254

reoptconsdata->rhs = 1.0;

2258

reoptconsdata->rhs = 1.0;

2261

reoptconsdata->lhs = 1.0;

2277

assert(vars !=

NULL

);

2278

assert(vals !=

NULL

);

2281 for

(

int

v = 0; v < reoptconsdata->nvars; ++v )

2286

assert(vars[v] !=

NULL

);

2288

reoptconsdata->vars[v] = vars[v];

2289

reoptconsdata->vals[v] = vals[v];

2295

reoptconsdata->vals[v] *= scalar;

2298

reoptconsdata->lhs -= constant;

2300

reoptconsdata->rhs -= constant;

2304 if

( allocbuffervals )

2327

assert(reoptconsdata !=

NULL

);

2328

assert(cons !=

NULL

);

2331

reoptconsdata->linear =

FALSE

;

2334

assert(conshdlr !=

NULL

);

2339 SCIPerrorMessage

(

"Cannot handle constraints of type <%s> in saveConsBounddisjuction.\n"

,

2354

reoptconsdata->varssize = reoptconsdata->nvars;

2359 for

(

int

v = 0; v < reoptconsdata->nvars; ++v )

2364

assert(reoptconsdata->vars[v] !=

NULL

);

2370

reoptconsdata->vals[v] -= constant;

2371

reoptconsdata->vals[v] *= scalar;

2396

assert(node !=

NULL

);

2397

assert(reopttree !=

NULL

);

2398

assert(id < reopttree->reoptnodessize);

2417 for

(

int

c = nconss; c < naddedconss; ++c )

2456 else if

( strcmp(

"reopt_dual"

,

SCIPconsGetName

(addedcons[c])) == 0 )

2489

assert(reopt !=

NULL

);

2491

assert(id < reopt->reopttree->reoptnodessize);

2493

assert(node !=

NULL

);

2494

assert(blkmem !=

NULL

);

2499

nbndchgs = reopt->

dualreds

->nvars;

2513

&nbndchgs, reopt->

dualreds

->varssize);

2514

assert(nbndchgs <= reopt->dualreds->varssize);

2516

reopt->

dualreds

->nvars = nbndchgs;

2520 for

(

int

v = 0; v < nbndchgs; ++v )

2526

reopt->

dualreds

->vals[v] = (reopt->

dualreds

->vals[v] - constant) / scalar;

2532

assert(nbndchgs > 0);

2544

cons_is_next =

FALSE

;

2555

reopt->

dualreds

->vars, nbndchgs) );

2557

reopt->

dualreds

->vals, nbndchgs) );

2559

reopt->

dualreds

->boundtypes, nbndchgs) );

2569 SCIPsetDebugMsg

(

set

,

" -> save dual information of type 1: node %lld, nvars %d, constype %d\n"

,

2581

reopt->

dualreds

->vars, nbndchgs) );

2583

reopt->

dualreds

->vals, nbndchgs) );

2585

reopt->

dualreds

->boundtypes, nbndchgs) );

2593 SCIPsetDebugMsg

(

set

,

" -> save dual information of type 2: node %lld, nvars %d, constype %d\n"

,

2618 unsigned int

parentid = 0;

2620

assert(reopt !=

NULL

);

2622

assert(blkmem !=

NULL

);

2623

assert(node !=

NULL

);

2625 if

(

set

->reopt_maxsavednodes == 0 )

2646

assert(!isrootnode);

2649

assert(id < reopt->reopttree->reoptnodessize);

2659

assert(parent !=

NULL

);

2671

assert(parent !=

NULL

);

2680

assert(parentid == 0

2698

transintoorig =

FALSE

;

2701 if

(

set

->reopt_usecuts )

2707 if

( saveafterdual )

2714 if

(

set

->reopt_saveprop )

2720 if

( transintoorig )

2730#ifdef SCIP_MORE_DEBUG 2759 switch

( reopttype )

2762 if

(

set

->reopt_shrinkinner )

2782 if

(

set

->reopt_reducetofrontier )

2796 if

(

set

->reopt_reducetofrontier )

2846 if

(

set

->reopt_usecuts )

2851 switch

( reopttype )

2880 SCIPsetDebugMsg

(

set

,

" -> nvars: 0, ncons: 0, parentID: -, reopttype: %d, lowerbound: %g\n"

, reopttype,

2894 if

(

set

->reopt_reducetofrontier )

2913 SCIPsetDebugMsg

(

set

,

" -> nvars: 0, ncons: 0, parentID: -, reopttype: %d, lowerbound: %g\n"

, reopttype,

2927 if

(

set

->reopt_reducetofrontier )

2946 SCIPsetDebugMsg

(

set

,

" -> nvars: 0, ncons: 0, parentID: -, reopttype: %d, lowerbound:%g \n"

, reopttype,

3007

assert(

id

>= 1 && id < reopt->reopttree->reoptnodessize);

3008

assert(!isrootnode);

3015

assert(parent !=

NULL

);

3033 if

( saveafterdual )

3058 if

(

set

->reopt_usecuts )

3074 SCIPsetDebugMsg

(

set

,

" -> nvars: %d, ncons: %d, parentID: %u, reopttype: %d, lowerbound: %g\n"

,

3078#ifdef SCIP_MORE_DEBUG 3100 switch

( reopttype )

3175

assert(reopt !=

NULL

);

3193

assert(reoptnode !=

NULL

);

3194

assert(blkmem !=

NULL

);

3254

assert(reopt !=

NULL

);

3255

assert(blkmem !=

NULL

);

3257

assert(vars !=

NULL

);

3258

assert(vals !=

NULL

);

3259

assert(nbinvars + nintvars == nvars);

3266

reoptconsdata =

NULL

;

3271

reoptconsdata = reopt->

glbconss

[nglbconss];

3276

reoptconsdata->varssize = (int)(nbinvars+2*nintvars);

3277

reoptconsdata->nvars = 0;

3281

assert(reopt->

glbconss

[nglbconss]->nvars == 0);

3282

assert(reopt->

glbconss

[nglbconss]->varssize > 0);

3284

reoptconsdata = reopt->

glbconss

[nglbconss];

3286 if

( reoptconsdata->varssize < nbinvars+2*nintvars )

3289

(

int

)(nbinvars+2*nintvars)) );

3291

(

int

)(nbinvars+2*nintvars)) );

3293

(

int

)(nbinvars+2*nintvars)) );

3294

reoptconsdata->varssize = (int)(nbinvars+2*nintvars);

3297

assert(reoptconsdata !=

NULL

);

3299

reoptconsdata->lhs = 1.0;

3301

reoptconsdata->linear =

FALSE

;

3304 for

(

int

v = 0; v < nvars; ++v )

3306

assert(nvarsadded < reoptconsdata->varssize);

3307

assert(vars[v] !=

NULL

);

3321

reoptconsdata->vars[nvarsadded] = vars[v];

3326

reoptconsdata->vals[nvarsadded] = 0.0;

3333

reoptconsdata->vals[nvarsadded] = 1.0;

3340

assert(boundtypes !=

NULL

);

3342

reoptconsdata->vals[nvarsadded] = vals[v];

3354

reoptconsdata->vars[nvarsadded] = vars[v];

3370

reoptconsdata->vals[nvarsadded] = ubglb - 1.0;

3378

reoptconsdata->vals[nvarsadded] = lbglb + 1.0;

3382 else if

( boundtypes !=

NULL

)

3391

reoptconsdata->vals[nvarsadded] = roundedval + 1.0;

3399

reoptconsdata->vals[nvarsadded] = roundedval - 1.0;

3412

reoptconsdata->vals[nvarsadded] = roundedval - 1.0;

3417

reoptconsdata->vars[nvarsadded] = vars[v];

3418

reoptconsdata->vals[nvarsadded] = roundedval + 1.0;

3424

assert(nvars <= nvarsadded);

3425

assert(nvarsadded == nbinvars + 2 * nintvars);

3427

reoptconsdata->nvars = nvarsadded;

3443

assert(reopt !=

NULL

);

3444

assert(node !=

NULL

);

3465 if

( allocmem < nbranchvars )

3470

allocmem = nbranchvars;

3478 for

(

int

v = 0; v < nbranchvars; ++v )

3485

assert(nbinvars + nintvars == nbranchvars);

3513

assert(reopttree !=

NULL

);

3514

assert(blkmem !=

NULL

);

3515

assert(id1 < reopttree->reoptnodessize);

3516

assert(id2 < reopttree->reoptnodessize);

3530 for

(

int

c = 0; c < nchilds_id1; ++c )

3535 for

(

int

k = 0; k < nchilds_id2; ++k )

3573

assert(reopt !=

NULL

);

3575

assert(stat !=

NULL

);

3576

assert(transprob !=

NULL

);

3577

assert(tree !=

NULL

);

3578

assert(lp !=

NULL

);

3579

assert(branchcand !=

NULL

);

3580

assert(eventqueue !=

NULL

);

3581

assert(cliquetable !=

NULL

);

3582

assert(node !=

NULL

);

3583

assert(blkmem !=

NULL

);

3586

assert(reopttree !=

NULL

);

3587

assert(id < reopttree->reoptnodessize);

3590

assert(reoptnode !=

NULL

);

3597 for

(

int

v = 0; v < reoptnode->

nvars

; ++v )

3606

var = reoptnode->

vars

[v];

3635#ifdef SCIP_MORE_DEBUG 3691#ifdef SCIP_MORE_DEBUG 3698

nvars = reoptnode->

nvars

;

3702

++reoptnode->

nvars

;

3746

assert(reopt !=

NULL

);

3748

assert(id < reopt->reopttree->reoptnodessize);

3754

assert(stat !=

NULL

);

3755

assert(blkmem !=

NULL

);

3756

assert(transprob !=

NULL

);

3757

assert(origprob !=

NULL

);

3758

assert(tree !=

NULL

);

3759

assert(lp !=

NULL

);

3760

assert(branchcand !=

NULL

);

3761

assert(eventqueue !=

NULL

);

3762

assert(node !=

NULL

);

3786

assert(!reoptconsdata->linear);

3787

assert(reoptconsdata->vars !=

NULL

);

3788

assert(reoptconsdata->vals !=

NULL

);

3789

assert(reoptconsdata->boundtypes !=

NULL

);

3791

var = reoptconsdata->vars[0];

3792

newbound = reoptconsdata->vals[0];

3793

boundtype = reoptconsdata->boundtypes[0];

3804

newbound = reoptconsdata->vals[0] - 1.0;

3812

newbound = reoptconsdata->vals[0] + 1.0;

3850

assert(!reoptconsdata->linear);

3851

assert(reoptconsdata->vars !=

NULL

);

3852

assert(reoptconsdata->vals !=

NULL

);

3853

assert(reoptconsdata->boundtypes !=

NULL

);

3859 for

(

int

v = 0; v < reoptconsdata->nvars; ++v )

3882 SCIPerrorMessage

(

"Variable <%s> has to be either binary, (implied) integer, or continuous.\n"

,

3897 if

( reoptconsdata->nvars == nbinvars )

3899 for

(

int

v = 0; v < reoptconsdata->nvars; ++v )

3901

consvars[v] = reoptconsdata->vars[v];

3902

consval = reoptconsdata->vals[v];

3926

assert(nintvars > 0 || ncontvars > 0);

3933 for

(

int

v = 0; v < reoptconsdata->nvars; ++v )

3935

consvars[v] = reoptconsdata->vars[v];

3936

consvals[v] = reoptconsdata->vals[v];

3937

consboundtypes[v] = reoptconsdata->boundtypes[v];

3971

consvals,

FALSE

,

FALSE

,

TRUE

,

FALSE

,

TRUE

,

TRUE

,

FALSE

,

FALSE

,

FALSE

,

TRUE

) );

3979#ifdef SCIP_DEBUG_CONSS 4015

assert(reopt !=

NULL

);

4017

assert(stat !=

NULL

);

4018

assert(transprob !=

NULL

);

4019

assert(origprob !=

NULL

);

4020

assert(tree !=

NULL

);

4021

assert(lp !=

NULL

);

4022

assert(branchcand !=

NULL

);

4023

assert(eventqueue !=

NULL

);

4024

assert(cliquetable !=

NULL

);

4025

assert(node !=

NULL

);

4026

assert(blkmem !=

NULL

);

4029

assert(reopttree !=

NULL

);

4030

assert(0 <

id

&& id < reopttree->reoptnodessize);

4033

assert(reoptnode !=

NULL

);

4040 for

(

int

v = 0; v < reoptnode->

dualredscur

->nvars; ++v )

4049

boundtype = reoptnode->

dualredscur

->boundtypes[v];

4079#ifdef SCIP_MORE_DEBUG 4089

pos = reoptnode->

nvars

;

4091

reoptnode->

vars

[pos] = var;

4099

++reoptnode->

nvars

;

4103 if

( updatedualconss )

4143

assert(reopt !=

NULL

);

4145

assert(stat !=

NULL

);

4146

assert(transprob !=

NULL

);

4147

assert(origprob !=

NULL

);

4148

assert(tree !=

NULL

);

4149

assert(lp !=

NULL

);

4150

assert(branchcand !=

NULL

);

4151

assert(eventqueue !=

NULL

);

4152

assert(cliquetable !=

NULL

);

4153

assert(node !=

NULL

);

4154

assert(perm !=

NULL

);

4155

assert(vars !=

NULL

);

4156

assert(vals !=

NULL

);

4157

assert(boundtypes !=

NULL

);

4159

assert(blkmem !=

NULL

);

4160

assert(0 <

id

&& id < reopt->reopttree->reoptnodessize);

4168

assert(reopttree !=

NULL

);

4171

assert(reoptnode !=

NULL

);

4176

nbndchgs =

MIN

(negbndchg, nvars);

4179 for

(

int

v = 0; v < nbndchgs; ++v )

4181

var = vars[perm[v]];

4182

val = vals[perm[v]];

4183

boundtype = boundtypes[perm[v]];

4189 if

( v == nbndchgs-1 )

4217#ifdef SCIP_MORE_DEBUG 4240

assert(reopt !=

NULL

);

4243

assert(stat !=

NULL

);

4244

assert(blkmem !=

NULL

);

4245

assert(node !=

NULL

);

4246

assert(0 <

id

&& id < reopt->reopttree->reoptnodessize);

4260

assert(reoptconsdata !=

NULL

);

4261

assert(reoptconsdata->nvars > 0);

4262

assert(reoptconsdata->varssize >= reoptconsdata->nvars);

4274 if

( reoptconsdata->linear )

4277

reoptconsdata->lhs, reoptconsdata->rhs,

FALSE

,

FALSE

,

TRUE

,

TRUE

,

TRUE

,

TRUE

,

FALSE

,

FALSE

,

FALSE

,

TRUE

) );

4281

assert(reoptconsdata->boundtypes !=

NULL

);

4283

reoptconsdata->vals,

FALSE

,

FALSE

,

TRUE

,

TRUE

,

TRUE

,

TRUE

,

FALSE

,

FALSE

,

FALSE

,

TRUE

) );

4285#ifdef SCIP_DEBUG_CONSS 4301

assert(reopt !=

NULL

);

4331 unsigned int

* cutoffchilds;

4332 int

ncutoffchilds = 0;

4333 unsigned int

* redchilds;

4337

assert(reopt !=

NULL

);

4339

assert(id < reopt->reopttree->reoptnodessize);

4355 for

( c = 0; c < reoptnode->

nchilds

; ++c )

4360 int

* redundantvars;

4362 unsigned int

childid;

4368

childid = reoptnode->

childids

[c];

4369

assert(childid < reopt->reopttree->reoptnodessize);

4371

assert(child !=

NULL

);

4372#ifdef SCIP_MORE_DEBUG 4375 if

( child->

nvars

> 0 )

4380 for

(

int

v = 0; v < child->

nvars

&& !cutoff; ++v )

4388

transvar = child->

vars

[v];

4401 SCIPsetDebugMsg

(

set

,

" -> <%s> is fixed to %g, can not change bound to %g -> cutoff\n"

,

4411 SCIPsetDebugMsg

(

set

,

" -> <%s> is already fixed to %g -> redundant bound change\n"

,

4414

redundantvars[nredundantvars] = v;

4419 if

( !cutoff && nredundantvars > 0 )

4421 for

(

int

v = 0; v < nredundantvars; ++v )

4424

child->

vars

[redundantvars[v]] = child->

vars

[child->

nvars

-1];

4434 else if

( child->

nconss

== 0 )

4442

cutoffchilds[ncutoffchilds] = childid;

4445 else if

( redundant )

4447

redchilds[nredchilds] = childid;

4452 SCIPsetDebugMsg

(

set

,

"-> found %d redundant and %d infeasible nodes\n"

, nredchilds, ncutoffchilds);

4455 while

( ncutoffchilds > 0 )

4462 while

( reoptnode->

childids

[c] != cutoffchilds[ncutoffchilds-1] && c < reoptnode->nchilds )

4464

assert(reoptnode->

childids

[c] == cutoffchilds[ncutoffchilds-1]);

4475 while

( nredchilds > 0 )

4479 while

( reoptnode->

childids

[c] != redchilds[nredchilds-1] && c < reoptnode->nchilds )

4481

assert(reoptnode->

childids

[c] == redchilds[nredchilds-1]);

4510 for

(

int

cc = 0; cc < ncc; ++cc )

4544

assert(reopttree !=

NULL

);

4545

assert(id < reopttree->reoptnodessize);

4562

assert(reopt !=

NULL

);

4563

assert(id < reopt->reopttree->reoptnodessize);

4569 unsigned int

childid;

4572

assert(childid < reopt->reopttree->reoptnodessize);

4588 unsigned int

* leaves,

4593

assert(reopt !=

NULL

);

4594

assert(leavessize > 0 && leaves !=

NULL

);

4595

assert((*nleaves) >= 0);

4596

assert(id < reopt->reopttree->reoptnodessize);

4601 unsigned int

childid;

4603

assert(*nleaves <= leavessize);

4606

assert(childid < reopt->reopttree->reoptnodessize);

4620

(*nleaves) += nleaves2;

4636

assert(reopt !=

NULL

);

4638

assert(blkmem !=

NULL

);

4661

assert(reopt !=

NULL

);

4664

assert(blkmem !=

NULL

);

4695

assert(reopt !=

NULL

);

4697

assert(blkmem !=

NULL

);

4698

assert(origvars !=

NULL

);

4699

assert(norigvars >= 0);

4705 if

( reopt->

nobjvars

< norigvars )

4707 for

(

int

i = 0; i < reopt->

run

-1; ++i )

4710 for

(

int

v = reopt->

nobjvars

-1; v < norigvars; ++v )

4711

reopt->

objs

[i][v] = 0.0;

4718 for

(

int

v = 0; v < norigvars; ++v )

4730 for

(

int

i = 0; i < reopt->

run

; ++i )

4733 for

(

int

j = reopt->

nobjvars

; j < newsize; ++j )

4734

reopt->

objs

[i][j] = 0.0;

4738

assert(0 <= probidx && probidx < reopt->nobjvars);

4748 if

( reopt->

firstobj

== -1 && reopt->

objs

[reopt->

run

-1][probidx] != 0 )

4753 if

( reopt->

run

-1 >= 1 )

4785

assert(perm !=

NULL

);

4786

assert(vars !=

NULL

);

4787

assert(bounds !=

NULL

);

4788

assert(boundtypes !=

NULL

);

4794 for

(

int

v = 0; v < nvars; ++v )

4835

assert(reopt !=

NULL

);

4836

assert(sol !=

NULL

);

4837

assert(blkmem !=

NULL

);

4839

assert(stat !=

NULL

);

4840

assert(vars !=

NULL

);

4853 for

(

int

v = 0; v < nvars; ++v )

4856

assert(nbinvars + nintvars ==

w

);

4867

origvars[v] = vars[v];

4868

assert(origvars[v] !=

NULL

);

4896#undef SCIPreoptGetNRestartsGlobal 4897#undef SCIPreoptGetNRestartsLocal 4898#undef SCIPreoptGetNTotalRestartsLocal 4899#undef SCIPreoptGetFirstRestarts 4900#undef SCIPreoptGetLastRestarts 4901#undef SCIPreoptGetNFeasNodes 4902#undef SCIPreoptGetNTotalFeasNodes 4903#undef SCIPreoptGetNPrunedNodes 4904#undef SCIPreoptGetNTotalPrunedNodes 4905#undef SCIPreoptGetNCutoffReoptnodes 4906#undef SCIPreoptGetNTotalCutoffReoptnodes 4907#undef SCIPreoptGetNInfNodes 4908#undef SCIPreoptGetNTotalInfNodes 4909#undef SCIPreoptGetNInfSubtrees 4917

assert(reopt !=

NULL

);

4927

assert(reopt !=

NULL

);

4937

assert(reopt !=

NULL

);

4947

assert(reopt !=

NULL

);

4957

assert(reopt !=

NULL

);

4967

assert(reopt !=

NULL

);

4977

assert(reopt !=

NULL

);

4987

assert(reopt !=

NULL

);

4997

assert(reopt !=

NULL

);

5007

assert(reopt !=

NULL

);

5017

assert(reopt !=

NULL

);

5027

assert(reopt !=

NULL

);

5037

assert(reopt !=

NULL

);

5051

assert(reopt !=

NULL

);

5056

(*reopt)->simtolastobj = -2.0;

5057

(*reopt)->simtofirstobj = -2.0;

5058

(*reopt)->firstobj = -1;

5059

(*reopt)->currentnode = -1;

5060

(*reopt)->lastbranched = -1;

5061

(*reopt)->dualreds =

NULL

;

5062

(*reopt)->glbconss =

NULL

;

5063

(*reopt)->nglbconss = 0;

5064

(*reopt)->allocmemglbconss = 0;

5065

(*reopt)->ncheckedsols = 0;

5066

(*reopt)->nimprovingsols = 0;

5067

(*reopt)->noptsolsbyreoptsol = 0;

5068

(*reopt)->nglbrestarts = 0;

5069

(*reopt)->nlocrestarts = 0;

5070

(*reopt)->ntotallocrestarts = 0;

5071

(*reopt)->firstrestart = -1;

5072

(*reopt)->lastrestart = 0;

5073

(*reopt)->nobjvars = 0;

5074

(*reopt)->objhaschanged =

FALSE

;

5075

(*reopt)->consadded =

FALSE

;

5076

(*reopt)->addedconss =

NULL

;

5077

(*reopt)->naddedconss = 0;

5078

(*reopt)->addedconsssize = 0;

5079

(*reopt)->glblb =

NULL

;

5080

(*reopt)->glbub =

NULL

;

5081

(*reopt)->nactiveconss = 0;

5082

(*reopt)->nmaxactiveconss = 0;

5083

(*reopt)->activeconss =

NULL

;

5084

(*reopt)->activeconssset =

NULL

;

5090 for

(

int

i = 0; i < (*reopt)->runsize; ++i )

5092

(*reopt)->objs[i] =

NULL

;

5093

(*reopt)->prevbestsols[i] =

NULL

;

5094

(*reopt)->varhistory[i] =

NULL

;

5116

eventInitsolReopt, eventExitsolReopt,

NULL

, eventExecReopt,

NULL

) );

5118

assert(eventhdlr !=

NULL

);

5158

assert(reopt !=

NULL

);

5159

assert(*reopt !=

NULL

);

5162

assert(blkmem !=

NULL

);

5173 for

(

int

p = (*reopt)->run-1; p >= 0; --p )

5175 if

( (*reopt)->soltree->sols[p] !=

NULL

)

5178

(*reopt)->soltree->sols[p] =

NULL

;

5181 if

(

set

->reopt_storevarhistory && (*reopt)->varhistory[p] !=

NULL

)

5189

(*reopt)->varhistory[p] =

NULL

;

5195 if

(

set

->reopt_sepabestsol && (*reopt)->prevbestsols[p] !=

NULL

)

5200 if

( (*reopt)->objs[p] !=

NULL

)

5210 if

( (*reopt)->dualreds !=

NULL

)

5212 if

( (*reopt)->dualreds->varssize > 0 )

5214

assert(!(*reopt)->dualreds->linear);

5220

(*reopt)->dualreds =

NULL

;

5224 if

( (*reopt)->glbconss !=

NULL

&& (*reopt)->allocmemglbconss > 0 )

5227 for

(

int

c = 0; c < (*reopt)->allocmemglbconss; ++c )

5229 if

( (*reopt)->glbconss[c] !=

NULL

)

5231 if

( (*reopt)->glbconss[c]->varssize > 0 )

5236

(*reopt)->glbconss[c]->varssize = 0;

5239

--(*reopt)->nglbconss;

5242

assert((*reopt)->nglbconss == 0);

5245

(*reopt)->allocmemglbconss = 0;

5252 if

( (*reopt)->activeconssset !=

NULL

)

5258 if

( (*reopt)->glblb !=

NULL

)

5262

(*reopt)->glblb =

NULL

;

5263

(*reopt)->glbub =

NULL

;

5266

assert((*reopt)->glbub ==

NULL

);

5284

assert(reopt !=

NULL

);

5285

assert(node !=

NULL

);

5288

assert(id < reopt->reopttree->reoptnodessize);

5319

assert(reopt !=

NULL

);

5321

assert(sol !=

NULL

);

5337 SCIP_CALL

(

soltreeAddSol

(reopt,

set

, stat, origprimal, blkmem, vars, sol, &solnode, nvars, bestsol, added) );

5341

assert(solnode !=

NULL

);

5345

reopt->

soltree

->

sols

[run-1][insertpos] = solnode;

5368

assert(reopt !=

NULL

);

5369

assert(reopt->

run

-1 >= 0);

5370

assert(sol !=

NULL

);

5371

assert(blkmem !=

NULL

);

5373

assert(stat !=

NULL

);

5374

assert(origprimal !=

NULL

);

5380 if

(

set

->reopt_sepabestsol )

5398

assert(reopt !=

NULL

);

5400

assert(blkmem !=

NULL

);

5401

assert(origvars !=

NULL

);

5429

assert(reopt !=

NULL

);

5440

assert(reopt !=

NULL

);

5450

assert(reopt !=

NULL

);

5461

assert(reopt !=

NULL

);

5472

assert(reopt !=

NULL

);

5473

assert(0 < run && run <= reopt->runsize);

5488

assert(reopt !=

NULL

);

5490 for

(

int r

= 0;

r

< reopt->

run

; ++

r

)

5505

assert(reopt !=

NULL

);

5506

assert(run > 0 && run <= reopt->run);

5507

assert(sols !=

NULL

);

5509

assert(solssize > 0);

5510

assert(nsols !=

NULL

);

5513 for

(

int

s = 0; s < reopt->

soltree

->

nsols

[run-1]; ++s )

5519 if

( solssize < (*nsols) )

5523 for

(

int

s = 0; s < reopt->

soltree

->

nsols

[run-1]; ++s )

5543

assert(reopt !=

NULL

);

5576

assert(reopt !=

NULL

);

5578

assert(blkmem !=

NULL

);

5579

assert(transvars !=

NULL

);

5580

assert(ntransvars >= 0);

5581

assert(restart !=

NULL

);

5589 if

( reopt->

run

> 1 &&

set

->reopt_objsimdelay > -1.0 )

5600 SCIPsetDebugMsg

(

set

,

"-> restart reoptimization (objective functions are not similar enough)\n"

);

5612 SCIPsetDebugMsg

(

set

,

"-> restart reoptimization (found last %d optimal solutions by <reoptsols>)\n"

,

5637

assert(reopt !=

NULL

);

5646

assert(reopt !=

NULL

);

5660

assert(reopt !=

NULL

);

5661

assert(run1 > 0 && run1 <= reopt->run);

5662

assert(run2 > 0 && run2 <= reopt->run);

5663

assert(origvars !=

NULL

);

5664

assert(norigvars >= 0);

5674

assert(reopt !=

NULL

);

5677 if

( reopt->

run

-2 < 0 )

5689

assert(reopt !=

NULL

);

5691

assert(id < reopt->reopttree->reoptnodessize);

5704

assert(reopt !=

NULL

);

5705

assert(0 < run && run <= reopt->runsize);

5707 return

reopt->

objs

[run-1][idx];

5719

assert(reopt !=

NULL

);

5720

assert(0 < run && run <= reopt->run);

5732

assert(reopt !=

NULL

);

5734

assert(blkmem !=

NULL

);

5742

assert(cons !=

NULL

);

5744#ifdef SCIP_MORE_DEBUG 5766

assert(reopt !=

NULL

);

5773 while

( child !=

NULL

)

5788

assert(reopt !=

NULL

);

5794

assert(id < reopt->reopttree->reoptnodessize);

5800

assert(0 <

id

&& id < reopt->reopttree->reoptnodessize);

5813#undef SCIPreoptnodeGetNVars 5814#undef SCIPreoptnodeGetNConss 5815#undef SCIPreoptnodeGetNDualBoundChgs 5816#undef SCIPreoptnodeGetNChildren 5817#undef SCIPreoptnodeGetLowerbound 5818#undef SCIPreoptnodeGetType 5825

assert(reoptnode !=

NULL

);

5835

assert(reoptnode !=

NULL

);

5837 return

reoptnode->

nconss

;

5845

assert(reoptnode !=

NULL

);

5858

assert(reoptnode !=

NULL

);

5868

assert(reoptnode !=

NULL

);

5878

assert(reoptnode !=

NULL

);

5894

assert(reoptnode !=

NULL

);

5895

assert(vars !=

NULL

);

5896

assert(bounds !=

NULL

);

5897

assert(boundtypes !=

NULL

);

5898

assert(nvars !=

NULL

);

5899

assert(nconss !=

NULL

);

5901

(*nconss) = reoptnode->

nconss

;

5903 if

( mem < *nconss )

5906 for

(

int

c = 0; c < *nconss; ++c )

5908

assert(vars[c] !=

NULL

);

5909

assert(bounds[c] !=

NULL

);

5911

vars[c] = reoptnode->

conss

[c]->vars;

5912

bounds[c] = reoptnode->

conss

[c]->vals;

5913

boundtypes[c] = reoptnode->

conss

[c]->boundtypes;

5914

nvars[c] = reoptnode->

conss

[c]->nvars;

5921 unsigned int

parentid

5924

assert(reoptnode !=

NULL

);

5925

assert(parentid <= 536870911);

5939

assert(reopt !=

NULL

);

5942

assert(id < reopt->reopttree->reoptnodessize);

5950 unsigned int

childid;

5953

assert(childid < reopt->reopttree->reoptnodessize);

5972

assert(reopt !=

NULL

);

5974

assert(blkmem !=

NULL

);

5975

assert(node !=

NULL

);

5977 if

(

set

->reopt_sepaglbinfsubtrees )

6000 int

effectiverootdepth

6005

assert(reopt !=

NULL

);

6007

assert(blkmem !=

NULL

);

6008

assert(lp !=

NULL

);

6009

assert(node !=

NULL

);

6057

lowerbound =

MIN

(lowerbound, cutoffbound);

6062

isrootnode, lowerbound) );

6081 SCIPsetDebugMsg

(

set

,

" -> strong branched : %s\n"

, strongbranched ?

"yes"

:

"no"

);

6084 switch

( eventtype )

6088

assert(isfocusnode);

6117 if

( strongbranched )

6188

assert(isfocusnode);

6200 if

( strongbranched )

6226 if

( strongbranched )

6270

assert(reopt !=

NULL

);

6271

assert(node !=

NULL

);

6294

allocmem = reopt->

dualreds

->nvars + resizelength;

6299

assert(reopt->

dualreds

->varssize > 0);

6300

assert(reopt->

dualreds

->nvars >= 0);

6309

newval = (newval - constant) / scalar;

6310

oldval = (oldval - constant) / scalar;

6316 SCIPerrorMessage

(

"cannot store equal bounds: old = %g, new = %g\n"

, oldval, newval);

6352 int

ndualbndchgs = 0;

6354

assert(reopt !=

NULL

);

6355

assert(node !=

NULL

);

6360

ndualbndchgs = reopt->

dualreds

->nvars;

6363 return

ndualbndchgs;

6372 unsigned int

* childs,

6380

assert(reopt !=

NULL

);

6381

assert(childssize > 0 && childs !=

NULL

);

6382

assert(nchilds !=

NULL

);

6392

assert(id < reopt->reopttree->reoptnodessize);

6407 if

( childssize < *nchilds )

6410 for

(

int

c = 0; c < *nchilds; ++c )

6421 unsigned int

* leaves,

6428

assert(reopt !=

NULL

);

6429

assert(leavessize > 0 && leaves !=

NULL

);

6430

assert((*nleaves) >= 0);

6439 if

(

id

== 0 && node !=

NULL

)

6445

assert(id < reopt->reopttree->reoptnodessize);

6448 for

(

int

i = 0; i < leavessize; ++i )

6454 unsigned int

childid;

6456

assert(*nleaves + 1 <= leavessize);

6459

assert(childid < reopt->reopttree->reoptnodessize);

6473

(*nleaves) += nleaves2;

6494

assert(reopt !=

NULL

);

6496

assert(blkmem !=

NULL

);

6497

assert(nleaves >= 0);

6498

assert(nleaves == 0 || leaves !=

NULL

);

6499

assert(nchilds >= 0);

6500

assert(nchilds == 0 || childs !=

NULL

);

6501

assert(nsiblings >= 0);

6502

assert(nsiblings == 0 || siblings !=

NULL

);

6504 SCIPsetDebugMsg

(

set

,

"save unprocessed nodes (%d leaves, %d children, %d siblings)\n"

, nleaves, nchilds, nsiblings);

6507 for

(

int

n = 0; n < nleaves; ++n )

6514 for

(

int

n = 0; n < nchilds; ++n )

6521 for

(

int

n = 0; n < nsiblings; ++n )

6546

assert(reopt !=

NULL

);

6547

assert(stat !=

NULL

);

6550 if

( !

set

->reopt_storevarhistory )

6555

bestrun = reopt->

run

-2;

6576 for

(

int

v = 0; v < nvars; ++v )

6581

assert(transvar !=

NULL

);

6588

assert(0 <= idx && idx <= nvars);

6591 for

(

int

d = 0; d <= 1; ++d )

6615

(d == 0 ?

"down"

:

"up"

), avginference[d], avgcutoff[d]);

6632

assert(reopt !=

NULL

);

6633

assert(stat !=

NULL

);

6634

assert(blkmem !=

NULL

);

6637 if

( !

set

->reopt_storevarhistory )

6647 for

(

int

v = 0; v < nvars; ++v )

6654 for

(

int

v = 0; v < nvars; ++v )

6661

assert(idx >= 0 && idx < nvars);

6664

assert(transvar !=

NULL

);

6683 int

nrepresentatives,

6690

assert(reopt !=

NULL

);

6692

assert(blkmem !=

NULL

);

6693

assert(representatives !=

NULL

);

6694

assert(nrepresentatives > 0);

6710 for

(

int r

= 0;

r

< nrepresentatives; ++

r

)

6714

assert(1 <=

id

&& id < reopttree->reoptnodessize);

6725 if

( representatives[

r

]->nvars > 0 )

6727

assert(representatives[

r

]->nvars <= representatives[

r

]->varssize);

6729 for

(

int

v = 0; v < representatives[

r

]->

nvars

; ++v )

6736 if

( representatives[

r

]->nconss > 0 )

6738

assert(representatives[

r

]->nconss <= representatives[

r

]->consssize);

6740 for

(

int

c = 0; c < representatives[

r

]->

nconss

; ++c )

6743

representatives[

r

]->

conss

[c]->vals, representatives[

r

]->

conss

[c]->boundtypes,

6744

representatives[

r

]->

conss

[c]->lhs, representatives[

r

]->

conss

[c]->rhs,

6745

representatives[

r

]->

conss

[c]->nvars, representatives[

r

]->

conss

[c]->constype,

6746

representatives[

r

]->

conss

[c]->linear) );

6767 SCIPsetDebugMsg

(

set

,

"-> new tree consists of %d nodes, the root has %d child nodes.\n"

,

6786

assert(reopt !=

NULL

);

6788

assert(blkmem !=

NULL

);

6789

assert(consdata !=

NULL

);

6790

assert(dualreds !=

NULL

);

6795

consdata->boundtypes =

NULL

;

6797

consdata->varssize = dualreds->nvars;

6798

consdata->nvars = dualreds->nvars;

6800

consdata->linear =

TRUE

;

6803

consdata->lhs = 1.0;

6806 for

(

int

v = 0; v < consdata->nvars; ++v )

6808

assert(consdata->vars[v] !=

NULL

);

6814

consdata->vals[v] = 1.0;

6826

consdata->vals[v] = -1.0;

6827

consdata->lhs -= 1.0;

6846

assert(reopt !=

NULL

);

6848

assert(blkmem !=

NULL

);

6849

assert(consdata !=

NULL

);

6850

assert(dualreds !=

NULL

);

6857

consdata->varssize = dualreds->nvars;

6858

consdata->nvars = dualreds->nvars;

6860

consdata->linear =

FALSE

;

6866 for

(

int

v = 0; v < consdata->nvars; ++v )

6870

assert(consdata->vars[v] !=

NULL

);

6879

consdata->vals[v] =

MIN

(consdata->vals[v]+1.0, glbbd);

6885

consdata->vals[v] =

MAX

(glbbd, consdata->vals[v]-1.0);

6900 int

* ncreatedchilds,

6917

assert(reopt !=

NULL

);

6919

assert(stat !=

NULL

);

6920

assert(blkmem !=

NULL

);

6923

assert(reopttree !=

NULL

);

6926

assert(reoptnodes !=

NULL

);

6927

assert(reoptnodes[0] !=

NULL

);

6928

assert(reoptnodes[0]->dualreds);

6931

nchilds = reoptnodes[0]->

nchilds

;

6933

assert(reoptnodes[0]->dualredscur !=

NULL

);

6936

(*ncreatedchilds) = 0;

6946

assert(reoptnodes[

id

] ==

NULL

|| reoptnodes[

id

]->nvars == 0);

6959

assert(reoptnodes[

id

]->varssize >= nbndchgs);

6960

assert(reoptnodes[

id

]->nvars == 0);

6961

assert(reoptnodes[

id

]->vars !=

NULL

);

6962

assert(reoptnodes[

id

]->varbounds !=

NULL

);

6963

assert(reoptnodes[

id

]->varboundtypes !=

NULL

);

6966 if

( !

set

->reopt_usesplitcons )

6968

assert(perm ==

NULL

);

6973 for

( v = 0; v < nbndchgs; ++v )

6978

++reoptnodes[id]->

nvars

;

6981 if

( !

set

->reopt_usesplitcons )

6984

assert(reoptnodes[

id

]->nvars == reoptnodes[0]->dualredscur->

nvars

);

6988

assert(reoptnodes[0]->nchilds == 0);

6993

++(*ncreatedchilds);

6995 if

(

set

->reopt_usesplitcons )

7003

assert(*ncreatedchilds == 1);

7024

consdata = reoptnodes[id]->

conss

[0];

7027 for

( v = 0; v < nbndchgs; ++v )

7051 if

( nbinvars == nbndchgs )

7058

assert(nintvars > 0 || ncontvars > 0);

7061

++reoptnodes[id]->

nconss

;

7065

++(*ncreatedchilds);

7071

assert(*ncreatedchilds == 1);

7072

assert(perm !=

NULL

);

7076

boundtypes = reoptnodes[0]->

dualredscur

->boundtypes;

7078

assert(perm[0] == 0 && perm[nvars-1] == nvars-1);

7081 switch

(

set

->reopt_varorderinterdiction)

7102 for

(

int

c = 0; c < nvars; ++c )

7109

assert(reoptnodes[

id

] ==

NULL

|| reoptnodes[

id

]->nvars == 0);

7121

assert(reoptnodes[

id

]->varssize >= perm[c]+1);

7122

assert(reoptnodes[

id

]->nvars == 0);

7123

assert(reoptnodes[

id

]->vars !=

NULL

);

7124

assert(reoptnodes[

id

]->varbounds !=

NULL

);

7125

assert(reoptnodes[

id

]->varboundtypes !=

NULL

);

7128 if

(

set

->reopt_varorderinterdiction ==

'd'

)

7131 for

( v = 0; v < c; ++v )

7133

reoptnodes[id]->

vars

[v] = vars[v];

7134

reoptnodes[id]->

varbounds

[v] = bounds[v];

7141 for

( v = 0; v < c; ++v )

7143

reoptnodes[id]->

vars

[v] = vars[perm[v]];

7144

reoptnodes[id]->

varbounds

[v] = bounds[perm[v]];

7148

reoptnodes[id]->

nvars

+= c;

7152

reoptnodes[id]->

vars

[c] = vars[perm[c]];

7153

reoptnodes[id]->

varbounds

[c] = bounds[perm[c]];

7162

++reoptnodes[id]->

nvars

;

7167

++(*ncreatedchilds);

7170

assert(*ncreatedchilds == nvars+1);

7175

assert(perm ==

NULL

);

7178

assert(reoptnodes[0]->dualredscur->

vars

!=

NULL

);

7179

assert(reoptnodes[0]->dualredscur->vals !=

NULL

);

7180

assert(reoptnodes[0]->dualredscur->boundtypes !=

NULL

);

7200

assert(reopt !=

NULL

);

7201

assert(node !=

NULL

);

7204

assert(id < reopt->reopttree->reoptnodessize);

7225 int

* nbndchgsafterdual

7231 int

nafterdualvars2;

7233

assert(reopt !=

NULL

);

7234

assert(reoptnode !=

NULL

);

7235

assert(vars !=

NULL

);

7236

assert(vals !=

NULL

);

7237

assert(boundtypes !=

NULL

);

7239

(*nbndchgs) = reoptnode->

nvars

;

7243 if

( varssize == 0 || varssize < *nbndchgs + *nbndchgsafterdual )

7247 for

( v = 0; v < *nbndchgs; ++v )

7249

vars[v] = reoptnode->

vars

[v];

7255 for

( ; v < *nbndchgs + *nbndchgsafterdual; ++v )

7268 SCIPreoptnodeGetPath

(reopt, parent, &vars[v], &vals[v], &boundtypes[v], varssize, &nvars2, &nafterdualvars2);

7270

(*nbndchgs) += nvars2;

7271

(*nbndchgsafterdual) += nafterdualvars2;

7283

assert(reopt !=

NULL

);

7285

assert(id < reopt->reopttree->reoptnodessize);

7287

assert(blkmem !=

NULL

);

7313 int

* ncreatedchilds,

7319

assert(reopt !=

NULL

);

7322

assert(stat !=

NULL

);

7323

assert(transprob !=

NULL

);

7324

assert(origprob !=

NULL

);

7325

assert(tree !=

NULL

);

7326

assert(lp !=

NULL

);

7327

assert(branchcand !=

NULL

);

7328

assert(eventqueue !=

NULL

);

7329

assert(cliquetable !=

NULL

);

7330

assert(blkmem !=

NULL

);

7331

assert(reoptnode !=

NULL

);

7332

assert(childnodes !=

NULL

);

7334

assert(id < reopt->reopttree->reoptnodessize);

7335

assert(success !=

NULL

);

7348 if

(

set

->reopt_usesplitcons )

7354

(*ncreatedchilds) = 1;

7360

(*ncreatedchilds) = 2;

7366 if

( childnodessize < *ncreatedchilds )

7370 for

(

int

c = 0; c < *ncreatedchilds; ++c )

7380

cliquetable, blkmem, childnodes[c],

id

, c == 1) );

7396 SCIP_CALL

(

addSplitcons

(reopt,

scip

,

set

, stat, blkmem, transprob, origprob, tree, lp, branchcand,

7397

eventqueue, cliquetable, childnodes[c],

id

) );

7421 if

( reoptnode->

nconss

== 0 )

7428 SCIP_CALL

(

fixBounds

(reopt,

set

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

7429

blkmem, childnodes[c],

id

,

TRUE

) );

7457

boundtypes = reoptnode->

dualredscur

->boundtypes;

7460

*ncreatedchilds = nvars+1;

7464 if

( childnodessize < *ncreatedchilds )

7469 for

(

int

c = 0; c < nvars; ++c )

7473 switch

(

set

->reopt_varorderinterdiction)

7503 for

(

int

c = nvars; c >= 0; --c )

7508#ifdef SCIP_MORE_DEBUG 7514

cliquetable, blkmem, childnodes[c],

id

,

FALSE

) );

7520 SCIP_CALL

(

fixBounds

(reopt,

set

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

7521

blkmem, childnodes[c],

id

,

TRUE

) );

7532 SCIP_CALL

(

fixInterdiction

(reopt,

set

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

7533

blkmem, childnodes[c],

id

, perm, vars, bounds, boundtypes, nvars, c) );

7562

(*ncreatedchilds) = 1;

7565 if

( childnodessize < *ncreatedchilds )

7574

cliquetable, blkmem, childnodes[0],

id

,

FALSE

) );

7602

assert(reopt !=

NULL

);

7619

assert(reopt !=

NULL

);

7621

assert(stat !=

NULL

);

7622

assert(blkmem !=

NULL

);

7627 for

(

int

c = reopt->

nglbconss

-1; c >= 0; --c )

7635

assert(reopt->

glbconss

[c]->nvars > 0);

7643 for

(

int

v = 0; v < reopt->

glbconss

[c]->nvars; ++v )

7652 SCIPerrorMessage

(

"Expected variable type binary or (impl.) integer for variable <%s> in global constraint at pos. %d.\n"

,

7663 if

( nbinvars == reopt->

glbconss

[c]->nvars )

7670 for

(

int

v = 0; v < reopt->

glbconss

[c]->nvars; ++v )

7672

consvars[v] = reopt->

glbconss

[c]->vars[v];

7685

consvars,

FALSE

,

TRUE

,

TRUE

,

TRUE

,

TRUE

,

FALSE

,

FALSE

,

FALSE

,

FALSE

,

FALSE

) );

7693

assert(reopt->

glbconss

[c]->nvars == nbinvars + 2*nintvars);

7695 SCIPsetDebugMsg

(

set

,

"-> add bounddisjuction constraints with %d binvars, %d intvars\n"

, nbinvars, (

int

) (2*nintvars));

7702#ifdef SCIP_DEBUG_CONSS 7749

assert(reopt !=

NULL

);

7750

assert(node !=

NULL

);

7751

assert(sepastore !=

NULL

);

7752

assert(blkmem !=

NULL

);

7754

assert(stat !=

NULL

);

7755

assert(eventqueue !=

NULL

);

7756

assert(eventfilter !=

NULL

);

7757

assert(lp !=

NULL

);

7760

assert(id < reopt->reopttree->reoptnodessize);

7767

assert(reoptnode !=

NULL

);

7770 for

(

int

c = reoptnode->

nconss

-1; c >= 0; --c )

7774

cons = reoptnode->

conss

[c];

7775

assert(cons !=

NULL

);

7789 for

(

int

v = 0; v < cons->nvars; ++v )

7796

assert(transvar !=

NULL

);

7799

vals[ncols] = cons->vals[v];

7801

assert(cols[ncols] !=

NULL

);

7805

assert(ncols == cons->nvars);

7808

infeasible =

FALSE

;

7812 SCIP_CALL

(

SCIProwCreate

(&cut, blkmem,

set

, stat, cutname, ncols, cols, vals, cons->lhs, cons->rhs,

7816 SCIPsetDebugMsg

(

set

,

"add cut <%s> of size %d to cutpool, [lhs, rhs] = [%g,%g] to node %lld\n"

, cutname,

7821 SCIP_CALL

(

SCIProwCreate

(&cut, blkmem,

set

, stat, cutname, ncols, cols, vals, cons->lhs, cons->rhs,

7823 SCIP_CALL

(

SCIPsepastoreAddCut

(sepastore, blkmem,

set

, stat, eventqueue, eventfilter, lp, cut,

FALSE

, root,

7826 SCIPsetDebugMsg

(

set

,

"add cut <%s> of size %d to sepastore, [lhs, rhs] = [%g,%g] to node %lld\n"

, cutname,

7849 for

(

int

i = c-1; i >= 0; --i )

7868

assert(reopt !=

NULL

);

7869

assert(node !=

NULL

);

7873

assert(id < reopt->reopttree->reoptnodessize);

7912

assert(reoptnode !=

NULL

);

7921

reoptnode->

nvars

= 0;

7947

assert(reopt !=

NULL

);

7949

assert(blkmem !=

NULL

);

7950

assert(reoptnode !=

NULL

);

7963

assert(reoptnode !=

NULL

);

7964

assert(blkmem !=

NULL

);

7983

assert(reoptnode !=

NULL

);

7984

assert(var !=

NULL

);

7985

assert(blkmem !=

NULL

);

7987

nvars = reoptnode->

nvars

;

7991

reoptnode->

vars

[nvars] = var;

7994

++reoptnode->

nvars

;

8016

assert(reoptnode !=

NULL

);

8018

assert(vars !=

NULL

);

8019

assert(bounds !=

NULL

);

8022

assert(blkmem !=

NULL

);

8029 SCIPsetDebugMsg

(

set

,

"-> constraint has size 1 -> save as normal bound change.\n"

);

8042

assert(boundtypes !=

NULL

);

8046

newbound = bounds[0] + 1.0;

8053

newbound = bounds[0] - 1.0;

8064

nconss = reoptnode->

nconss

;

8072 if

( boundtypes !=

NULL

)

8078

reoptnode->

conss

[nconss]->boundtypes =

NULL

;

8080

reoptnode->

conss

[nconss]->varssize = nvars;

8081

reoptnode->

conss

[nconss]->nvars = nvars;

8082

reoptnode->

conss

[nconss]->lhs = lhs;

8083

reoptnode->

conss

[nconss]->rhs = rhs;

8084

reoptnode->

conss

[nconss]->constype = constype;

8085

reoptnode->

conss

[nconss]->linear = linear;

8099

assert(reopt !=

NULL

);

8101

assert(blkmem !=

NULL

);

8102

assert(cons !=

NULL

);

8104#ifdef SCIP_MORE_DEBUG 8152

assert(reopt !=

NULL

);

8153

assert(transprob !=

NULL

);

8164 for

(

int

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

8193

assert(reopt !=

NULL

);

8194

assert(transprob !=

NULL

);

8209 for

(

int

i = 0; i < nconss; ++i )

8238

assert(reopt !=

NULL

);

8239

assert(transprob !=

NULL

);

8247 for

(

int

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

8281

assert(reopt !=

NULL

);

8295

assert(cons !=

NULL

);

8321

assert(reopt !=

NULL

);

8322

assert(cons !=

NULL

);

void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)

void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)

SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)

void SCIPclockFree(SCIP_CLOCK **clck)

SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)

internal methods for clocks and timing issues

void SCIPconsCapture(SCIP_CONS *cons)

SCIP_RETCODE SCIPconsDeactivate(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)

SCIP_RETCODE SCIPconsGetNVars(SCIP_CONS *cons, SCIP_SET *set, int *nvars, SCIP_Bool *success)

SCIP_RETCODE SCIPconsRelease(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)

SCIP_RETCODE SCIPconsActivate(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool focusnode)

internal methods for constraints and constraint handlers

constraint handler for bound disjunction constraints

Constraint handler for linear constraints in their most general form, .

Constraint handler for logicor constraints (equivalent to set covering, but algorithms are suited fo...

Constraint handler for the set partitioning / packing / covering constraints .

SCIP_RETCODE SCIPcutpoolAddRow(SCIP_CUTPOOL *cutpool, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_ROW *row)

internal methods for storing cuts in a cut pool

common defines and data types used in all packages of SCIP

#define SCIP_LONGINT_FORMAT

SCIP_RETCODE SCIPeventhdlrCreate(SCIP_EVENTHDLR **eventhdlr, SCIP_SET *set, const char *name, const char *desc, SCIP_DECL_EVENTCOPY((*eventcopy)), SCIP_DECL_EVENTFREE((*eventfree)), SCIP_DECL_EVENTINIT((*eventinit)), SCIP_DECL_EVENTEXIT((*eventexit)), SCIP_DECL_EVENTINITSOL((*eventinitsol)), SCIP_DECL_EVENTEXITSOL((*eventexitsol)), SCIP_DECL_EVENTDELETE((*eventdelete)), SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)

internal methods for managing events

SCIP_Real SCIPgetRhsLinear(SCIP *scip, SCIP_CONS *cons)

SCIP_VAR ** SCIPgetVarsLinear(SCIP *scip, SCIP_CONS *cons)

SCIP_Real * SCIPgetBoundsBounddisjunction(SCIP *scip, SCIP_CONS *cons)

SCIP_Real SCIPgetLhsLinear(SCIP *scip, SCIP_CONS *cons)

SCIP_RETCODE SCIPcreateConsBasicBounddisjunction(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_BOUNDTYPE *boundtypes, SCIP_Real *bounds)

SCIP_Real * SCIPgetValsLinear(SCIP *scip, SCIP_CONS *cons)

SCIP_RETCODE SCIPcreateConsBounddisjunctionRedundant(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_BOUNDTYPE *boundtypes, SCIP_Real *bounds, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)

SCIP_BOUNDTYPE * SCIPgetBoundtypesBounddisjunction(SCIP *scip, SCIP_CONS *cons)

SCIP_VAR ** SCIPgetVarsSetppc(SCIP *scip, SCIP_CONS *cons)

SCIP_SETPPCTYPE SCIPgetTypeSetppc(SCIP *scip, SCIP_CONS *cons)

SCIP_RETCODE SCIPcreateConsLinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)

SCIP_VAR ** SCIPgetVarsLogicor(SCIP *scip, SCIP_CONS *cons)

SCIP_RETCODE SCIPcreateConsLogicor(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)

SCIP_VAR ** SCIPgetVarsBounddisjunction(SCIP *scip, SCIP_CONS *cons)

@ SCIP_SETPPCTYPE_PARTITIONING

@ SCIP_SETPPCTYPE_COVERING

@ SCIP_SETPPCTYPE_PACKING

SCIP_STAGE SCIPgetStage(SCIP *scip)

int SCIPgetNVars(SCIP *scip)

SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)

SCIP_VAR ** SCIPgetVars(SCIP *scip)

int SCIPgetNOrigVars(SCIP *scip)

void SCIPhashmapFree(SCIP_HASHMAP **hashmap)

SCIP_Real SCIPhashmapGetImageReal(SCIP_HASHMAP *hashmap, void *origin)

SCIP_RETCODE SCIPhashmapInsertReal(SCIP_HASHMAP *hashmap, void *origin, SCIP_Real image)

SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)

SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)

void SCIPhashsetFree(SCIP_HASHSET **hashset, BMS_BLKMEM *blkmem)

SCIP_Bool SCIPhashsetExists(SCIP_HASHSET *hashset, void *element)

void SCIPhashsetRemoveAll(SCIP_HASHSET *hashset)

SCIP_RETCODE SCIPhashsetInsert(SCIP_HASHSET *hashset, BMS_BLKMEM *blkmem, void *element)

SCIP_RETCODE SCIPhashsetCreate(SCIP_HASHSET **hashset, BMS_BLKMEM *blkmem, int size)

SCIP_RETCODE SCIPaddConsNode(SCIP *scip, SCIP_NODE *node, SCIP_CONS *cons, SCIP_NODE *validnode)

void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)

void SCIPrandomPermuteIntArray(SCIP_RANDNUMGEN *randnumgen, int *array, int begin, int end)

SCIP_VAR * SCIPcolGetVar(SCIP_COL *col)

const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)

SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)

SCIP_Bool SCIPconsIsDeleted(SCIP_CONS *cons)

SCIP_Bool SCIPconsIsActive(SCIP_CONS *cons)

const char * SCIPconsGetName(SCIP_CONS *cons)

SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)

const char * SCIPeventhdlrGetName(SCIP_EVENTHDLR *eventhdlr)

SCIP_RETCODE SCIPcatchVarEvent(SCIP *scip, SCIP_VAR *var, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)

SCIP_RETCODE SCIPdropVarEvent(SCIP *scip, SCIP_VAR *var, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)

SCIP_Real SCIPeventGetOldbound(SCIP_EVENT *event)

SCIP_VAR * SCIPeventGetVar(SCIP_EVENT *event)

SCIP_Real SCIPeventGetNewbound(SCIP_EVENT *event)

const char * SCIPheurGetName(SCIP_HEUR *heur)

#define SCIPallocBufferArray(scip, ptr, num)

#define SCIPfreeBufferArray(scip, ptr)

void SCIPnodeGetAncestorBranchings(SCIP_NODE *node, SCIP_VAR **branchvars, SCIP_Real *branchbounds, SCIP_BOUNDTYPE *boundtypes, int *nbranchvars, int branchvarssize)

void SCIPnodeSetReopttype(SCIP_NODE *node, SCIP_REOPTTYPE reopttype)

void SCIPnodeSetReoptID(SCIP_NODE *node, unsigned int id)

void SCIPnodeGetAncestorBranchingsPart(SCIP_NODE *node, SCIP_NODE *parent, SCIP_VAR **branchvars, SCIP_Real *branchbounds, SCIP_BOUNDTYPE *boundtypes, int *nbranchvars, int branchvarssize)

SCIP_NODETYPE SCIPnodeGetType(SCIP_NODE *node)

SCIP_Real SCIPnodeGetLowerbound(SCIP_NODE *node)

void SCIPnodeGetNDomchg(SCIP_NODE *node, int *nbranchings, int *nconsprop, int *nprop)

SCIP_Longint SCIPnodeGetNumber(SCIP_NODE *node)

SCIP_NODE * SCIPnodeGetParent(SCIP_NODE *node)

int SCIPnodeGetNAddedConss(SCIP_NODE *node)

void SCIPnodeGetAddedConss(SCIP_NODE *node, SCIP_CONS **addedconss, int *naddedconss, int addedconsssize)

int SCIPnodeGetDepth(SCIP_NODE *node)

SCIP_REOPTTYPE SCIPnodeGetReopttype(SCIP_NODE *node)

unsigned int SCIPnodeGetReoptID(SCIP_NODE *node)

SCIP_RETCODE SCIPaddReoptDualBndchg(SCIP *scip, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newbound, SCIP_Real oldbound)

SCIP_Bool SCIPisReoptEnabled(SCIP *scip)

SCIP_Real SCIProwGetLhs(SCIP_ROW *row)

SCIP_COL ** SCIProwGetCols(SCIP_ROW *row)

SCIP_Real SCIProwGetRhs(SCIP_ROW *row)

int SCIProwGetAge(SCIP_ROW *row)

int SCIProwGetNLPNonz(SCIP_ROW *row)

int SCIProwGetLPPos(SCIP_ROW *row)

SCIP_Real SCIProwGetConstant(SCIP_ROW *row)

SCIP_Real * SCIProwGetVals(SCIP_ROW *row)

SCIP_ROWORIGINTYPE SCIProwGetOrigintype(SCIP_ROW *row)

SCIP_HEUR * SCIPsolGetHeur(SCIP_SOL *sol)

SCIP_Bool SCIPsolIsOriginal(SCIP_SOL *sol)

SCIP_Bool SCIPisGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPisLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPisFeasLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPisFeasGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)

int SCIPgetEffectiveRootDepth(SCIP *scip)

SCIP_NODE * SCIPgetCurrentNode(SCIP *scip)

SCIP_RETCODE SCIPvarGetOrigvarSum(SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)

SCIP_RETCODE SCIPvarGetProbvarBound(SCIP_VAR **var, SCIP_Real *bound, SCIP_BOUNDTYPE *boundtype)

SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)

SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)

SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)

SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)

SCIP_Bool SCIPvarIsTransformed(SCIP_VAR *var)

SCIP_Real SCIPvarGetObj(SCIP_VAR *var)

SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)

SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)

int SCIPvarGetIndex(SCIP_VAR *var)

int SCIPvarGetProbindex(SCIP_VAR *var)

const char * SCIPvarGetName(SCIP_VAR *var)

SCIP_Bool SCIPvarIsTransformedOrigvar(SCIP_VAR *var)

SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)

SCIP_Bool SCIPvarIsNegated(SCIP_VAR *var)

SCIP_Bool SCIPvarIsRelaxationOnly(SCIP_VAR *var)

SCIP_Bool SCIPvarIsOriginal(SCIP_VAR *var)

SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)

SCIP_VAR * SCIPvarGetTransVar(SCIP_VAR *var)

int SCIPqueueNElems(SCIP_QUEUE *queue)

unsigned int SCIPqueueRemoveUInt(SCIP_QUEUE *queue)

void SCIPqueueFree(SCIP_QUEUE **queue)

SCIP_RETCODE SCIPqueueInsertUInt(SCIP_QUEUE *queue, unsigned int elem)

SCIP_RETCODE SCIPqueueCreate(SCIP_QUEUE **queue, int initsize, SCIP_Real sizefac)

void SCIPqueueClear(SCIP_QUEUE *queue)

SCIP_Bool SCIPqueueIsEmpty(SCIP_QUEUE *queue)

void SCIPsortDownRealInt(SCIP_Real *realarray, int *intarray, int len)

int SCIPsnprintf(char *t, int len, const char *s,...)

void SCIPhistoryReset(SCIP_HISTORY *history)

SCIP_Real SCIPhistoryGetAvgInferences(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)

SCIP_Real SCIPhistoryGetAvgCutoffs(SCIP_HISTORY *history, SCIP_BRANCHDIR dir)

SCIP_RETCODE SCIPhistoryCreate(SCIP_HISTORY **history, BMS_BLKMEM *blkmem)

void SCIPhistoryIncInferenceSum(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, SCIP_Real weight)

void SCIPhistoryIncCutoffSum(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, SCIP_Real weight)

void SCIPhistoryIncNBranchings(SCIP_HISTORY *history, SCIP_BRANCHDIR dir, int depth)

void SCIPhistoryFree(SCIP_HISTORY **history, BMS_BLKMEM *blkmem)

void SCIPhistoryUnite(SCIP_HISTORY *history, SCIP_HISTORY *addhistory, SCIP_Bool switcheddirs)

internal methods for branching and inference history

SCIP_LPSOLSTAT SCIPlpGetSolstat(SCIP_LP *lp)

SCIP_RETCODE SCIProwCreate(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_ROWORIGINTYPE origintype, void *origin, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)

SCIP_Real SCIPlpGetCutoffbound(SCIP_LP *lp)

SCIP_ROW ** SCIPlpGetRows(SCIP_LP *lp)

int SCIPlpGetNRows(SCIP_LP *lp)

SCIP_RETCODE SCIProwRelease(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)

internal methods for LP management

methods for block memory pools and memory buffers

memory allocation routines

#define BMSduplicateBlockMemoryArray(mem, ptr, source, num)

#define BMSfreeMemory(ptr)

#define BMSfreeBlockMemory(mem, ptr)

#define BMSallocBlockMemory(mem, ptr)

#define BMSreallocMemoryArray(ptr, num)

#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)

#define BMSallocMemoryArray(ptr, num)

#define BMSfreeMemoryArray(ptr)

#define BMSallocBlockMemoryArray(mem, ptr, num)

#define BMSfreeBlockMemoryNull(mem, ptr)

#define BMSfreeBlockMemoryArray(mem, ptr, num)

#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)

#define BMSallocClearBlockMemoryArray(mem, ptr, num)

#define BMSclearMemoryArray(ptr, num)

#define BMSallocClearMemoryArray(ptr, num)

struct BMS_BlkMem BMS_BLKMEM

#define BMSallocMemory(ptr)

void SCIPrandomFree(SCIP_RANDNUMGEN **randnumgen, BMS_BLKMEM *blkmem)

SCIP_RETCODE SCIPrandomCreate(SCIP_RANDNUMGEN **randnumgen, BMS_BLKMEM *blkmem, unsigned int initialseed)

internal miscellaneous methods

internal methods for collecting primal CIP solutions and primal informations

SCIP_CONS ** SCIPprobGetConss(SCIP_PROB *prob)

int SCIPprobGetNConss(SCIP_PROB *prob)

int SCIPprobGetNVars(SCIP_PROB *prob)

SCIP_VAR ** SCIPprobGetVars(SCIP_PROB *prob)

SCIP_Bool SCIPprobIsTransformed(SCIP_PROB *prob)

internal methods for storing and manipulating the main problem

#define SCIPdebugPrintCons(x, y, z)

static SCIP_RETCODE reoptMoveIDs(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, unsigned int id1, unsigned int id2)

SCIP_RETCODE SCIPreoptUpdateVarHistory(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_VAR **vars, int nvars)

static SCIP_RETCODE changeReopttypeOfSubtree(SCIP_REOPTTREE *reopttree, unsigned int id, SCIP_REOPTTYPE reopttype)

int SCIPreoptGetNDualBndchgs(SCIP_REOPT *reopt, SCIP_NODE *node)

SCIP_RETCODE SCIPreoptSaveActiveConss(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_PROB *transprob, BMS_BLKMEM *blkmem)

static int soltreeNInducedSols(SCIP_SOLNODE *solnode)

int SCIPreoptGetNTotalPrunedNodes(SCIP_REOPT *reopt)

SCIP_RETCODE SCIPreoptnodeReset(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_REOPTNODE *reoptnode)

SCIP_RETCODE SCIPreoptAddRun(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_VAR **origvars, int norigvars, int size)

SCIP_RETCODE SCIPreoptAddCons(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_CONS *cons)

int SCIPreoptGetNTotalFeasNodes(SCIP_REOPT *reopt)

void SCIPreoptAddNCheckedSols(SCIP_REOPT *reopt, int ncheckedsols)

static SCIP_RETCODE ensureSolsSize(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, int num, int runidx)

static SCIP_RETCODE reopttreeDeleteNode(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, unsigned int id, SCIP_Bool softreset)

int SCIPreoptGetFirstRestarts(SCIP_REOPT *reopt)

static SCIP_RETCODE saveAfterDualBranchings(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id, SCIP_Bool *transintoorig)

SCIP_RETCODE SCIPreoptAddSol(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *origprimal, BMS_BLKMEM *blkmem, SCIP_SOL *sol, SCIP_Bool bestsol, SCIP_Bool *added, SCIP_VAR **vars, int nvars, int run)

int SCIPreoptGetNTotalRestartsLocal(SCIP_REOPT *reopt)

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)

static SCIP_RETCODE transformDualredsToBounddisjunction(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_REOPTCONSDATA *consdata, SCIP_REOPTCONSDATA *dualreds)

static SCIP_RETCODE transformIntoOrig(SCIP_REOPT *reopt, unsigned int id)

static SCIP_RETCODE saveLocalConssData(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id)

int SCIPreoptGetNImprovingSols(SCIP_REOPT *reopt)

static SCIP_RETCODE addGlobalCut(SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_VAR **vars, SCIP_Real *vals, SCIP_BOUNDTYPE *boundtypes, int nvars, int nbinvars, int nintvars)

static SCIP_RETCODE addNode(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_REOPTTYPE reopttype, SCIP_Bool saveafterdual, SCIP_Bool isrootnode, SCIP_Real lowerbound)

static SCIP_RETCODE shrinkNode(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_NODE *node, unsigned int id, SCIP_Bool *shrank, BMS_BLKMEM *blkmem)

static void deleteLastDualBndchgs(SCIP_REOPT *reopt)

SCIP_RETCODE SCIPreoptAddInfNode(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node)

static SCIP_RETCODE clearReoptnodes(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_Bool softreset)

static SCIP_RETCODE reoptResetTree(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_Bool softreset)

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)

static SCIP_RETCODE reopttreeCheckMemory(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem)

SCIP_SOL * SCIPreoptGetLastBestSol(SCIP_REOPT *reopt)

static SCIP_RETCODE separateSolution(SCIP_REOPT *reopt, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_VAR **vars, int nvars)

SCIP_RETCODE SCIPreoptnodeAddBndchg(SCIP_REOPTNODE *reoptnode, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real val, SCIP_BOUNDTYPE boundtype)

SCIP_RETCODE SCIPreoptnodeAddCons(SCIP_REOPTNODE *reoptnode, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_VAR **vars, SCIP_Real *bounds, SCIP_BOUNDTYPE *boundtypes, SCIP_Real lhs, SCIP_Real rhs, int nvars, REOPT_CONSTYPE constype, SCIP_Bool linear)

SCIP_RETCODE SCIPreoptSplitRoot(SCIP_REOPT *reopt, SCIP_TREE *tree, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, int *ncreatedchilds, int *naddedconss)

#define DEFAULT_MEM_DUALCONS

static SCIP_RETCODE createSolTree(SCIP_SOLTREE *soltree, BMS_BLKMEM *blkmem)

SCIP_RETCODE SCIPreoptGetSolsRun(SCIP_REOPT *reopt, int run, SCIP_SOL **sols, int solssize, int *nsols)

static SCIP_DECL_EVENTEXITSOL(eventExitsolReopt)

static void resetStats(SCIP_REOPT *reopt)

static SCIP_RETCODE reoptRestart(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem)

static SCIP_RETCODE fixBounds(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id, SCIP_Bool updatedualconss)

SCIP_Bool SCIPreoptConsCanBeDeleted(SCIP_REOPT *reopt, SCIP_CONS *cons)

static SCIP_RETCODE freeReoptTree(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem)

int SCIPreoptGetNPrunedNodes(SCIP_REOPT *reopt)

int SCIPreoptGetNFeasNodes(SCIP_REOPT *reopt)

static SCIP_RETCODE reoptnodeDelete(SCIP_REOPTNODE **reoptnode, BMS_BLKMEM *blkmem)

static int reoptGetNLeaves(SCIP_REOPT *reopt, unsigned int id)

static SCIP_RETCODE saveGlobalCons(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, REOPT_CONSTYPE consttype)

static SCIP_RETCODE deleteChildrenBelow(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, unsigned int id, SCIP_Bool delnodeitself, SCIP_Bool exitsolve)

SCIP_RETCODE SCIPreoptDeleteNode(SCIP_REOPT *reopt, SCIP_SET *set, unsigned int id, BMS_BLKMEM *blkmem)

SCIP_Real SCIPreoptnodeGetLowerbound(SCIP_REOPTNODE *reoptnode)

static SCIP_RETCODE reoptnodeReset(SCIP_REOPTNODE *reoptnode, SCIP_SET *set, BMS_BLKMEM *blkmem)

int SCIPreoptGetNRestartsLocal(SCIP_REOPT *reopt)

SCIP_RETCODE SCIPreoptReleaseData(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem)

SCIP_RETCODE SCIPreoptResetDualBndchgs(SCIP_REOPT *reopt, SCIP_NODE *node, BMS_BLKMEM *blkmem)

void SCIPreoptResetSolMarks(SCIP_REOPT *reopt)

static SCIP_RETCODE getInferenceOrder(SCIP_SET *set, SCIP_STAT *stat, int *perm, SCIP_VAR **vars, SCIP_Real *bounds, SCIP_BOUNDTYPE *boundtypes, int nvars)

static SCIP_RETCODE freeSolTree(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_PRIMAL *origprimal, BMS_BLKMEM *blkmem)

int SCIPreoptGetNSols(SCIP_REOPT *reopt)

int SCIPreoptGetNSolsRun(SCIP_REOPT *reopt, int run)

void SCIPreoptnodeSetParentID(SCIP_REOPTNODE *reoptnode, unsigned int parentid)

SCIP_Real SCIPreoptGetSimToFirst(SCIP_REOPT *reopt)

static SCIP_RETCODE saveConsBounddisjuction(SCIP_REOPTCONSDATA *reoptconsdata, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_CONS *cons, SCIP_Bool *success)

static SCIP_RETCODE reoptAddChild(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, unsigned int parentid, unsigned int childid)

SCIP_RETCODE SCIPreoptApply(SCIP_REOPT *reopt, SCIP *scip, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, BMS_BLKMEM *blkmem, SCIP_REOPTNODE *reoptnode, unsigned int id, SCIP_Real estimate, SCIP_NODE **childnodes, int *ncreatedchilds, int *naddedconss, int childnodessize, SCIP_Bool *success)

#define DEFAULT_MEM_VARAFTERDUAL

int SCIPreoptGetNSavedSols(SCIP_REOPT *reopt)

#define DEFAULT_MEM_NODES

SCIP_Real SCIPreoptGetOldObjCoef(SCIP_REOPT *reopt, int run, int idx)

static void soltreeResetMarks(SCIP_SOLNODE *node)

static SCIP_RETCODE reoptnodeCheckMemory(SCIP_REOPTNODE *reoptnode, SCIP_SET *set, BMS_BLKMEM *blkmem, int var_mem, int child_mem, int conss_mem)

static SCIP_RETCODE cleanActiveConss(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem)

static SCIP_DECL_EVENTEXEC(eventExecReopt)

int SCIPreoptGetNCheckedSols(SCIP_REOPT *reopt)

static SCIP_RETCODE reoptGetLeaves(SCIP_REOPT *reopt, unsigned int id, unsigned int *leaves, int leavessize, int *nleaves)

static SCIP_RETCODE getLastSavedNode(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_NODE *node, SCIP_NODE **parent, unsigned int *parentid, int *nbndchgs)

static SCIP_RETCODE reoptCheckLocalRestart(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_VAR **transvars, int ntransvars, SCIP_Bool *localrestart)

static SCIP_RETCODE storeCuts(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_LP *lp, unsigned int id)

static SCIP_RETCODE transformDualredsToLinear(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_REOPTCONSDATA *consdata, SCIP_REOPTCONSDATA *dualreds)

SCIP_RETCODE SCIPreoptFree(SCIP_REOPT **reopt, SCIP_SET *set, SCIP_PRIMAL *origprimal, BMS_BLKMEM *blkmem)

static SCIP_RETCODE addLocalConss(SCIP *scip, SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id)

int SCIPreoptnodeGetNConss(SCIP_REOPTNODE *reoptnode)

static SCIP_RETCODE solnodeAddChild(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_SOLNODE *curnode, SCIP_SOLNODE **child, SCIP_VAR *var, SCIP_Real val, SCIP_Bool *added)

void SCIPreoptnodeGetConss(SCIP_REOPTNODE *reoptnode, SCIP_VAR ***vars, SCIP_Real **bounds, SCIP_BOUNDTYPE **boundtypes, int mem, int *nconss, int *nvars)

static SCIP_RETCODE checkMemGlbCons(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, int mem)

int SCIPreoptGetLastRestarts(SCIP_REOPT *reopt)

static SCIP_RETCODE reoptnodeResetDualConss(SCIP_REOPTNODE *reoptnode, BMS_BLKMEM *blkmem)

static SCIP_RETCODE createReopttree(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem)

int SCIPreoptnodeGetNVars(SCIP_REOPTNODE *reoptnode)

static SCIP_RETCODE ensureActiveconssSize(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, int num)

int SCIPreoptGetNTotalCutoffReoptnodes(SCIP_REOPT *reopt)

static int reopttreeGetNNodes(SCIP_REOPTTREE *reopttree, unsigned int id)

static SCIP_RETCODE createReoptnode(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, unsigned int id)

void SCIPreoptnodeGetPath(SCIP_REOPT *reopt, SCIP_REOPTNODE *reoptnode, SCIP_VAR **vars, SCIP_Real *vals, SCIP_BOUNDTYPE *boundtypes, int varssize, int *nbndchgs, int *nbndchgsafterdual)

SCIP_RETCODE SCIPreoptAddOptSol(SCIP_REOPT *reopt, SCIP_SOL *sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *origprimal, SCIP_VAR **vars, int nvars)

SCIP_REOPTTYPE SCIPreoptnodeGetType(SCIP_REOPTNODE *reoptnode)

int SCIPreoptGetNNodes(SCIP_REOPT *reopt, SCIP_NODE *node)

static SCIP_RETCODE moveChildrenUp(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, unsigned int nodeid, unsigned int parentid)

SCIP_Real SCIPreoptGetSavingtime(SCIP_REOPT *reopt)

SCIP_RETCODE SCIPreoptResetActiveConss(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat)

SCIP_RETCODE SCIPreoptnodeDelete(SCIP_REOPTNODE **reoptnode, BMS_BLKMEM *blkmem)

SCIP_RETCODE SCIPreoptCreate(SCIP_REOPT **reopt, SCIP_SET *set, BMS_BLKMEM *blkmem)

int SCIPreoptGetNTotalInfNodes(SCIP_REOPT *reopt)

SCIP_RETCODE SCIPreoptAddDualBndchg(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_VAR *var, SCIP_Real newval, SCIP_Real oldval)

static SCIP_Real reoptSimilarity(SCIP_REOPT *reopt, SCIP_SET *set, int obj1_id, int obj2_id, SCIP_VAR **vars, int nvars)

static SCIP_RETCODE collectDualInformation(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id, SCIP_REOPTTYPE reopttype)

SCIP_Real SCIPreoptGetSimilarity(SCIP_REOPT *reopt, SCIP_SET *set, int run1, int run2, SCIP_VAR **origvars, int norigvars)

static SCIP_RETCODE ensureRunSize(SCIP_REOPT *reopt, SCIP_SET *set, int num, BMS_BLKMEM *blkmem)

static SCIP_RETCODE dryBranch(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_Bool *runagain, unsigned int id)

static SCIP_RETCODE soltreefreeNode(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_PRIMAL *primal, BMS_BLKMEM *blkmem, SCIP_SOLNODE **solnode)

SCIP_RETCODE SCIPreoptGetLeaves(SCIP_REOPT *reopt, SCIP_NODE *node, unsigned int *leaves, int leavessize, int *nleaves)

static SCIP_RETCODE updatePropagation(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id, SCIP_Bool *transintoorig)

static SCIP_RETCODE soltreeAddSol(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *origprimal, BMS_BLKMEM *blkmem, SCIP_VAR **vars, SCIP_SOL *sol, SCIP_SOLNODE **solnode, int nvars, SCIP_Bool bestsol, SCIP_Bool *added)

int SCIPreoptGetNAddedConss(SCIP_REOPT *reopt, SCIP_NODE *node)

SCIP_RETCODE SCIPreoptMergeVarHistory(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR **vars, int nvars)

static SCIP_DECL_EVENTINITSOL(eventInitsolReopt)

static SCIP_RETCODE checkMemDualCons(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, int size)

static SCIP_RETCODE fixInterdiction(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id, int *perm, SCIP_VAR **vars, SCIP_Real *vals, SCIP_BOUNDTYPE *boundtypes, int nvars, int negbndchg)

SCIP_RETCODE SCIPreoptSaveGlobalBounds(SCIP_REOPT *reopt, SCIP_PROB *transprob, BMS_BLKMEM *blkmem)

SCIP_REOPTNODE * SCIPreoptGetReoptnode(SCIP_REOPT *reopt, unsigned int id)

void SCIPreoptAddNImprovingSols(SCIP_REOPT *reopt, int nimprovingsols)

static SCIP_RETCODE reoptnodeUpdateDualConss(SCIP_REOPTNODE *reoptnode, BMS_BLKMEM *blkmem)

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

SCIP_RETCODE SCIPreoptCheckRestart(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_VAR **transvars, int ntransvars, SCIP_Bool *restart)

static SCIP_RETCODE addSplitcons(SCIP_REOPT *reopt, SCIP *scip, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_NODE *node, unsigned int id)

int SCIPreoptGetNCutoffReoptnodes(SCIP_REOPT *reopt)

SCIP_RETCODE SCIPreoptInstallBounds(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, BMS_BLKMEM *blkmem)

static SCIP_RETCODE reoptSaveNewObj(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_VAR **origvars, int norigvars)

int SCIPreoptnodeGetNChildren(SCIP_REOPTNODE *reoptnode)

SCIP_RETCODE SCIPreoptApplyGlbConss(SCIP *scip, SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem)

SCIP_RETCODE SCIPreoptApplyCompression(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_REOPTNODE **representatives, int nrepresentatives, SCIP_Bool *success)

static SCIP_RETCODE changeAncestorBranchings(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int id, SCIP_Bool afterdualbranching)

int SCIPreoptnodeGetNDualBoundChgs(SCIP_REOPTNODE *reoptnode)

SCIP_Real SCIPreoptGetSimToPrevious(SCIP_REOPT *reopt)

SCIP_RETCODE SCIPreoptReset(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem)

SCIP_RETCODE SCIPreoptGetChildIDs(SCIP_REOPT *reopt, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, unsigned int *childs, int childssize, int *nchilds)

static SCIP_RETCODE saveAncestorBranchings(SCIP_REOPTTREE *reopttree, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_NODE *node, SCIP_NODE *parent, unsigned int id, unsigned int parentid)

int SCIPreoptGetNRestartsGlobal(SCIP_REOPT *reopt)

SCIP_RETCODE SCIPreoptSaveOpenNodes(SCIP_REOPT *reopt, SCIP_SET *set, SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_NODE **leaves, int nleaves, SCIP_NODE **childs, int nchilds, SCIP_NODE **siblings, int nsiblings)

static SCIP_RETCODE saveConsLinear(SCIP_REOPTCONSDATA *reoptconsdata, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_CONS *cons, SCIP_Bool *success)

SCIP_SOL * SCIPreoptGetBestSolRun(SCIP_REOPT *reopt, int run)

void SCIPreoptnodeInit(SCIP_REOPTNODE *reoptnode, SCIP_SET *set)

int SCIPreoptGetNLeaves(SCIP_REOPT *reopt, SCIP_NODE *node)

int SCIPreoptGetNInfNodes(SCIP_REOPT *reopt)

data structures and methods for collecting reoptimization information

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)

internal methods for storing separated cuts

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

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

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

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

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

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

SCIP_Real SCIPsetInfinity(SCIP_SET *set)

SCIP_RETCODE SCIPsetGetIntParam(SCIP_SET *set, const char *name, int *value)

SCIP_RETCODE SCIPsetIncludeEventhdlr(SCIP_SET *set, SCIP_EVENTHDLR *eventhdlr)

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

SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)

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

SCIP_Bool SCIPsetIsIntegral(SCIP_SET *set, SCIP_Real val)

SCIP_Bool SCIPsetIsZero(SCIP_SET *set, SCIP_Real val)

SCIP_BRANCHRULE * SCIPsetFindBranchrule(SCIP_SET *set, const char *name)

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

SCIP_Real SCIPsetRound(SCIP_SET *set, SCIP_Real val)

int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)

SCIP_Bool SCIPsetIsNegative(SCIP_SET *set, SCIP_Real val)

unsigned int SCIPsetInitializeRandomSeed(SCIP_SET *set, unsigned int initialseedvalue)

internal methods for global SCIP settings

#define SCIPsetFreeBufferArray(set, ptr)

#define SCIPsetAllocBufferArray(set, ptr, num)

#define SCIPsetReallocBufferArray(set, ptr, num)

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

SCIP_Real SCIPsolGetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)

SCIP_RETCODE SCIPsolCopy(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_SOL *sourcesol)

internal methods for storing primal CIP solutions

SCIP_Real pscostweightedmean[2]

SCIP_Real pscostvariance[2]

SCIP_VAR ** afterdualvars

SCIP_REOPTCONSDATA * dualredscur

SCIP_REOPTCONSDATA * dualredsnex

SCIP_BOUNDTYPE * afterdualvarboundtypes

SCIP_BOUNDTYPE * varboundtypes

SCIP_Real * afterdualvarbounds

SCIP_REOPTCONSDATA ** conss

unsigned int reoptnodessize

SCIP_REOPTNODE ** reoptnodes

int ntotalcutoffreoptnodes

SCIP_REOPTCONSDATA ** glbconss

SCIP_REOPTTREE * reopttree

SCIP_REOPTCONSDATA * dualreds

SCIP_Longint lastbranched

SCIP_RANDNUMGEN * randnumgen

SCIP_Longint lastseennode

SCIP_HASHSET * activeconssset

SCIP_HISTORY *** varhistory

void SCIPnodeGetDualBoundchgs(SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *bounds, SCIP_BOUNDTYPE *boundtypes, int *nvars, int varssize)

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

void SCIPnodeGetPropsAfterDual(SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *varbounds, SCIP_BOUNDTYPE *varboundtypes, int *nvars, int varssize)

SCIP_NODE * SCIPtreeGetRootNode(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_RETCODE SCIPnodeAddBoundchg(SCIP_NODE *node, 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_VAR *var, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype, SCIP_Bool probingchange)

int SCIPnodeGetNDualBndchgs(SCIP_NODE *node)

void SCIPnodeGetPropsBeforeDual(SCIP_NODE *node, SCIP_VAR **vars, SCIP_Real *varbounds, SCIP_BOUNDTYPE *varboundtypes, int *npropvars, int propvarssize)

internal methods for branch and bound tree

#define SCIP_EVENTTYPE_NODEFEASIBLE

#define SCIP_EVENTTYPE_GBDCHANGED

#define SCIP_EVENTTYPE_NODEINFEASIBLE

#define SCIP_EVENTTYPE_NODEBRANCHED

#define SCIP_EVENTTYPE_FORMAT

@ SCIP_BRANCHDIR_DOWNWARDS

enum SCIP_BranchDir SCIP_BRANCHDIR

enum SCIP_LPSolStat SCIP_LPSOLSTAT

@ SCIP_ROWORIGINTYPE_REOPT

@ SCIP_ROWORIGINTYPE_SEPA

enum SCIP_BoundType SCIP_BOUNDTYPE

@ SCIP_LPSOLSTAT_NOTSOLVED

@ SCIP_LPSOLSTAT_INFEASIBLE

@ SCIP_LPSOLSTAT_OBJLIMIT

@ SCIP_REOPTTYPE_INFSUBTREE

@ SCIP_REOPTTYPE_LOGICORNODE

@ SCIP_REOPTTYPE_FEASIBLE

@ SCIP_REOPTTYPE_STRBRANCHED

enum SCIP_ReoptType SCIP_REOPTTYPE

struct SCIP_ReoptConsData SCIP_REOPTCONSDATA

@ REOPT_CONSTYPE_DUALREDS

@ REOPT_CONSTYPE_INFSUBTREE

enum Reopt_ConsType REOPT_CONSTYPE

enum SCIP_Retcode SCIP_RETCODE

@ SCIP_NODETYPE_PROBINGNODE

@ SCIP_NODETYPE_FOCUSNODE

@ SCIP_VARTYPE_CONTINUOUS

@ SCIP_VARSTATUS_MULTAGGR

void SCIPvarAdjustLb(SCIP_VAR *var, SCIP_SET *set, SCIP_Real *lb)

SCIP_RETCODE SCIPvarChgLbGlobal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Real newbound)

SCIP_RETCODE SCIPvarChgUbGlobal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Real newbound)

SCIP_Real SCIPvarGetAvgInferences(SCIP_VAR *var, SCIP_STAT *stat, SCIP_BRANCHDIR dir)

SCIP_RETCODE SCIPvarChgLbLocal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real newbound)

SCIP_RETCODE SCIPvarNegate(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR **negvar)

void SCIPvarAdjustUb(SCIP_VAR *var, SCIP_SET *set, SCIP_Real *ub)

SCIP_RETCODE SCIPvarChgUbLocal(SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real newbound)

internal methods for problem variables


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