A RetroSearch Logo

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

Search Query:

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

SCIP Doxygen Documentation: sepa_eccuts.c Source File

45#define SEPA_NAME "eccuts" 46#define SEPA_DESC "separator for edge-concave functions" 47#define SEPA_PRIORITY -13000 49#define SEPA_MAXBOUNDDIST 1.0 50#define SEPA_USESSUBSCIP FALSE 51#define SEPA_DELAY FALSE 53#define CLIQUE_MAXFIRSTNODEWEIGHT 1000 55#define CLIQUE_MINWEIGHT 0 56#define CLIQUE_MAXNTREENODES 10000 57#define CLIQUE_BACKTRACKFREQ 10000 59#define DEFAULT_DYNAMICCUTS TRUE 60#define DEFAULT_MAXROUNDS 10 61#define DEFAULT_MAXROUNDSROOT 250 62#define DEFAULT_MAXDEPTH -1 63#define DEFAULT_MAXSEPACUTS 10 64#define DEFAULT_MAXSEPACUTSROOT 50 65#define DEFAULT_CUTMAXRANGE 1e+7 67#define DEFAULT_MINVIOLATION 0.3 68#define DEFAULT_MINAGGRSIZE 3 69#define DEFAULT_MAXAGGRSIZE 4 70#define DEFAULT_MAXBILINTERMS 500 71#define DEFAULT_MAXSTALLROUNDS 5 73#define SUBSCIP_NODELIMIT 100LL 75#define ADJUSTFACETTOL 1e-6 76#define USEDUALSIMPLEX TRUE 79static const int poweroftwo

[] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192 };

183

assert(ecaggr !=

NULL

);

184

assert(nquadvars > 0);

185

assert(nquadterms >= nquadvars);

189

(*ecaggr)->nvars = 0;

190

(*ecaggr)->nterms = 0;

191

(*ecaggr)->varsize = nquadvars;

192

(*ecaggr)->termsize = nquadterms;

211

assert(ecaggr !=

NULL

);

251

assert(ecaggr->

nterms

+ 1 <= ((ecaggr->

nvars

+ 1) * ecaggr->

nvars

) / 2);

258 for

( i = 0; i < ecaggr->

nvars

&& (idx1 == -1 || idx2 == -1); ++i )

260 if

( ecaggr->

vars

[i] ==

x

)

262 if

( ecaggr->

vars

[i] ==

y

)

266

assert(idx1 != -1 && idx2 != -1);

287

assert(ecaggr !=

NULL

);

291 for

( i = 0; i < ecaggr->

nvars

; ++i )

296 for

( i = 0; i < ecaggr->

nterms

; ++i )

320

assert(nlrowaggr !=

NULL

);

321

assert(linvars !=

NULL

|| nlinvars == 0);

322

assert(lincoefs !=

NULL

|| nlinvars == 0);

323

assert(nlinvars >= 0);

343 for

( i = 0; i < nlrowaggr->

nlinvars

; ++i )

360

assert(nlrowaggr !=

NULL

);

361

assert(linvar !=

NULL

);

392

assert(nlrowaggr !=

NULL

);

393

assert(quadvar !=

NULL

);

412

assert(nlrowaggr !=

NULL

);

450

assert(nlrow !=

NULL

);

451

assert(nlrowaggr !=

NULL

);

452

assert(quadvar2aggr !=

NULL

);

464

(*nlrowaggr)->nlrow = nlrow;

465

(*nlrowaggr)->rhsaggr = rhsaggr;

469

(*nlrowaggr)->quadvars =

NULL

;

470

(*nlrowaggr)->nquadvars = 0;

471

(*nlrowaggr)->quadvarssize = 0;

472

(*nlrowaggr)->quadvar2aggr =

NULL

;

473

(*nlrowaggr)->remtermcoefs =

NULL

;

474

(*nlrowaggr)->remtermvars1 =

NULL

;

475

(*nlrowaggr)->remtermvars2 =

NULL

;

476

(*nlrowaggr)->nremterms = 0;

488 for

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

503 if

( lincoef != 0.0 )

508 if

( quadvar2aggr[i] >= 0)

509

++aggrnvars[ quadvar2aggr[i] ];

511

idx1 = quadvar2aggr[i];

521 for

( j = 0; j < nadjbilin; ++j )

530 if

( qterm1 != qterm )

533

idx2 = quadvar2aggr[pos2];

536 if

( idx1 >= 0 && idx2 >= 0 && idx1 == idx2 )

542

assert((*nlrowaggr)->nquadvars == nquadvars);

551

(*nlrowaggr)->remtermsize = nremterms;

553

(*nlrowaggr)->necaggr = nfound;

555 for

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

561 for

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

565

idx = quadvar2aggr[i];

581 for

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

595

idx1 = quadvar2aggr[i];

607 SCIPdebugMsg

(

scip

,

"add term %e *%d^2 to the remaining part\n"

, coef, idx1);

610 for

( j = 0; j < nadjbilin; ++j )

621 if

( qterm1 != qterm )

626

idx2 = quadvar2aggr[pos2];

630 if

( idx1 >= 0 && idx2 >= 0 && idx1 == idx2 )

633 SCIPdebugMsg

(

scip

,

"add term %e *%d*%d to aggr. %d\n"

, coef, i, pos2, idx1);

638 SCIPdebugMsg

(

scip

,

"add term %e *%d*%d to the remaining part\n"

, coef, i, pos2);

660

assert(nlrowaggr !=

NULL

);

661

assert(*nlrowaggr !=

NULL

);

662

(*nlrowaggr)->nlrow =

NULL

;

663

assert((*nlrowaggr)->quadvars !=

NULL

);

664

assert((*nlrowaggr)->nquadvars > 0);

665

assert((*nlrowaggr)->nremterms >= 0);

677 if

( (*nlrowaggr)->nlinvars > 0 )

684 for

( i = 0; i < (*nlrowaggr)->necaggr; ++i )

710 for

( i = 0; i < nlrowaggr->

nremterms

; ++i )

713 for

( i = 0; i < nlrowaggr->

nlinvars

; ++i )

717 for

( i = 0; i < nlrowaggr->

necaggr

; ++i )

734

assert(sepadata !=

NULL

);

750

assert(sepadata !=

NULL

);

753 if

( sepadata->nlrowaggrs !=

NULL

)

757 for

( i = sepadata->nnlrowaggrs - 1; i >= 0; --i )

764

sepadata->nlrowaggrs =

NULL

;

765

sepadata->nnlrowaggrs = 0;

766

sepadata->nlrowaggrssize = 0;

780

assert(sepadata !=

NULL

);

781

assert(*sepadata !=

NULL

);

787 if

( (*sepadata)->lpi !=

NULL

)

790

(*sepadata)->lpisize = 0;

809

assert(sepadata !=

NULL

);

810

assert(nlrowaggr !=

NULL

);

812 if

( sepadata->nlrowaggrssize == 0 )

815

sepadata->nlrowaggrssize = 2;

817 else if

( sepadata->nlrowaggrssize < sepadata->nnlrowaggrs + 1 )

820

sepadata->nlrowaggrssize *= 2;

821

assert(sepadata->nlrowaggrssize >= sepadata->nnlrowaggrs + 1);

824

sepadata->nlrowaggrs[ sepadata->nnlrowaggrs ] = nlrowaggr;

825

++(sepadata->nnlrowaggrs);

828 for

( i = 0; i < nlrowaggr->

necaggr

; ++i )

829

sepadata->maxecsize =

MAX

(sepadata->maxecsize, nlrowaggr->

ecaggr

[i]->

nvars

);

834

++(sepadata->nrhsnlrowaggrs);

836

++(sepadata->nlhsnlrowaggrs);

858 return MIN

(ub - val, val - lb) / (ub - lb);

896

assert(subscip !=

NULL

);

897

assert(forwardarcs !=

NULL

);

898

assert(backwardarcs !=

NULL

);

899

assert(nedges !=

NULL

);

900

assert(sepadata->minaggrsize <= sepadata->maxaggrsize);

920 for

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

933 SCIPdebugMsg

(

scip

,

"edge {%d,%d} = {%s,%s} coeff=%e edgeweight=0\n"

, i, i,

947 for

( j = 0 ; j < nadjbilin; ++j )

958 if

( qterm1 != qterm )

961

edgeweight = nodeweights[i] + nodeweights[pos2];

962 SCIPdebugMsg

(

scip

,

"edge {%d,%d} = {%s,%s} coeff=%e edgeweight=%e\n"

, i, pos2,

979

assert(noddcyclearcs < 2*nbilinexprs-1);

980

oddcyclearcs[noddcyclearcs++] = forwardarcs[i];

981

oddcyclearcs[noddcyclearcs++] = backwardarcs[i];

986

assert(noddcyclearcs < 2*nbilinexprs-1);

987

oddcyclearcs[noddcyclearcs++] = forwardarcs[i];

988

oddcyclearcs[noddcyclearcs++] = backwardarcs[i];

1002

assert(*

narcs

> 0);

1016 for

( i = 0; i < *

narcs

; ++i )

1028 for

( i = 0; i <

nnodes

; ++i )

1035 for

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

1048 for

( j = 0 ; j < nadjbilin; ++j )

1056 if

( qterm1 != qterm )

1068

assert(arcidx == *

narcs

);

1070 for

( i = 0; i <

nnodes

; ++i )

1097

assert(subscip !=

NULL

);

1098

assert(nlrow !=

NULL

);

1099

assert(forwardarcs !=

NULL

);

1100

assert(backwardarcs !=

NULL

);

1101

assert(quadvar2aggr !=

NULL

);

1102

assert(nedges !=

NULL

);

1114 for

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

1126 if

( quadvar2aggr[i] != -1 )

1134 for

( j = 0 ; j < nadjbilin; ++j )

1142 if

( qterm1 != qterm )

1145 if

( quadvar2aggr[i] != -1 || quadvar2aggr[pos2] != -1 )

1177

assert(subscip !=

NULL

);

1178

assert(nlrow !=

NULL

);

1179

assert(forwardarcs !=

NULL

);

1180

assert(backwardarcs !=

NULL

);

1181

assert(quadvar2aggr !=

NULL

);

1182

assert(nfoundsofar >= 0);

1187

assert(sol !=

NULL

);

1194 for

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

1209

assert(quadvar2aggr[i] == -1 || quadvar2aggr[i] == nfoundsofar);

1210

quadvar2aggr[i] = nfoundsofar;

1216 for

( j = 0; j < nadjbilin; ++j )

1224 if

( qterm1 != qterm )

1230

assert(quadvar2aggr[i] == -1 || quadvar2aggr[i] == nfoundsofar);

1231

assert(quadvar2aggr[pos2] == -1 || quadvar2aggr[pos2] == nfoundsofar);

1233

quadvar2aggr[i] = nfoundsofar;

1234

quadvar2aggr[pos2] = nfoundsofar;

1254

assert(subscip !=

NULL

);

1255

assert(aggrleft !=

NULL

);

1256

assert(found !=

NULL

);

1257

assert(nedges >= 0);

1262 if

(

SCIPisLE

(subscip, timelimit, 0.0) )

1322

assert(graph !=

NULL

);

1323

assert(nlrow !=

NULL

);

1336 for

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

1341

nodeweight = 100 + (int)(100 * nodeweights[i]);

1352 for

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

1361 for

( j = 0; j < nadjbilin; ++j )

1370 if

( qterm1 != qterm )

1373#ifdef SCIP_DEBUG_DETAILED 1420 int

* maxcliquenodes;

1422 int

nmaxcliquenodes;

1423 int

maxcliqueweight;

1429

assert(graph !=

NULL

);

1430

assert(nfoundsofar >= 0);

1431

assert(foundaggr !=

NULL

);

1432

assert(foundclique !=

NULL

);

1435

*foundaggr =

FALSE

;

1436

*foundclique =

FALSE

;

1440

assert(nquadexprs == tcliqueGetNNodes(graph));

1443 for

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

1445 if

( quadvar2aggr[i] != -1 )

1459 if

( status !=

TCLIQUE_OPTIMAL

|| nmaxcliquenodes < sepadata->minaggrsize )

1462

*foundclique =

TRUE

;

1463

aggrsize =

MIN

(sepadata->maxaggrsize, nmaxcliquenodes);

1466 for

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

1478 for

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

1497 for

( j = 0; j < nadjbilin; ++j )

1506 if

( qterm1 != qterm )

1523 for

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

1524 if

( degrees[i] == 2 )

1528 if

( noddcycleedges == 0 || (aggrsize == 3 && noddcycleedges == 2) || (aggrsize == 4 && ntwodegrees == 4) )

1529

*foundaggr =

FALSE

;

1534 for

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

1536

quadvar2aggr[ maxcliquenodes[i] ] = *foundaggr ? nfoundsofar : -2;

1537 SCIPdebugMsg

(

scip

,

"%s %d\n"

, *foundaggr ?

"aggregate node: "

:

"exclude node: "

, maxcliquenodes[i]);

1543 if

( cliquemap !=

NULL

)

1579

assert(subscip !=

NULL

);

1580

assert(quadvar2aggr !=

NULL

);

1581

assert(nfound !=

NULL

);

1600 for

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

1609

quadvar2aggr[i] = -1;

1616

assert(nedges >= 0);

1632 if

( nedges < sepadata->minaggrsize )

1639 if

( timelimit <= 0.0 )

1671 if

( graph ==

NULL

)

1678

&foundaggr, &foundclique),

tcliqueFree

(&graph) );

1682

assert(foundclique);

1693 SCIPdebugMsg

(

scip

,

"did not find a clique to exclude -> leave aggregation search\n"

);

1699 if

( nunsucces >= sepadata->maxstallrounds && *nfound == 0 )

1701 SCIPdebugMsg

(

scip

,

"did not find an e.c. aggregation for %d iterations\n"

, nunsucces);

1713 for

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

1720 if

( graph !=

NULL

)

1724 for

( i = 0; i <

narcs

; ++i )

1767

retcode =

doSeachEcAggr

(

scip

, subscip, sepadata, nlrow, sol, rhsaggr, quadvar2aggr, nfound);

1796 int

ninterestingnodes;

1801

assert(rhscandidate !=

NULL

);

1802

assert(lhscandidate !=

NULL

);

1804

*rhscandidate =

TRUE

;

1805

*lhscandidate =

TRUE

;

1818

takerow = nquadvars >= sepadata->minaggrsize;

1822

*rhscandidate =

FALSE

;

1823

*lhscandidate =

FALSE

;

1829

*rhscandidate =

FALSE

;

1831

*lhscandidate =

FALSE

;

1835

ninterestingnodes = 0;

1839 for

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

1856 for

( j = 0; j < nadjbilin; ++j )

1866 if

( qterm1 != qterm )

1879 if

( degrees[i] == 2 )

1880

++ninterestingnodes;

1881 if

( degrees[pos2] == 2 )

1882

++ninterestingnodes;

1891 SCIPdebugMsg

(

scip

,

"nlrow contains: %d edges\n"

, nposedges + nnegedges);

1894 if

( nposedges + nnegedges > sepadata->maxbilinterms || nposedges + nnegedges < sepadata->minaggrsize

1895

|| ninterestingnodes < sepadata->minaggrsize )

1897

*rhscandidate =

FALSE

;

1898

*lhscandidate =

FALSE

;

1903 if

( nposedges == 0 || (nposedges + nnegedges == 3 && (nposedges % 2) == 0) )

1904

*rhscandidate =

FALSE

;

1905 if

( nnegedges == 0 || (nposedges + nnegedges == 3 && (nnegedges % 2) == 0) )

1906

*lhscandidate =

FALSE

;

1926

assert(nlrow !=

NULL

);

1927

assert(sepadata !=

NULL

);

1930 SCIPdebugMsg

(

scip

,

"search for edge-concave aggregation for the nonlinear row: \n"

);

1936 SCIPdebugMsg

(

scip

,

"rhs candidate = %u lhs candidate = %u\n"

, rhscandidate, lhscandidate);

1938 if

( !rhscandidate && !lhscandidate )

1958

assert(nlrow !=

NULL

);

1978

assert(nlrow !=

NULL

);

2006 for

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

2028 unsigned int

ncorner;

2032

assert(ecaggr !=

NULL

);

2033

assert(fvals !=

NULL

);

2034

assert(facet !=

NULL

);

2040

val = facet[ecaggr->

nvars

];

2041 for

( i = 0; i < (

unsigned int

) ecaggr->

nvars

; ++i )

2045

maxviolation =

MAX

(val - fvals[0], maxviolation);

2049 for

( i = 1; i < ncorner; ++i )

2055

gray = i ^ (i >> 1);

2060 while

( (diff >>= 1) != 0 )

2069

maxviolation =

MAX

(val - fvals[gray], maxviolation);

2075 SCIPdebugMsg

(

scip

,

"maximum violation of facet: %2.8e\n"

, maxviolation);

2082

facet[ecaggr->

nvars

] -= maxviolation;

2107

assert(sepadata !=

NULL

);

2108

assert(sepadata->nnlrowaggrs > 0);

2111 if

( sepadata->lpi !=

NULL

&& sepadata->lpisize >= sepadata->maxecsize )

2115 if

( sepadata->lpi !=

NULL

)

2118

sepadata->lpi =

NULL

;

2121

assert(sepadata->lpi ==

NULL

);

2123

sepadata->lpisize = sepadata->maxecsize;

2125

nrows = sepadata->maxecsize + 1;

2127

nnonz = (ncols * (nrows + 1)) / 2;

2139 for

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

2156 if

( (

a

& i) != 0 )

2175 SCIPdebugMsg

(

scip

,

" val[%d][%d] = 1 (position %d)\n"

, nrows - 1, i, k);

2184

assert(nrows <= ncols);

2209

assert(ecaggr !=

NULL

);

2214 for

( i = 0; i < ecaggr->

nterms

; ++i )

2225

assert(idx1 >= 0 && idx1 < ecaggr->nvars);

2226

assert(idx2 >= 0 && idx2 < ecaggr->nvars);

2231

val += coef * bound1 * bound2;

2253

val =

MIN

(val, ub);

2254

val =

MAX

(val, lb);

2256

val = (val - lb) / (ub - lb);

2257

assert(val >= 0.0 && val <= 1.0);

2305

assert(sepadata !=

NULL

);

2306

assert(ecaggr !=

NULL

);

2307

assert(facet !=

NULL

);

2308

assert(facetval !=

NULL

);

2309

assert(success !=

NULL

);

2310

assert(ecaggr->

nvars

<= sepadata->maxecsize);

2318

assert(sepadata->lpi !=

NULL

);

2319

assert(sepadata->lpisize >= ecaggr->

nvars

);

2325

assert(ncorner <= ncols);

2326

assert(ecaggr->

nvars

+ 1 <= nrows);

2327

assert(nrows <= ncols);

2340 for

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

2342

fvals[i] = i < ncorner ?

evalCorner

(ecaggr, i) : 0.0;

2347

ub[i] = i < ncorner ? 1.0 : 0.0;

2348 SCIPdebugMsg

(

scip

,

"bounds of LP col %d = [%e, %e]; obj = %e\n"

, i, lb[i], ub[i], fvals[i]);

2352

perturbation = 0.001;

2353 for

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

2356 if

( i < ecaggr->nvars )

2360 x

= ecaggr->

vars

[i];

2361

assert(

x

!=

NULL

);

2366

side[i] += side[i] > perturbation ? -perturbation : perturbation;

2367

perturbation /= 1.2;

2371

side[i] = (i == nrows - 1) ? 1.0 : 0.0;

2403 if

( ecaggr->

nvars

+ 1 == ncols )

2416 for

( i = 0; i < ecaggr->

nvars

; ++i )

2417

facet[i] = dualsol[i];

2420

facet[ecaggr->

nvars

] = dualsol[nrows - 1];

2427 for

( i = 0; i < ecaggr->

nvars

; ++i )

2446 for

( i = 0; i < ecaggr->

nvars

; ++i )

2456

facet[ecaggr->

nvars

] -= (facet[i] * varlb) / (varub - varlb);

2459

facet[i] = facet[i] / (varub - varlb);

2466

*facetval += facet[ecaggr->

nvars

];

2505

assert(cut !=

NULL

);

2506

assert(facet !=

NULL

);

2507

assert(vars !=

NULL

);

2509

assert(cutconstant !=

NULL

);

2510

assert(cutactivity !=

NULL

);

2511

assert(success !=

NULL

);

2515 for

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

2541

*cutconstant += facet[nvars];

2542

*cutactivity += facet[nvars];

2562

assert(cut !=

NULL

);

2563

assert(

x

!=

NULL

);

2566

assert(cutconstant !=

NULL

);

2567

assert(cutactivity !=

NULL

);

2568

assert(success !=

NULL

);

2584

*cutconstant += activity;

2593

*cutactivity += activity;

2614

assert(cut !=

NULL

);

2615

assert(

x

!=

NULL

);

2616

assert(

y

!=

NULL

);

2618

assert(cutconstant !=

NULL

);

2619

assert(cutactivity !=

NULL

);

2620

assert(success !=

NULL

);

2659

*cutactivity += lincoef * refpoint + linconst;

2660

*cutconstant += linconst;

2693

*cutactivity += lincoefx * refpointx + lincoefy * refpointy + linconst;

2694

*cutconstant += linconst;

2735

assert(separated !=

NULL

);

2736

assert(cutoff !=

NULL

);

2737

assert(nlrowaggr->

necaggr

> 0);

2741

*separated =

FALSE

;

2749

sepadata->dynamiccuts) );

2753

cutconstant = nlrowaggr->

constant

;

2757

bestfacetsize = sepadata->maxaggrsize + 1;

2773 for

( i = 0; i < nlrowaggr->

necaggr

; ++i )

2778

ecaggr = nlrowaggr->

ecaggr

[i];

2779

assert(ecaggr !=

NULL

);

2785

found ?

"yes"

:

"no"

);

2789

printFacet(

scip

, ecaggr->

vars

, ecaggr->

nvars

, bestfacet, bestfacetval);

2805 for

( i = 0; i < nlrowaggr->

nremterms

; ++i )

2813

assert(

x

!=

NULL

);

2814

assert(

y

!=

NULL

);

2824 for

( i = 0; i < nlrowaggr->

nlinvars

; ++i )

2831

assert(

x

!=

NULL

);

2841 SCIPdebugMsg

(

scip

,

"cut activity = %e rhs(nlrow) = %e\n"

, cutactivity, nlrowaggr->

rhs

);

2863 if

(

SCIPisGE

(

scip

, cutactivity - nlrowaggr->

rhs

, sepadata->minviolation) )

2870 if

( !(*cutoff) && !islocalcut )

2898

assert(nlrowaggr !=

NULL

);

2906 for

( i = 0; i < nlrowaggr->

nquadvars

; ++i )

2909

assert(var !=

NULL

);

2915 SCIPdebugMsg

(

scip

,

"nlrow aggregation contains unbounded variables\n"

);

2922 SCIPdebugMsg

(

scip

,

"nlrow aggregation contains fixed variables in an e.c. aggregation\n"

);

2950 if

( sepadata->nnlrowaggrs == 0 )

2957

nmaxcuts = depth == 0 ? sepadata->maxsepacutsroot : sepadata->maxsepacuts;

2961 for

( i = 0; i < sepadata->nnlrowaggrs && ncuts < nmaxcuts && !

SCIPisStopped

(

scip

); ++i )

2967

nlrowaggr = sepadata->nlrowaggrs[i];

2968

assert(nlrowaggr !=

NULL

);

2976 SCIPdebugMsg

(

scip

,

"try to compute a cut for nonlinear row aggregation %d\n"

, i);

2980 SCIPdebugMsg

(

scip

,

"found a cut: %s cutoff: %s\n"

, separated ?

"yes"

:

"no"

, cutoff ?

"yes"

:

"no"

);

3011

assert(sepa !=

NULL

);

3027

assert(sepadata !=

NULL

);

3042

assert(sepadata !=

NULL

);

3045#ifdef SCIP_STATISTIC 3055

sepadata->searchedforaggr =

FALSE

;

3070

assert(sepadata !=

NULL

);

3078 if

( sepadata->maxaggrsize < sepadata->minaggrsize )

3093 if

( sepadata->maxdepth >= 0 && depth > sepadata->maxdepth )

3098 if

( (depth == 0 && sepadata->maxroundsroot >= 0 && ncalls >= sepadata->maxroundsroot)

3099

|| (depth > 0 && sepadata->maxrounds >= 0 && ncalls >= sepadata->maxrounds) )

3103 if

( !sepadata->searchedforaggr )

3115

sepadata->searchedforaggr =

TRUE

;

3148

assert(sepa !=

NULL

);

3157 "separating/" SEPA_NAME "/dynamiccuts"

,

3158 "should generated cuts be removed from the LP if they are no longer tight?"

,

3163 "maximal number of eccuts separation rounds per node (-1: unlimited)"

,

3167 "separating/" SEPA_NAME "/maxroundsroot"

,

3168 "maximal number of eccuts separation rounds in the root node (-1: unlimited)"

,

3173 "maximal depth at which the separator is applied (-1: unlimited)"

,

3177 "separating/" SEPA_NAME "/maxsepacuts"

,

3178 "maximal number of edge-concave cuts separated per separation round"

,

3182 "separating/" SEPA_NAME "/maxsepacutsroot"

,

3183 "maximal number of edge-concave cuts separated per separation round in the root node"

,

3187 "maximal coef. range of a cut (max coef. divided by min coef.) in order to be added to LP relaxation"

,

3191 "minimal violation of an edge-concave cut to be separated"

,

3195 "separating/" SEPA_NAME "/minaggrsize"

,

3196 "search for edge-concave aggregations of at least this size"

,

3200 "separating/" SEPA_NAME "/maxaggrsize"

,

3201 "search for edge-concave aggregations of at most this size"

,

3205 "separating/" SEPA_NAME "/maxbilinterms"

,

3206 "maximum number of bilinear terms allowed to be in a quadratic constraint"

,

3210 "separating/" SEPA_NAME "/maxstallrounds"

,

3211 "maximum number of unsuccessful rounds in the edge-concave aggregation search"

,

Constraint handler for XOR constraints, .

#define SCIP_CALL_TERMINATE(retcode, x, TERM)

#define SCIP_CALL_FINALLY(x, y)

void SCIPaddSquareLinearization(SCIP *scip, SCIP_Real sqrcoef, SCIP_Real refpoint, SCIP_Bool isint, SCIP_Real *lincoef, SCIP_Real *linconstant, SCIP_Bool *success)

void SCIPaddSquareSecant(SCIP *scip, SCIP_Real sqrcoef, SCIP_Real lb, SCIP_Real ub, SCIP_Real *lincoef, SCIP_Real *linconstant, SCIP_Bool *success)

SCIP_RETCODE SCIPaddCoefLinear(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)

SCIP_RETCODE SCIPcreateConsBasicXor(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_Bool rhs, int nvars, SCIP_VAR **vars)

SCIP_RETCODE SCIPcreateConsBasicLinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs)

SCIP_Bool SCIPisStopped(SCIP *scip)

SCIP_RETCODE SCIPfree(SCIP **scip)

SCIP_RETCODE SCIPcreate(SCIP **scip)

SCIP_STATUS SCIPgetStatus(SCIP *scip)

SCIP_RETCODE SCIPaddVar(SCIP *scip, SCIP_VAR *var)

int SCIPgetNVars(SCIP *scip)

SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)

SCIP_VAR ** SCIPgetVars(SCIP *scip)

SCIP_RETCODE SCIPsetObjsense(SCIP *scip, SCIP_OBJSENSE objsense)

SCIP_RETCODE SCIPcreateProbBasic(SCIP *scip, const char *name)

void SCIPhashmapFree(SCIP_HASHMAP **hashmap)

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

SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)

SCIP_RETCODE SCIPhashmapInsertInt(SCIP_HASHMAP *hashmap, void *origin, int image)

SCIP_RETCODE SCIPlpiChgSides(SCIP_LPI *lpi, int nrows, const int *ind, const SCIP_Real *lhs, const SCIP_Real *rhs)

SCIP_RETCODE SCIPlpiAddRows(SCIP_LPI *lpi, int nrows, const SCIP_Real *lhs, const SCIP_Real *rhs, char **rownames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val)

SCIP_RETCODE SCIPlpiChgBounds(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *lb, const SCIP_Real *ub)

SCIP_RETCODE SCIPlpiFree(SCIP_LPI **lpi)

SCIP_RETCODE SCIPlpiGetSol(SCIP_LPI *lpi, SCIP_Real *objval, SCIP_Real *primsol, SCIP_Real *dualsol, SCIP_Real *activity, SCIP_Real *redcost)

SCIP_RETCODE SCIPlpiSolveDual(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiAddCols(SCIP_LPI *lpi, int ncols, const SCIP_Real *obj, const SCIP_Real *lb, const SCIP_Real *ub, char **colnames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val)

SCIP_RETCODE SCIPlpiSolvePrimal(SCIP_LPI *lpi)

SCIP_RETCODE SCIPlpiCreate(SCIP_LPI **lpi, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_OBJSEN objsen)

SCIP_RETCODE SCIPlpiChgObj(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *obj)

SCIP_RETCODE SCIPlpiGetNCols(SCIP_LPI *lpi, int *ncols)

SCIP_RETCODE SCIPlpiGetNRows(SCIP_LPI *lpi, int *nrows)

#define SCIPdebugMsgPrint

SCIP_MESSAGEHDLR * SCIPgetMessagehdlr(SCIP *scip)

void SCIPaddBilinMcCormick(SCIP *scip, SCIP_Real bilincoef, SCIP_Real lbx, SCIP_Real ubx, SCIP_Real refpointx, SCIP_Real lby, SCIP_Real uby, SCIP_Real refpointy, SCIP_Bool overestimate, SCIP_Real *lincoefx, SCIP_Real *lincoefy, SCIP_Real *linconstant, SCIP_Bool *success)

SCIP_RETCODE SCIPaddIntParam(SCIP *scip, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)

SCIP_RETCODE SCIPsetLongintParam(SCIP *scip, const char *name, SCIP_Longint value)

SCIP_RETCODE SCIPaddRealParam(SCIP *scip, const char *name, const char *desc, SCIP_Real *valueptr, SCIP_Bool isadvanced, SCIP_Real defaultvalue, SCIP_Real minvalue, SCIP_Real maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)

SCIP_RETCODE SCIPsetHeuristics(SCIP *scip, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)

SCIP_RETCODE SCIPsetIntParam(SCIP *scip, const char *name, int value)

SCIP_RETCODE SCIPgetRealParam(SCIP *scip, const char *name, SCIP_Real *value)

SCIP_RETCODE SCIPaddBoolParam(SCIP *scip, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)

SCIP_RETCODE SCIPsetRealParam(SCIP *scip, const char *name, SCIP_Real value)

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

SCIP_RETCODE SCIPaddPoolCut(SCIP *scip, SCIP_ROW *row)

SCIP_Real SCIPgetCutEfficacy(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)

SCIP_Bool SCIPisCutEfficacious(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)

SCIP_RETCODE SCIPaddRow(SCIP *scip, SCIP_ROW *row, SCIP_Bool forcecut, SCIP_Bool *infeasible)

void SCIPexprGetQuadraticBilinTerm(SCIP_EXPR *expr, int termidx, SCIP_EXPR **expr1, SCIP_EXPR **expr2, SCIP_Real *coef, int *pos2, SCIP_EXPR **prodexpr)

SCIP_Bool SCIPexprAreQuadraticExprsVariables(SCIP_EXPR *expr)

void SCIPexprGetQuadraticData(SCIP_EXPR *expr, SCIP_Real *constant, int *nlinexprs, SCIP_EXPR ***linexprs, SCIP_Real **lincoefs, int *nquadexprs, int *nbilinexprs, SCIP_Real **eigenvalues, SCIP_Real **eigenvectors)

SCIP_Bool SCIPisExprVar(SCIP *scip, SCIP_EXPR *expr)

SCIP_RETCODE SCIPcheckExprQuadratic(SCIP *scip, SCIP_EXPR *expr, SCIP_Bool *isquadratic)

SCIP_VAR * SCIPgetVarExprVar(SCIP_EXPR *expr)

void SCIPexprGetQuadraticQuadTerm(SCIP_EXPR *quadexpr, int termidx, SCIP_EXPR **expr, SCIP_Real *lincoef, SCIP_Real *sqrcoef, int *nadjbilin, int **adjbilin, SCIP_EXPR **sqrexpr)

#define SCIPfreeBlockMemoryArray(scip, ptr, num)

#define SCIPensureBlockMemoryArray(scip, ptr, arraysizeptr, minsize)

#define SCIPallocClearBufferArray(scip, ptr, num)

int SCIPcalcMemGrowSize(SCIP *scip, int num)

#define SCIPallocBufferArray(scip, ptr, num)

#define SCIPfreeBufferArray(scip, ptr)

#define SCIPallocBlockMemoryArray(scip, ptr, num)

#define SCIPreallocBlockMemoryArray(scip, ptr, oldnum, newnum)

#define SCIPfreeBlockMemory(scip, ptr)

#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)

#define SCIPallocBlockMemory(scip, ptr)

#define SCIPduplicateBlockMemoryArray(scip, ptr, source, num)

SCIP_Bool SCIPisNLPConstructed(SCIP *scip)

int SCIPgetNNLPNlRows(SCIP *scip)

SCIP_NLROW ** SCIPgetNLPNlRows(SCIP *scip)

SCIP_Real SCIPnlrowGetRhs(SCIP_NLROW *nlrow)

SCIP_Real SCIPnlrowGetLhs(SCIP_NLROW *nlrow)

int SCIPnlrowGetNLinearVars(SCIP_NLROW *nlrow)

SCIP_VAR ** SCIPnlrowGetLinearVars(SCIP_NLROW *nlrow)

SCIP_Real SCIPnlrowGetConstant(SCIP_NLROW *nlrow)

SCIP_EXPR * SCIPnlrowGetExpr(SCIP_NLROW *nlrow)

SCIP_Bool SCIPnlrowIsInNLP(SCIP_NLROW *nlrow)

SCIP_Real * SCIPnlrowGetLinearCoefs(SCIP_NLROW *nlrow)

SCIP_RETCODE SCIPprintNlRow(SCIP *scip, SCIP_NLROW *nlrow, FILE *file)

SCIP_Real SCIPgetRowMaxCoef(SCIP *scip, SCIP_ROW *row)

SCIP_Real SCIPgetRowMinCoef(SCIP *scip, SCIP_ROW *row)

SCIP_RETCODE SCIPcacheRowExtensions(SCIP *scip, SCIP_ROW *row)

SCIP_RETCODE SCIPflushRowExtensions(SCIP *scip, SCIP_ROW *row)

SCIP_RETCODE SCIPaddVarToRow(SCIP *scip, SCIP_ROW *row, SCIP_VAR *var, SCIP_Real val)

SCIP_RETCODE SCIPprintRow(SCIP *scip, SCIP_ROW *row, FILE *file)

const char * SCIProwGetName(SCIP_ROW *row)

SCIP_RETCODE SCIPreleaseRow(SCIP *scip, SCIP_ROW **row)

SCIP_RETCODE SCIPcreateEmptyRowSepa(SCIP *scip, SCIP_ROW **row, SCIP_SEPA *sepa, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)

int SCIProwGetRank(SCIP_ROW *row)

SCIP_RETCODE SCIPchgRowRhs(SCIP *scip, SCIP_ROW *row, SCIP_Real rhs)

SCIP_Real SCIPgetRowSolActivity(SCIP *scip, SCIP_ROW *row, SCIP_SOL *sol)

SCIP_RETCODE SCIPincludeSepaBasic(SCIP *scip, SCIP_SEPA **sepa, const char *name, const char *desc, int priority, int freq, SCIP_Real maxbounddist, SCIP_Bool usessubscip, SCIP_Bool delay, SCIP_DECL_SEPAEXECLP((*sepaexeclp)), SCIP_DECL_SEPAEXECSOL((*sepaexecsol)), SCIP_SEPADATA *sepadata)

const char * SCIPsepaGetName(SCIP_SEPA *sepa)

int SCIPsepaGetNCallsAtNode(SCIP_SEPA *sepa)

SCIP_RETCODE SCIPsetSepaFree(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAFREE((*sepafree)))

SCIP_RETCODE SCIPsetSepaExitsol(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAEXITSOL((*sepaexitsol)))

SCIP_SEPADATA * SCIPsepaGetData(SCIP_SEPA *sepa)

void SCIPsepaSetData(SCIP_SEPA *sepa, SCIP_SEPADATA *sepadata)

SCIP_RETCODE SCIPsetSepaCopy(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPACOPY((*sepacopy)))

SCIP_SOL * SCIPgetBestSol(SCIP *scip)

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

int SCIPgetNSols(SCIP *scip)

SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)

SCIP_RETCODE SCIPfreeTransform(SCIP *scip)

SCIP_RETCODE SCIPsolve(SCIP *scip)

SCIP_Real SCIPgetSolvingTime(SCIP *scip)

SCIP_Real SCIPgetTotalTime(SCIP *scip)

SCIP_Real SCIPinfinity(SCIP *scip)

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

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

SCIP_Bool SCIPisPositive(SCIP *scip, SCIP_Real val)

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

SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)

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

SCIP_Bool SCIPisNegative(SCIP *scip, SCIP_Real val)

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

SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)

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

int SCIPgetDepth(SCIP *scip)

SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)

SCIP_RETCODE SCIPchgVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)

SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)

int SCIPvarGetIndex(SCIP_VAR *var)

const char * SCIPvarGetName(SCIP_VAR *var)

SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)

SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)

SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)

SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)

SCIP_RETCODE SCIPcreateVarBasic(SCIP *scip, SCIP_VAR **var, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype)

SCIP_RETCODE SCIPincludeSepaEccuts(SCIP *scip)

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

#define BMSclearMemory(ptr)

#define BMSclearMemoryArray(ptr, num)

BMS_BLKMEM * SCIPblkmem(SCIP *scip)

internal methods for NLP management

#define SCIPstatisticMessage

SCIP_RETCODE SCIPincludeDefaultPlugins(SCIP *scip)

static SCIP_RETCODE doSeachEcAggr(SCIP *scip, SCIP *subscip, SCIP_SEPADATA *sepadata, SCIP_NLROW *nlrow, SCIP_SOL *sol, SCIP_Bool rhsaggr, int *quadvar2aggr, int *nfound)

static SCIP_RETCODE ecaggrAddBilinTerm(SCIP *scip, SCIP_ECAGGR *ecaggr, SCIP_VAR *x, SCIP_VAR *y, SCIP_Real coef)

static SCIP_RETCODE sepadataCreate(SCIP *scip, SCIP_SEPADATA **sepadata)

static SCIP_RETCODE searchEcAggrWithMIP(SCIP *subscip, SCIP_Real timelimit, int nedges, SCIP_Bool *aggrleft, SCIP_Bool *found)

static SCIP_RETCODE nlrowaggrCreate(SCIP *scip, SCIP_NLROW *nlrow, SCIP_NLROWAGGR **nlrowaggr, int *quadvar2aggr, int nfound, SCIP_Bool rhsaggr)

static SCIP_DECL_SEPAFREE(sepaFreeEccuts)

static SCIP_RETCODE ecaggrAddQuadvar(SCIP_ECAGGR *ecaggr, SCIP_VAR *x)

static SCIP_Real transformValue(SCIP *scip, SCIP_Real lb, SCIP_Real ub, SCIP_Real val)

#define CLIQUE_MAXFIRSTNODEWEIGHT

static SCIP_RETCODE separateCuts(SCIP *scip, SCIP_SEPA *sepa, SCIP_SEPADATA *sepadata, int depth, SCIP_SOL *sol, SCIP_RESULT *result)

#define DEFAULT_DYNAMICCUTS

static SCIP_RETCODE addFacetToCut(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut, SCIP_Real *facet, SCIP_VAR **vars, int nvars, SCIP_Real *cutconstant, SCIP_Real *cutactivity, SCIP_Bool *success)

static SCIP_RETCODE sepadataAddNlrowaggr(SCIP *scip, SCIP_SEPADATA *sepadata, SCIP_NLROWAGGR *nlrowaggr)

static SCIP_RETCODE findAndStoreEcAggregations(SCIP *scip, SCIP_SEPADATA *sepadata, SCIP_NLROW *nlrow, SCIP_SOL *sol)

static SCIP_RETCODE nlrowaggrAddLinearTerm(SCIP *scip, SCIP_NLROWAGGR *nlrowaggr, SCIP_VAR *linvar, SCIP_Real lincoef)

#define DEFAULT_MAXROUNDSROOT

static SCIP_RETCODE updateMIP(SCIP *subscip, SCIP_NLROW *nlrow, SCIP_VAR **forwardarcs, SCIP_VAR **backwardarcs, int *quadvar2aggr, int *nedges)

static SCIP_RETCODE searchEcAggr(SCIP *scip, SCIP_SEPADATA *sepadata, SCIP_NLROW *nlrow, SCIP_SOL *sol, SCIP_Bool rhsaggr, int *quadvar2aggr, int *nfound)

static SCIP_RETCODE nlrowaggrAddQuadraticVar(SCIP *scip, SCIP_NLROWAGGR *nlrowaggr, SCIP_VAR *quadvar)

static SCIP_RETCODE addBilinearTermToCut(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut, SCIP_VAR *x, SCIP_VAR *y, SCIP_Real coeff, SCIP_Real *cutconstant, SCIP_Real *cutactivity, SCIP_Bool *success)

static SCIP_Bool isPossibleToComputeCut(SCIP *scip, SCIP_SOL *sol, SCIP_NLROWAGGR *nlrowaggr)

static SCIP_Real phi(SCIP *scip, SCIP_Real val, SCIP_Real lb, SCIP_Real ub)

#define DEFAULT_MINVIOLATION

static SCIP_RETCODE sepadataFreeNlrows(SCIP *scip, SCIP_SEPADATA *sepadata)

#define CLIQUE_BACKTRACKFREQ

#define CLIQUE_MAXNTREENODES

static SCIP_RETCODE nlrowaggrFree(SCIP *scip, SCIP_NLROWAGGR **nlrowaggr)

static SCIP_RETCODE nlrowaggrAddRemBilinTerm(SCIP_NLROWAGGR *nlrowaggr, SCIP_VAR *x, SCIP_VAR *y, SCIP_Real coef)

static SCIP_RETCODE addLinearTermToCut(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut, SCIP_VAR *x, SCIP_Real coeff, SCIP_Real *cutconstant, SCIP_Real *cutactivity, SCIP_Bool *success)

static SCIP_RETCODE storeAggrFromMIP(SCIP *subscip, SCIP_NLROW *nlrow, SCIP_VAR **forwardarcs, SCIP_VAR **backwardarcs, int *quadvar2aggr, int nfoundsofar)

static SCIP_DECL_SEPAEXITSOL(sepaExitsolEccuts)

#define DEFAULT_MAXSEPACUTSROOT

static SCIP_DECL_SEPACOPY(sepaCopyEccuts)

static SCIP_DECL_SEPAEXECLP(sepaExeclpEccuts)

static SCIP_RETCODE computeCut(SCIP *scip, SCIP_SEPA *sepa, SCIP_SEPADATA *sepadata, SCIP_NLROWAGGR *nlrowaggr, SCIP_SOL *sol, SCIP_Bool *separated, SCIP_Bool *cutoff)

static SCIP_RETCODE sepadataFree(SCIP *scip, SCIP_SEPADATA **sepadata)

#define DEFAULT_MAXAGGRSIZE

static SCIP_RETCODE createTcliqueGraph(SCIP_NLROW *nlrow, TCLIQUE_GRAPH **graph, SCIP_Real *nodeweights)

static SCIP_RETCODE ecaggrFree(SCIP *scip, SCIP_ECAGGR **ecaggr)

#define SEPA_MAXBOUNDDIST

static SCIP_RETCODE createLP(SCIP *scip, SCIP_SEPADATA *sepadata)

#define DEFAULT_MINAGGRSIZE

static SCIP_RETCODE computeConvexEnvelopeFacet(SCIP *scip, SCIP_SEPADATA *sepadata, SCIP_SOL *sol, SCIP_ECAGGR *ecaggr, SCIP_Real *facet, SCIP_Real *facetval, SCIP_Bool *success)

static SCIP_RETCODE createMIP(SCIP *scip, SCIP *subscip, SCIP_SEPADATA *sepadata, SCIP_NLROW *nlrow, SCIP_Bool rhsaggr, SCIP_VAR **forwardarcs, SCIP_VAR **backwardarcs, SCIP_Real *nodeweights, int *nedges, int *narcs)

static SCIP_Bool checkRikun(SCIP *scip, SCIP_ECAGGR *ecaggr, SCIP_Real *fvals, SCIP_Real *facet)

#define DEFAULT_MAXSEPACUTS

#define DEFAULT_MAXSTALLROUNDS

#define SUBSCIP_NODELIMIT

#define DEFAULT_MAXBILINTERMS

#define DEFAULT_MAXROUNDS

static SCIP_RETCODE searchEcAggrWithCliques(SCIP *scip, TCLIQUE_GRAPH *graph, SCIP_SEPADATA *sepadata, SCIP_NLROW *nlrow, int *quadvar2aggr, int nfoundsofar, SCIP_Bool rhsaggr, SCIP_Bool *foundaggr, SCIP_Bool *foundclique)

static SCIP_RETCODE ecaggrCreateEmpty(SCIP *scip, SCIP_ECAGGR **ecaggr, int nquadvars, int nquadterms)

static SCIP_Real evalCorner(SCIP_ECAGGR *ecaggr, int k)

#define DEFAULT_CUTMAXRANGE

static SCIP_RETCODE isCandidate(SCIP *scip, SCIP_SEPADATA *sepadata, SCIP_NLROW *nlrow, SCIP_Bool *rhscandidate, SCIP_Bool *lhscandidate)

static const int poweroftwo[]

static SCIP_RETCODE nlrowaggrStoreLinearTerms(SCIP *scip, SCIP_NLROWAGGR *nlrowaggr, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nlinvars)

edge concave cut separator

void tcliqueChangeWeight(TCLIQUE_GRAPH *tcliquegraph, int node, TCLIQUE_WEIGHT weight)

void tcliqueFree(TCLIQUE_GRAPH **tcliquegraph)

enum TCLIQUE_Status TCLIQUE_STATUS

void tcliqueMaxClique(TCLIQUE_GETNNODES((*getnnodes)), TCLIQUE_GETWEIGHTS((*getweights)), TCLIQUE_ISEDGE((*isedge)), TCLIQUE_SELECTADJNODES((*selectadjnodes)), TCLIQUE_GRAPH *tcliquegraph, TCLIQUE_NEWSOL((*newsol)), TCLIQUE_DATA *tcliquedata, int *maxcliquenodes, int *nmaxcliquenodes, TCLIQUE_WEIGHT *maxcliqueweight, TCLIQUE_WEIGHT maxfirstnodeweight, TCLIQUE_WEIGHT minweight, int maxntreenodes, int backtrackfreq, int maxnzeroextensions, int fixednode, int *ntreenodes, TCLIQUE_STATUS *status)

TCLIQUE_Bool tcliqueFlush(TCLIQUE_GRAPH *tcliquegraph)

struct TCLIQUE_Graph TCLIQUE_GRAPH

TCLIQUE_Bool tcliqueCreate(TCLIQUE_GRAPH **tcliquegraph)

TCLIQUE_Bool tcliqueAddNode(TCLIQUE_GRAPH *tcliquegraph, int node, TCLIQUE_WEIGHT weight)

TCLIQUE_Bool tcliqueAddEdge(TCLIQUE_GRAPH *tcliquegraph, int node1, int node2)

@ SCIP_PARAMSETTING_AGGRESSIVE

enum SCIP_Result SCIP_RESULT

enum SCIP_Retcode SCIP_RETCODE

struct SCIP_SepaData SCIP_SEPADATA


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