|
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
sepa_zerohalf.c File Reference Detailed Description{0,1/2}-cuts separator < print statistics {0,1/2}-Chv'atal-Gomory cuts separator. It solves the following separation problem: Given an integer program
and a fractional solution x* of its LP relaxation. Find a weightvector u whose entries u_i are either 0 or 1/2 such that the following inequality is valid for all integral solutions and violated by x*
or (if exact methods are used) give a proof that no such inequality exists References:
Definition in file sepa_zerohalf.c. #include "string.h"#include "scip/sepa_zerohalf.h"#include "scip/cons_linear.h"#include "scip/scipdefplugins.h"Go to the source code of this file.
Macro Definition Documentation
Definition at line 63 of file sepa_zerohalf.c.
Definition at line 64 of file sepa_zerohalf.c.
Definition at line 65 of file sepa_zerohalf.c.
Definition at line 66 of file sepa_zerohalf.c.
Definition at line 67 of file sepa_zerohalf.c.
Definition at line 68 of file sepa_zerohalf.c.
Definition at line 69 of file sepa_zerohalf.c.
maximal number of zerohalf separation rounds per node (-1: unlimited) Definition at line 71 of file sepa_zerohalf.c.
maximal number of zerohalf separation rounds in the root node (-1: unlimited) Definition at line 72 of file sepa_zerohalf.c.
maximal number of {0,1/2}-cuts separated per separation round Definition at line 73 of file sepa_zerohalf.c.
maximal number of {0,1/2}-cuts separated per separation round in root node Definition at line 74 of file sepa_zerohalf.c.
should generated cuts be removed from the LP if they are no longer tight? Definition at line 75 of file sepa_zerohalf.c.
should problem be decomposed into subproblems (if possible)? Definition at line 76 of file sepa_zerohalf.c.
separating cuts only if depth <= maxdepth (-1: unlimited) Definition at line 77 of file sepa_zerohalf.c.
minimal violation of a {0,1/2}-cut to be separated Definition at line 78 of file sepa_zerohalf.c.
should the cuts be forced to enter the LP? (bypassing SCIPefficacy criteria) Definition at line 79 of file sepa_zerohalf.c.
should the cuts be forced to enter SCIP's sepastore? (bypassing SCIPefficicacy criteria, if no other cut is found) Definition at line 80 of file sepa_zerohalf.c.
maximal number of {0,1/2}-cuts determined per separation round (this includes separated but inefficacious cuts) Definition at line 83 of file sepa_zerohalf.c.
maximal number of {0,1/2}-cuts determined per separation round in the root node (this includes separated but inefficacious cuts) Definition at line 86 of file sepa_zerohalf.c.
auxiliary IP objective function type Definition at line 89 of file sepa_zerohalf.c.
should continuous variables be relaxed by adding variable bounds? Definition at line 90 of file sepa_zerohalf.c.
should rows be scaled to make fractional coefficients integer? Definition at line 91 of file sepa_zerohalf.c.
optional settings file of the auxiliary IP (-: none) Definition at line 92 of file sepa_zerohalf.c.
limits/solutions setting of the auxiliary IP Definition at line 93 of file sepa_zerohalf.c.
should all (proper) solutions of the auxiliary IP be used to generate cuts instead of using only the best? Definition at line 94 of file sepa_zerohalf.c.
value of delta parameter used in preprocessing method 'd' Definition at line 97 of file sepa_zerohalf.c.
penalty factor used with objective function 'p' of auxiliary IP Definition at line 98 of file sepa_zerohalf.c.
preprocessing methods and ordering Definition at line 100 of file sepa_zerohalf.c.
preprocessing methods and ordering Definition at line 101 of file sepa_zerohalf.c.
maximal number of calls (-1: unlimited) Definition at line 102 of file sepa_zerohalf.c.
should zerohalf cuts found in previous callbacks be ignored? Definition at line 103 of file sepa_zerohalf.c.
should only original LP rows be considered (i.e. ignore previously added LP rows)? Definition at line 104 of file sepa_zerohalf.c.
should zerohalf cuts be filtered using a cutpool Definition at line 105 of file sepa_zerohalf.c.
should cuts be added to the delayed cut pool? Definition at line 106 of file sepa_zerohalf.c.
maximal number of different deltas to try for cmir (-1: unlimited, 0: delta=1) Definition at line 107 of file sepa_zerohalf.c.
should negative values also be tested in scaling for cmir? Definition at line 108 of file sepa_zerohalf.c.
Definition at line 111 of file sepa_zerohalf.c.
Definition at line 112 of file sepa_zerohalf.c.
Definition at line 115 of file sepa_zerohalf.c.
Definition at line 116 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
Definition at line 117 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
Definition at line 118 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
Definition at line 119 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
Definition at line 120 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
Definition at line 121 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
Definition at line 122 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
Definition at line 123 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
Definition at line 124 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
Definition at line 127 of file sepa_zerohalf.c.
Definition at line 128 of file sepa_zerohalf.c.
Definition at line 131 of file sepa_zerohalf.c. Referenced by findClosestLb(), and findClosestUb(). is value even? Definition at line 186 of file sepa_zerohalf.c.
is value odd? Definition at line 187 of file sepa_zerohalf.c.
Definition at line 188 of file sepa_zerohalf.c. Referenced by separateByGaussHeuristics().
integer division using a power of 2 as divisor Definition at line 189 of file sepa_zerohalf.c.
remainder of integer division using a power of 2 as divisor Definition at line 190 of file sepa_zerohalf.c.
row or column is irrelevant Definition at line 242 of file sepa_zerohalf.c.
row has no nonzero entries Definition at line 245 of file sepa_zerohalf.c. Referenced by preprocessRows().
row is identical to another row but has a larger slack value Definition at line 246 of file sepa_zerohalf.c. Referenced by preprocessRows().
row has a slack value > maxslack Definition at line 247 of file sepa_zerohalf.c. Referenced by preprocessColumns(), and preprocessRows().
row defines a violated zerohalf cut Definition at line 248 of file sepa_zerohalf.c.
row does not exist (lhs is -infinity or rhs is infinity) Definition at line 252 of file sepa_zerohalf.c.
row does not contain relevant columns Definition at line 253 of file sepa_zerohalf.c.
row has even rhs and the sum of its slack value and the minimum slack value of a odd-rhs-row exceeds maxslack Definition at line 254 of file sepa_zerohalf.c.
row contains a column which rounding penalty exceeds maxslack and the sum of this row's slack and the minimum slack of another row with the proper columns exceeds maxslack as well Definition at line 257 of file sepa_zerohalf.c.
column has no nonzero entries Definition at line 264 of file sepa_zerohalf.c. Referenced by preprocessColumns().
column is identical to another column Definition at line 265 of file sepa_zerohalf.c.
column corresponds to a variable whose LP solution is zero Definition at line 266 of file sepa_zerohalf.c.
column corresponds to a variable whose LP solution equals its even lb Definition at line 267 of file sepa_zerohalf.c.
column corresponds to a variable whose LP solution equals its odd lb Definition at line 268 of file sepa_zerohalf.c.
column corresponds to a variable whose LP solution equals its even ub Definition at line 269 of file sepa_zerohalf.c.
column corresponds to a variable whose LP solution equals its odd ub Definition at line 270 of file sepa_zerohalf.c.
column has only one nonzero entry Definition at line 271 of file sepa_zerohalf.c. Referenced by preprocessColumns().
column corresponds to a non-integer variable Definition at line 272 of file sepa_zerohalf.c.
column has been omitted (see preprocessColumnsWithSmallFracsol) Definition at line 273 of file sepa_zerohalf.c.
all rows (of the current subproblem) have been deleted Definition at line 274 of file sepa_zerohalf.c.
base type used for the bitarray data structures Definition at line 285 of file sepa_zerohalf.c.
Definition at line 286 of file sepa_zerohalf.c. Referenced by preprocessColumns(), and separateByGaussHeuristics().
Definition at line 295 of file sepa_zerohalf.c. Referenced by preprocessRows(), preprocessTrivialZerohalfCuts(), separateByAuxGraph(), separateByEnumerationHeuristics(), and separateBySolvingAuxIP().
get the bit mask where the pos-th bit is set Definition at line 298 of file sepa_zerohalf.c.
set the pos-th bit of var Definition at line 301 of file sepa_zerohalf.c.
is the pos-th bit of var set? Definition at line 304 of file sepa_zerohalf.c.
Value:
static const unsigned int Zerohalf_bitarraybasetypesize_nbits Definition: sepa_zerohalf.c:292 set the pos-th bit of bitarray barray Definition at line 307 of file sepa_zerohalf.c.
Value:
static const unsigned int Zerohalf_bitarraybasetypesize_nbits Definition: sepa_zerohalf.c:292 is the pos-th bit of bitarray barray set? Definition at line 311 of file sepa_zerohalf.c. Referenced by getZerohalfWeightvectorFromSelectedRowsBitarray(), hasMatrixMax2EntriesPerRow(), preprocessColumns(), and separateByAuxGraph().
clear bitarray Definition at line 315 of file sepa_zerohalf.c. Referenced by separateByAuxGraph(), and separateByEnumerationHeuristics().
Value:
((((unsigned int)(nvalstostore)) % (Zerohalf_bitarraybasetypesize_nbits) == 0) \
: ((((unsigned int)(nvalstostore)) / (Zerohalf_bitarraybasetypesize_nbits)) + 1))
static const unsigned int Zerohalf_bitarraybasetypesize_nbits Definition: sepa_zerohalf.c:292 calculates the number of array elements (w.r.t. the bitarray base type) required to create the bitarray Definition at line 318 of file sepa_zerohalf.c.
get the corresponding array element of a bitarray position Definition at line 324 of file sepa_zerohalf.c. Referenced by preprocessColumns(), and separateByGaussHeuristics().
get the bitmask to mask all bits except the pos-th bit of an array element Definition at line 327 of file sepa_zerohalf.c. Referenced by preprocessColumns(), and separateByGaussHeuristics().
Value:
{ \
int idx__; \
for( idx__ = 0 ; idx__ < (size) ; ++idx__) \
{ \
barray2[idx__] op barray1[idx__]; \
} \
}
apply operation op for all array elements of bitarray barray1 and barray2 Definition at line 330 of file sepa_zerohalf.c.
barray2 = barray1 XOR barray2 Definition at line 340 of file sepa_zerohalf.c. Referenced by separateByAuxGraph(), separateByEnumerationHeuristics(), and separateByGaussHeuristics().
are barray1 and barray2 equal? Definition at line 343 of file sepa_zerohalf.c. Referenced by preprocessRows(), and preprocessTrivialZerohalfCuts().
creates a "subscip" representing the following auxiliary IP (AuxIP): min z := s^T v + x^T y s.t. (b (mod 2))^T v - 2q = 1 (A (mod 2))^T v - y - -2r = 0 v \in {0,1}^nrowsind y \in {0,1}^ncolsind r \in Z^ncolsind_+ q \in Z_+ Definition at line 4881 of file sepa_zerohalf.c.
Definition at line 4882 of file sepa_zerohalf.c. Typedef Documentation
Definition at line 178 of file sepa_zerohalf.c.
Definition at line 448 of file sepa_zerohalf.c.
Definition at line 488 of file sepa_zerohalf.c.
Definition at line 534 of file sepa_zerohalf.c.
Definition at line 564 of file sepa_zerohalf.c.
Definition at line 594 of file sepa_zerohalf.c.
Definition at line 600 of file sepa_zerohalf.c.
Definition at line 620 of file sepa_zerohalf.c. Enumeration Type Documentation
preprocessing methods, usable within the ppmethods parameter Definition at line 139 of file sepa_zerohalf.c.
separation methods, usable within the sepamethods parameter
Definition at line 159 of file sepa_zerohalf.c.
statistics: "origin" of separated cut
Definition at line 174 of file sepa_zerohalf.c. Function Documentation
creates and initializes sub LP data structures
Definition at line 630 of file sepa_zerohalf.c.
frees sub LP data structures
Definition at line 655 of file sepa_zerohalf.c. References SCIPfreeMemoryArray.
creates and initializes LP data structures
Definition at line 695 of file sepa_zerohalf.c.
frees LP data structures
Definition at line 730 of file sepa_zerohalf.c.
creates and initializes mod 2 data structures
Definition at line 798 of file sepa_zerohalf.c.
frees data structures
Definition at line 829 of file sepa_zerohalf.c.
creates and initializes auxiliary IP data structures
Definition at line 897 of file sepa_zerohalf.c. Referenced by separateBySolvingAuxIP().
frees auxiliary IP data structures
Definition at line 924 of file sepa_zerohalf.c. References SCIP_CALL, and SCIPfree(). Referenced by separateBySolvingAuxIP().
creates and initializes cut data structures
Definition at line 963 of file sepa_zerohalf.c. References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemory, and TRUE. Referenced by preprocessTrivialZerohalfCuts(), separateByAuxGraph(), separateByEnumerationHeuristics(), and separateBySolvingAuxIP().
frees cut data structures
Definition at line 1008 of file sepa_zerohalf.c. References SCIP_CALL, and SCIPreleaseRow().
creates and initializes auxiliary graph node data structures
Definition at line 1030 of file sepa_zerohalf.c. Referenced by separateByAuxGraph().
frees auxiliary graph node data structures
Definition at line 1054 of file sepa_zerohalf.c. References SCIPfreeMemoryArray. Referenced by ZerohalfAuxGraphFree().
creates and initializes auxiliary graph data structures
Definition at line 1083 of file sepa_zerohalf.c. Referenced by separateByAuxGraph().
frees auxiliary graph data structures
Definition at line 1104 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIPfreeMemoryArray, and ZerohalfAuxGraphNodeFree(). Referenced by separateByAuxGraph().
comparator function for sorting an index array non-decreasingly according to a real array Definition at line 1492 of file sepa_zerohalf.c.
comparator function for sorting an index array non-increasingly according to a real array Definition at line 1509 of file sepa_zerohalf.c.
searches for relevant columns, i.e., columns that cannot be deleted because of basic preprocessing methods
Definition at line 1531 of file sepa_zerohalf.c.
finds closest lower bound of col and stores it within lpdata; the bound can be the lower bound or the best variable lower bound with nonnegative column variable
Definition at line 1705 of file sepa_zerohalf.c. References NULL, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARTYPE_CONTINUOUS, SCIPcolGetLb(), SCIPcolGetLPPos(), SCIPcolGetPrimsol(), SCIPcolGetVar(), SCIPcolIsInLP(), SCIPisNegative(), SCIPvarGetCol(), SCIPvarGetNVlbs(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetVlbCoefs(), SCIPvarGetVlbConstants(), SCIPvarGetVlbVars(), and USEVARBOUNDS.
finds closest upper bound of col and stores it within lpdata; the bound can be the upper bound or the best variable upper bound with nonnegative column variable
Definition at line 1812 of file sepa_zerohalf.c. References NULL, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARTYPE_CONTINUOUS, SCIPcolGetLPPos(), SCIPcolGetPrimsol(), SCIPcolGetUb(), SCIPcolGetVar(), SCIPcolIsInLP(), SCIPisNegative(), SCIPvarGetCol(), SCIPvarGetNVubs(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetVubCoefs(), SCIPvarGetVubConstants(), SCIPvarGetVubVars(), and USEVARBOUNDS.
searches for relevant rows, i.e., rows containing relevant columns that cannot be deleted because of basic preprocessing methods
Definition at line 1916 of file sepa_zerohalf.c.
Definition at line 2393 of file sepa_zerohalf.c. References BITARRAYBITISSET, and FALSE. Referenced by preprocess(), and separateByAuxGraph().
Definition at line 2469 of file sepa_zerohalf.c.
stores nonzero elements of dense coefficient vector as sparse vector, and calculates activity and norm
Definition at line 2850 of file sepa_zerohalf.c. References MAX, NULL, REALABS, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, and SCIPisZero(). Referenced by createZerohalfCutFromZerohalfWeightvector().
adds a separated zerohalf cut to SCIP if it was successfully created and is efficacious
Definition at line 2961 of file sepa_zerohalf.c. Referenced by preprocessTrivialZerohalfCuts(), separateByAuxGraph(), separateByEnumerationHeuristics(), and separateBySolvingAuxIP().
marks a row as "removed" and stores why it has been removed using a flag
Definition at line 3027 of file sepa_zerohalf.c. Referenced by preprocessColumns(), and preprocessRows().
marks a row as "removed" and stores why it has been removed using a flag. in addition it clears this column's mod 2 data
Definition at line 3046 of file sepa_zerohalf.c. Referenced by preprocessColumns().
given a subset of mod 2 rows it returns a {0,1/2} weight vector used to combine the (original) LP rows. Note: original rows a stored as lhs <= a^Tx <= rhs by SCIP. Positive weights refer to "right half-rows" a^Tx <= rhs and negative weights to "left half-rows" -a^Tx <= -lhs
Definition at line 3081 of file sepa_zerohalf.c. References BITARRAYBITISSET, BMSclearMemoryArray, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemoryArray, SCIPdebugMessage, SCIPfreeMemoryArray, SCIProwGetName(), and SCIProwGetNLPNonz(). Referenced by preprocessTrivialZerohalfCuts(), separateByAuxGraph(), separateByEnumerationHeuristics(), and separateBySolvingAuxIP().
creates a zerohalf cut from a given weightvector
Definition at line 3155 of file sepa_zerohalf.c. References ALLOWLOCAL, BOUNDSFORTRANS, BOUNDSWITCH, BOUNDTYPESFORTRANS, FALSE, FIXINTEGRALRHS, MAXFRAC, MAXWEIGHTRANGE, MINFRAC, NULL, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddVarsToRow(), SCIPallocBufferArray, SCIPallocMemoryArray, SCIPcalcMIR(), SCIPcreateEmptyRowSepa(), SCIPcutGenerationHeuristicCmir(), SCIPdebugMessage, SCIPfreeBufferArray, SCIPgetNLPs(), SCIPgetSolVals(), SCIPinfinity(), SCIPisEfficacious(), SCIPisFeasGT(), SCIPisPositive(), SCIProwChgRank(), SCIPsnprintf(), SCIPvarGetProbindex(), storeCutInArrays(), TRUE, and USEVBDS. Referenced by preprocessTrivialZerohalfCuts(), separateByAuxGraph(), separateByEnumerationHeuristics(), and separateBySolvingAuxIP().
searches for trivial zerohalf cuts, given as (0,..0) row with rhs=1 and slack <= maxslack
Definition at line 3320 of file sepa_zerohalf.c. References addZerohalfCutToLP(), BITARRAY, BITARRAYSAREEQUAL, BMSclearMemoryArray, createZerohalfCutFromZerohalfWeightvector(), FALSE, getZerohalfWeightvectorFromSelectedRowsBitarray(), NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPfreeMemoryArray, SCIPisLE(), TRUE, and ZerohalfCutDataCreate(). Referenced by preprocess(), and separateByGaussHeuristics().
applies some row reductions
Definition at line 3454 of file sepa_zerohalf.c. References BITARRAY, BITARRAYSAREEQUAL, BMSclearMemoryArray, FALSE, IDENT_TO_ROW_WITH_SMALLER_SLACK, markRowAsRemoved(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPisGT(), SCIPisLT(), SLACK_GREATER_THAN_MAXSLACK, TRUE, and ZERO_ROW. Referenced by preprocess(), and separateByGaussHeuristics().
applies some column reductions
Definition at line 3591 of file sepa_zerohalf.c. References BITARRAYBITISSET, BITARRAYBITMASKTYPE, BMSclearMemoryArray, BMSmoveMemoryArray, FALSE, GETBITARRAYINDEX, GETBITARRAYMASK, markColAsRemovedAndClearCol(), markRowAsRemoved(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPisGT(), SINGLETON_COLUMN, SLACK_GREATER_THAN_MAXSLACK, TRUE, and ZERO_COLUMN. Referenced by preprocess(), and separateByGaussHeuristics().
applies modified Gaussian Elimination reduction
Definition at line 3769 of file sepa_zerohalf.c. Referenced by preprocess().
decomposes the problem into subproblems which can be considered separately
Definition at line 3905 of file sepa_zerohalf.c.
removes the largest number of columns such that the sum of the corresponding variables is at most delta
Definition at line 4294 of file sepa_zerohalf.c. Referenced by preprocess().
removes some rows that cannot be combined because the resulting slack would be larger than maxslack
Definition at line 4355 of file sepa_zerohalf.c. Referenced by preprocess().
aggregates identical columns into one column whose (artificial) LP solution is the sum of the aggregated columns
Definition at line 4537 of file sepa_zerohalf.c. Referenced by preprocess().
preprocess subproblem
Definition at line 4616 of file sepa_zerohalf.c. References ADDTRIVIALCUTS, DELETECOLSINGLETONS, DELETEIDENTROWS, DELETELARGESLACKROWS, DELETEROWSWRTMINSLACK, DELETESMALLFRACSOLCOLS, DELETEZEROCOLS, DELETEZEROROWS, FALSE, hasMatrixMax2EntriesPerRow(), MERGEIDENTCOLS, MODGAUSSIANELIMINATION, NULL, PPCOLUMNS, PPROWS, PPZEROONEROW, preprocessColumns(), preprocessColumnsWithSmallFracsol(), preprocessConsiderMinSlack(), preprocessIdenticalColums(), preprocessModGaussElim(), preprocessRows(), preprocessTrivialZerohalfCuts(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPallocMemoryArray, SCIPerrorMessage, and TRUE. returns the objective weights for the weighted feasibility AuxIP
Definition at line 4851 of file sepa_zerohalf.c.
Definition at line 4884 of file sepa_zerohalf.c. Referenced by separateBySolvingAuxIP().
solves the auxiliary IP given as subscip
Definition at line 5235 of file sepa_zerohalf.c. Referenced by separateBySolvingAuxIP().
determines the weightvector for a single row
Definition at line 5368 of file sepa_zerohalf.c.
gets the subset of rows that should be combined to a violated zerohalf cut
Definition at line 5413 of file sepa_zerohalf.c. Referenced by separateBySolvingAuxIP().
separates violated zerohalf cuts by solving an auxiliary IP. (exact method; exponential time)
Definition at line 5458 of file sepa_zerohalf.c. References addZerohalfCutToLP(), AUXIP, BITARRAY, createSubscip(), createZerohalfCutFromZerohalfWeightvector(), FALSE, getBitarrayOfSelectedRows(), getZerohalfWeightvectorFromSelectedRowsBitarray(), NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_OKAY, SCIP_Real, SCIPdebugMessage, SCIPfreeMemoryArray, SCIPprintBestSol(), SCIPprintOrigProblem(), solveSubscip(), TRUE, ZerohalfAuxIPDataCreate(), ZerohalfAuxIPDataFree(), and ZerohalfCutDataCreate(). Referenced by process().
calculates the inner product of mod2data->row and the LP solution
Definition at line 5607 of file sepa_zerohalf.c. Referenced by separateByEnumerationHeuristics().
separate violated zerohalf cuts by enumerating possible row combinations. (heuristic; polynomial time)
Definition at line 5648 of file sepa_zerohalf.c. References addZerohalfCutToLP(), BITARRAY, BITARRAYCLEAR, BITARRAYSXOR, BMScopyMemoryArray, calcInnerProductOfRowAndFracsol(), createZerohalfCutFromZerohalfWeightvector(), FALSE, getZerohalfWeightvectorFromSelectedRowsBitarray(), HEURISTICSENUM, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPerrorMessage, SCIPfreeBufferArray, SCIPfreeMemoryArray, SCIPisGT(), SCIPisLE(), SCIPsortInd(), and ZerohalfCutDataCreate(). Referenced by process(), separateByAuxGraph(), and separateByGaussHeuristics().
adds an edge (and its "copy" w.r.t. the node copies) to the auxiliary graph
Definition at line 5933 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemoryArray, SCIPisLT(), and SCIPisNegative(). Referenced by separateByAuxGraph().
Dijkstra's shortest path algorithm. Calculates the shortest path between sourcenode and targetnode. The calculation is aborted if the shortest path cannot be shorter than maxdistance
Definition at line 6049 of file sepa_zerohalf.c. Referenced by separateByAuxGraph().
separates violated zerohalf cuts by searching for minweight odd-valued cycles within an auxiliary graph. (exact method, but only applicable if each row contains at most two odd entries; polynomial time)
Definition at line 6147 of file sepa_zerohalf.c. References addEdgeToAuxGraph(), addZerohalfCutToLP(), AUXGRAPH, BITARRAY, BITARRAYBITISSET, BITARRAYCLEAR, BITARRAYSXOR, createZerohalfCutFromZerohalfWeightvector(), dijkstra(), FALSE, getZerohalfWeightvectorFromSelectedRowsBitarray(), hasMatrixMax2EntriesPerRow(), NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocMemoryArray, SCIPfreeBufferArray, SCIPfreeMemoryArray, SCIPisLE(), separateByEnumerationHeuristics(), TRUE, ZerohalfAuxGraphCreate(), ZerohalfAuxGraphFree(), ZerohalfAuxGraphNodeCreate(), and ZerohalfCutDataCreate(). Referenced by process().
separates violated zerohalf cuts using an extended Gaussian elimination. (heuristic; polynomial time)
Definition at line 6407 of file sepa_zerohalf.c. References BITARRAYBITMASKTYPE, BITARRAYSXOR, FALSE, GETBITARRAYINDEX, GETBITARRAYMASK, HEURISTICSGAUSS, NULL, preprocessColumns(), preprocessRows(), preprocessTrivialZerohalfCuts(), SCIP_CALL, SCIP_OKAY, SCIPisGT(), SCIPisLE(), SCIPsortInd(), separateByEnumerationHeuristics(), TRUE, and XOR. Referenced by process().
processes subproblem (i.e. runs separation algorithms)
Definition at line 6544 of file sepa_zerohalf.c. References BMSclearMemoryArray, ENUMHEURNMAX1, ENUMHEURNMAX2, FALSE, GAUSSHEUR, MAX2ODDENTRIESPERROW, NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPallocMemoryArray, SCIPerrorMessage, separateByAuxGraph(), separateByEnumerationHeuristics(), separateByGaussHeuristics(), separateBySolvingAuxIP(), SOLVEAUXSCIP, SOLVEAUXSCIPEXACT, STOPIFCUTWASFOUND, and TRUE.
copy method for separator plugins (called when SCIP copies plugins) Definition at line 6824 of file sepa_zerohalf.c.
destructor of separator to free user data (called when SCIP is exiting) Definition at line 6838 of file sepa_zerohalf.c. References SCIPfreeMemoryArray.
LP solution separation method of separator Definition at line 6902 of file sepa_zerohalf.c.
creates the zerohalf separator and includes it in SCIP
Definition at line 7450 of file sepa_zerohalf.c. Referenced by SCIPincludeDefaultPlugins(). Variable Documentation
size of BITARRAYBASETYPE Definition at line 289 of file sepa_zerohalf.c.
number of bits per BITARRAYBASETYPE Definition at line 292 of file sepa_zerohalf.c. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||