sepa_zerohalf.c File Reference Detailed Description{0,1/2}-cuts separator {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
< print statistics Definition at line 61 of file sepa_zerohalf.c. Referenced by process(), and SCIP_DECL_SEPACOPY().
Definition at line 62 of file sepa_zerohalf.c.
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.
maximal number of zerohalf separation rounds per node (-1: unlimited) Definition at line 69 of file sepa_zerohalf.c.
maximal number of zerohalf separation rounds in the root node (-1: unlimited) Definition at line 70 of file sepa_zerohalf.c.
maximal number of {0,1/2}-cuts separated per separation round Definition at line 71 of file sepa_zerohalf.c.
maximal number of {0,1/2}-cuts separated per separation round in root node Definition at line 72 of file sepa_zerohalf.c.
should generated cuts be removed from the LP if they are no longer tight? Definition at line 73 of file sepa_zerohalf.c.
should problem be decomposed into subproblems (if possible)? Definition at line 74 of file sepa_zerohalf.c.
separating cuts only if depth <= maxdepth (-1: unlimited) Definition at line 75 of file sepa_zerohalf.c.
minimal violation of a {0,1/2}-cut to be separated Definition at line 76 of file sepa_zerohalf.c.
should the cuts be forced to enter the LP? (bypassing SCIPefficacy criteria) Definition at line 77 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 78 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 81 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 84 of file sepa_zerohalf.c.
auxiliary IP objective function type Definition at line 87 of file sepa_zerohalf.c.
should continuous variables be relaxed by adding variable bounds? Definition at line 88 of file sepa_zerohalf.c.
should rows be scaled to make fractional coefficients integer? Definition at line 89 of file sepa_zerohalf.c.
optional settings file of the auxiliary IP (-: none) Definition at line 90 of file sepa_zerohalf.c.
limits/solutions setting of the auxiliary IP Definition at line 91 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 92 of file sepa_zerohalf.c.
value of delta parameter used in preprocessing method 'd' Definition at line 95 of file sepa_zerohalf.c.
penalty factor used with objective function 'p' of auxiliary IP Definition at line 96 of file sepa_zerohalf.c.
preprocessing methods and ordering Definition at line 98 of file sepa_zerohalf.c.
preprocessing methods and ordering Definition at line 99 of file sepa_zerohalf.c.
maximal number of calls (-1: unlimited) Definition at line 100 of file sepa_zerohalf.c.
should zerohalf cuts found in previous callbacks be ignored? Definition at line 101 of file sepa_zerohalf.c.
should only original LP rows be considered (i.e. ignore previously added LP rows)? Definition at line 102 of file sepa_zerohalf.c.
should zerohalf cuts be filtered using a cutpool Definition at line 103 of file sepa_zerohalf.c.
should cuts be added to the delayed cut pool? Definition at line 104 of file sepa_zerohalf.c.
maximal number of different deltas to try for cmir (-1: unlimited, 0: delta=1) Definition at line 105 of file sepa_zerohalf.c.
should negative values also be tested in scaling for cmir? Definition at line 106 of file sepa_zerohalf.c.
Definition at line 109 of file sepa_zerohalf.c.
Definition at line 110 of file sepa_zerohalf.c.
Definition at line 113 of file sepa_zerohalf.c.
Definition at line 114 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
Definition at line 115 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
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 125 of file sepa_zerohalf.c.
Definition at line 126 of file sepa_zerohalf.c.
Definition at line 129 of file sepa_zerohalf.c. Referenced by findClosestLb(), and findClosestUb(). is value even? Definition at line 184 of file sepa_zerohalf.c.
is value odd? Definition at line 185 of file sepa_zerohalf.c.
Definition at line 186 of file sepa_zerohalf.c. Referenced by separateByGaussHeuristics().
integer division using a power of 2 as divisor Definition at line 187 of file sepa_zerohalf.c.
remainder of integer division using a power of 2 as divisor Definition at line 188 of file sepa_zerohalf.c.
row or column is irrelevant Definition at line 240 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
row has no nonzero entries Definition at line 243 of file sepa_zerohalf.c. Referenced by preprocessRows(), and ZerohalfAuxGraphFree().
row is identical to another row but has a larger slack value Definition at line 244 of file sepa_zerohalf.c. Referenced by preprocessRows(), and ZerohalfAuxGraphFree().
row has a slack value > maxslack Definition at line 245 of file sepa_zerohalf.c. Referenced by preprocessColumns(), preprocessRows(), and ZerohalfAuxGraphFree().
row defines a violated zerohalf cut Definition at line 246 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
row does not exist (lhs is -infinity or rhs is infinity) Definition at line 250 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
row does not contain relevant columns Definition at line 251 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
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 252 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
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 255 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
column has no nonzero entries Definition at line 262 of file sepa_zerohalf.c. Referenced by preprocessColumns(), and ZerohalfAuxGraphFree().
column is identical to another column Definition at line 263 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
column corresponds to a variable whose LP solution is zero Definition at line 264 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
column corresponds to a variable whose LP solution equals its even lb Definition at line 265 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
column corresponds to a variable whose LP solution equals its odd lb Definition at line 266 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
column corresponds to a variable whose LP solution equals its even ub Definition at line 267 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
column corresponds to a variable whose LP solution equals its odd ub Definition at line 268 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
column has only one nonzero entry Definition at line 269 of file sepa_zerohalf.c. Referenced by preprocessColumns(), and ZerohalfAuxGraphFree().
column corresponds to a non-integer variable Definition at line 270 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
column has been omitted (see preprocessColumnsWithSmallFracsol) Definition at line 271 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
all rows (of the current subproblem) have been deleted Definition at line 272 of file sepa_zerohalf.c. Referenced by ZerohalfAuxGraphFree().
base type used for the bitarray data structures Definition at line 283 of file sepa_zerohalf.c.
Definition at line 284 of file sepa_zerohalf.c. Referenced by preprocessColumns(), and separateByGaussHeuristics().
Definition at line 293 of file sepa_zerohalf.c. Referenced by preprocess(), preprocessRows(), preprocessTrivialZerohalfCuts(), separateByAuxGraph(), separateByEnumerationHeuristics(), and separateBySolvingAuxIP().
get the bit mask where the pos-th bit is set Definition at line 296 of file sepa_zerohalf.c.
set the pos-th bit of var Definition at line 299 of file sepa_zerohalf.c.
is the pos-th bit of var set? Definition at line 302 of file sepa_zerohalf.c.
Value:
static const unsigned int Zerohalf_bitarraybasetypesize_nbits Definition: sepa_zerohalf.c:290 set the pos-th bit of bitarray barray Definition at line 305 of file sepa_zerohalf.c.
Value:
static const unsigned int Zerohalf_bitarraybasetypesize_nbits Definition: sepa_zerohalf.c:290 is the pos-th bit of bitarray barray set? Definition at line 309 of file sepa_zerohalf.c. Referenced by getZerohalfWeightvectorFromSelectedRowsBitarray(), hasMatrixMax2EntriesPerRow(), preprocessColumns(), separateByAuxGraph(), and ZerohalfAuxGraphFree().
clear bitarray Definition at line 313 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:290 calculates the number of array elements (w.r.t. the bitarray base type) required to create the bitarray Definition at line 316 of file sepa_zerohalf.c.
get the corresponding array element of a bitarray position Definition at line 322 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 325 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 328 of file sepa_zerohalf.c.
barray2 = barray1 XOR barray2 Definition at line 338 of file sepa_zerohalf.c. Referenced by separateByAuxGraph(), separateByEnumerationHeuristics(), and separateByGaussHeuristics().
are barray1 and barray2 equal? Definition at line 341 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 4879 of file sepa_zerohalf.c.
Definition at line 4880 of file sepa_zerohalf.c. Typedef Documentation
Definition at line 176 of file sepa_zerohalf.c.
Definition at line 446 of file sepa_zerohalf.c.
Definition at line 486 of file sepa_zerohalf.c.
Definition at line 532 of file sepa_zerohalf.c.
Definition at line 562 of file sepa_zerohalf.c.
Definition at line 592 of file sepa_zerohalf.c.
Definition at line 598 of file sepa_zerohalf.c.
Definition at line 618 of file sepa_zerohalf.c. Enumeration Type Documentation
preprocessing methods, usable within the ppmethods parameter Definition at line 137 of file sepa_zerohalf.c.
separation methods, usable within the sepamethods parameter
Definition at line 157 of file sepa_zerohalf.c.
statistics: "origin" of separated cut
Definition at line 172 of file sepa_zerohalf.c. Function Documentation
creates and initializes sub LP data structures
Definition at line 628 of file sepa_zerohalf.c. References NULL.
frees sub LP data structures
Definition at line 653 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIPallocMemory, SCIPfreeMemory, SCIPfreeMemoryArray, and ZerohalfLPDataCreate().
creates and initializes LP data structures
Definition at line 693 of file sepa_zerohalf.c. References NULL. Referenced by ZerohalfSubLPDataFree().
frees LP data structures
Definition at line 728 of file sepa_zerohalf.c.
creates and initializes mod 2 data structures
Definition at line 796 of file sepa_zerohalf.c. References NULL.
frees data structures
Definition at line 827 of file sepa_zerohalf.c.
creates and initializes auxiliary IP data structures
Definition at line 895 of file sepa_zerohalf.c. References NULL. Referenced by separateBySolvingAuxIP().
frees auxiliary IP data structures
Definition at line 922 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPfree(), SCIPfreeMemory, SCIPfreeMemoryArray, and ZerohalfCutDataCreate(). Referenced by separateBySolvingAuxIP().
creates and initializes cut data structures
Definition at line 961 of file sepa_zerohalf.c. References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemory, TRUE, and ZerohalfCutDataFree(). Referenced by preprocessTrivialZerohalfCuts(), separateByAuxGraph(), separateByEnumerationHeuristics(), separateBySolvingAuxIP(), and ZerohalfAuxIPDataFree().
frees cut data structures
Definition at line 1006 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemory, SCIPfreeMemory, SCIPreleaseRow(), and ZerohalfAuxGraphNodeCreate(). Referenced by ZerohalfCutDataCreate().
creates and initializes auxiliary graph node data structures
Definition at line 1028 of file sepa_zerohalf.c. References NULL. Referenced by separateByAuxGraph(), and ZerohalfCutDataFree().
frees auxiliary graph node data structures
Definition at line 1052 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemory, SCIPfreeMemory, SCIPfreeMemoryArray, and ZerohalfAuxGraphCreate(). Referenced by ZerohalfAuxGraphFree().
creates and initializes auxiliary graph data structures
Definition at line 1081 of file sepa_zerohalf.c. References NULL. Referenced by separateByAuxGraph(), and ZerohalfAuxGraphNodeFree().
frees auxiliary graph data structures
Definition at line 1102 of file sepa_zerohalf.c. References ALL_MATRIX_ROWS_DELETED, BITARRAYBITISSET, CONTINUOUS_VARIABLE, DEFINES_VIOLATED_ZEROHALF_CUT, IDENT_TO_ANOTHER_COLUMN, IDENT_TO_ROW_WITH_SMALLER_SLACK, IRRELEVANT, LARGE_COL_EXISTS, LP_SOL_EQUALS_EVEN_LB, LP_SOL_EQUALS_EVEN_UB, LP_SOL_EQUALS_ODD_LB, LP_SOL_EQUALS_ODD_UB, NO_RELEVANT_COLUMNS, NONEXISTENT_ROW, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_SORTINDCOMP(), SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPcolGetPrimsol(), SCIPcolGetVar(), SCIPdebugMessage, SCIPdebugPrintf, SCIPerrorMessage, SCIPfreeMemory, SCIPfreeMemoryArray, SCIPprintRow(), SCIProwGetName(), SCIPsnprintf(), SCIPvarGetName(), SINGLETON_COLUMN, SLACK_GREATER_THAN_MAXSLACK, SLACK_GREATER_THAN_MSL_MINUS_SODD, SMALL_FRACSOL_HEUR, ZERO_COLUMN, ZERO_LP_SOL, ZERO_ROW, and ZerohalfAuxGraphNodeFree(). Referenced by separateByAuxGraph().
comparator function for sorting an index array non-decreasingly according to a real array Definition at line 1490 of file sepa_zerohalf.c. References SCIP_Real. Referenced by ZerohalfAuxGraphFree().
comparator function for sorting an index array non-increasingly according to a real array Definition at line 1507 of file sepa_zerohalf.c. References SCIP_Real.
searches for relevant columns, i.e., columns that cannot be deleted because of basic preprocessing methods
Definition at line 1529 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 1703 of file sepa_zerohalf.c. References findClosestUb(), 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 1810 of file sepa_zerohalf.c. References getRelevantRows(), NULL, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARTYPE_CONTINUOUS, SCIPcolGetLPPos(), SCIPcolGetPrimsol(), SCIPcolGetUb(), SCIPcolGetVar(), SCIPcolIsInLP(), SCIPisNegative(), SCIPvarGetCol(), SCIPvarGetNVubs(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetVubCoefs(), SCIPvarGetVubConstants(), SCIPvarGetVubVars(), and USEVARBOUNDS. Referenced by findClosestLb().
searches for relevant rows, i.e., rows containing relevant columns that cannot be deleted because of basic preprocessing methods
Definition at line 1914 of file sepa_zerohalf.c. Referenced by findClosestUb().
Definition at line 2391 of file sepa_zerohalf.c. References BITARRAYBITISSET, FALSE, NULL, SCIP_Bool, storeMod2Data(), and TRUE. Referenced by preprocess(), and separateByAuxGraph().
Definition at line 2467 of file sepa_zerohalf.c. Referenced by hasMatrixMax2EntriesPerRow().
stores nonzero elements of dense coefficient vector as sparse vector, and calculates activity and norm
Definition at line 2848 of file sepa_zerohalf.c. References addZerohalfCutToLP(), 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 2959 of file sepa_zerohalf.c. Referenced by preprocessTrivialZerohalfCuts(), separateByAuxGraph(), separateByEnumerationHeuristics(), separateBySolvingAuxIP(), and storeCutInArrays().
marks a row as "removed" and stores why it has been removed using a flag
Definition at line 3025 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 3044 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 3079 of file sepa_zerohalf.c. References BITARRAYBITISSET, BMSclearMemoryArray, createZerohalfCutFromZerohalfWeightvector(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocMemoryArray, SCIPdebugMessage, SCIPfreeMemoryArray, SCIProwGetName(), and SCIProwGetNLPNonz(). Referenced by preprocessTrivialZerohalfCuts(), separateByAuxGraph(), separateByEnumerationHeuristics(), and separateBySolvingAuxIP().
creates a zerohalf cut from a given weightvector
Definition at line 3153 of file sepa_zerohalf.c. References ALLOWLOCAL, BOUNDSFORTRANS, BOUNDSWITCH, BOUNDTYPESFORTRANS, FALSE, FIXINTEGRALRHS, MAXFRAC, MAXWEIGHTRANGE, MINFRAC, NULL, preprocessTrivialZerohalfCuts(), 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 getZerohalfWeightvectorFromSelectedRowsBitarray(), preprocessTrivialZerohalfCuts(), separateByAuxGraph(), separateByEnumerationHeuristics(), and separateBySolvingAuxIP().
searches for trivial zerohalf cuts, given as (0,..0) row with rhs=1 and slack <= maxslack
Definition at line 3318 of file sepa_zerohalf.c. References addZerohalfCutToLP(), BITARRAY, BITARRAYSAREEQUAL, BMSclearMemoryArray, createZerohalfCutFromZerohalfWeightvector(), FALSE, getZerohalfWeightvectorFromSelectedRowsBitarray(), NULL, preprocessRows(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPfreeMemoryArray, SCIPisLE(), TRUE, and ZerohalfCutDataCreate(). Referenced by createZerohalfCutFromZerohalfWeightvector(), preprocess(), and separateByGaussHeuristics().
applies some row reductions
Definition at line 3452 of file sepa_zerohalf.c. References BITARRAY, BITARRAYSAREEQUAL, BMSclearMemoryArray, FALSE, IDENT_TO_ROW_WITH_SMALLER_SLACK, markRowAsRemoved(), NULL, preprocessColumns(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPisGT(), SCIPisLT(), SLACK_GREATER_THAN_MAXSLACK, TRUE, and ZERO_ROW. Referenced by preprocess(), preprocessTrivialZerohalfCuts(), and separateByGaussHeuristics().
applies some column reductions
Definition at line 3589 of file sepa_zerohalf.c. References BITARRAYBITISSET, BITARRAYBITMASKTYPE, BMSclearMemoryArray, BMSmoveMemoryArray, FALSE, GETBITARRAYINDEX, GETBITARRAYMASK, markColAsRemovedAndClearCol(), markRowAsRemoved(), NULL, preprocessModGaussElim(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPisGT(), SINGLETON_COLUMN, SLACK_GREATER_THAN_MAXSLACK, TRUE, and ZERO_COLUMN. Referenced by preprocess(), preprocessRows(), and separateByGaussHeuristics().
applies modified Gaussian Elimination reduction
Definition at line 3767 of file sepa_zerohalf.c. Referenced by preprocess(), and preprocessColumns().
decomposes the problem into subproblems which can be considered separately
Definition at line 3903 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 4292 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 4353 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 4535 of file sepa_zerohalf.c. Referenced by preprocess().
preprocess subproblem
Definition at line 4614 of file sepa_zerohalf.c. References ADDTRIVIALCUTS, BITARRAY, calcObjWeight(), 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, SCIP_Real, SCIPallocMemoryArray, SCIPerrorMessage, and TRUE. returns the objective weights for the weighted feasibility AuxIP
Definition at line 4849 of file sepa_zerohalf.c. Referenced by preprocess().
Definition at line 4882 of file sepa_zerohalf.c. Referenced by separateBySolvingAuxIP().
solves the auxiliary IP given as subscip
Definition at line 5233 of file sepa_zerohalf.c. Referenced by separateBySolvingAuxIP().
determines the weightvector for a single row
Definition at line 5366 of file sepa_zerohalf.c.
gets the subset of rows that should be combined to a violated zerohalf cut
Definition at line 5411 of file sepa_zerohalf.c. Referenced by separateBySolvingAuxIP().
separates violated zerohalf cuts by solving an auxiliary IP. (exact method; exponential time)
Definition at line 5456 of file sepa_zerohalf.c. References addZerohalfCutToLP(), AUXIP, BITARRAY, calcInnerProductOfRowAndFracsol(), 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 5605 of file sepa_zerohalf.c. Referenced by separateByEnumerationHeuristics(), and separateBySolvingAuxIP().
separate violated zerohalf cuts by enumerating possible row combinations. (heuristic; polynomial time)
Definition at line 5646 of file sepa_zerohalf.c. References addEdgeToAuxGraph(), addZerohalfCutToLP(), BITARRAY, BITARRAYCLEAR, BITARRAYSXOR, BMScopyMemoryArray, calcInnerProductOfRowAndFracsol(), createZerohalfCutFromZerohalfWeightvector(), FALSE, getZerohalfWeightvectorFromSelectedRowsBitarray(), HEURISTICSENUM, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPdebugMessage, 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 5931 of file sepa_zerohalf.c. References dijkstra(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocMemoryArray, SCIPisLT(), and SCIPisNegative(). Referenced by separateByAuxGraph(), and separateByEnumerationHeuristics().
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 6047 of file sepa_zerohalf.c. Referenced by addEdgeToAuxGraph(), and 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 6145 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(), separateByGaussHeuristics(), TRUE, ZerohalfAuxGraphCreate(), ZerohalfAuxGraphFree(), ZerohalfAuxGraphNodeCreate(), and ZerohalfCutDataCreate(). Referenced by process().
separates violated zerohalf cuts using an extended Gaussian elimination. (heuristic; polynomial time)
Definition at line 6405 of file sepa_zerohalf.c. References BITARRAYBITMASKTYPE, BITARRAYSXOR, FALSE, GETBITARRAYINDEX, GETBITARRAYMASK, HEURISTICSGAUSS, NULL, preprocessColumns(), preprocessRows(), preprocessTrivialZerohalfCuts(), process(), SCIP_CALL, SCIP_OKAY, SCIPisGT(), SCIPisLE(), SCIPsortInd(), separateByEnumerationHeuristics(), TRUE, and XOR. Referenced by process(), and separateByAuxGraph().
processes subproblem (i.e. runs separation algorithms)
Definition at line 6542 of file sepa_zerohalf.c. References AUXGRAPH, AUXIP, BMSclearMemoryArray, DECOMPOSITION, ENUMHEURNMAX1, ENUMHEURNMAX2, FALSE, GAUSSHEUR, HEURISTICSENUM, HEURISTICSGAUSS, MAX2ODDENTRIESPERROW, NULL, PPZEROONEROW, SCIP_Bool, SCIP_CALL, SCIP_DECL_SEPACOPY(), SCIP_INVALIDDATA, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPallocMemoryArray, SCIPerrorMessage, SCIPincludeSepaZerohalf(), SCIPisEfficacious(), SCIPsepaGetName(), SEPA_NAME, separateByAuxGraph(), separateByEnumerationHeuristics(), separateByGaussHeuristics(), separateBySolvingAuxIP(), SOLVEAUXSCIP, SOLVEAUXSCIPEXACT, STOPIFCUTWASFOUND, and TRUE. Referenced by separateByGaussHeuristics().
copy method for separator plugins (called when SCIP copies plugins) Definition at line 6822 of file sepa_zerohalf.c. References NULL, SCIPsepaGetData(), SCIPsepaGetName(), and SEPA_NAME. Referenced by process().
destructor of separator to free user data (called when SCIP is exiting) Definition at line 6836 of file sepa_zerohalf.c. References NULL, SCIP_DECL_SEPAEXECLP(), SCIP_OKAY, SCIP_Real, SCIPfreeMemory, SCIPfreeMemoryArray, and SCIPsepaSetData().
LP solution separation method of separator Definition at line 6900 of file sepa_zerohalf.c. Referenced by SCIP_DECL_SEPAFREE().
creates the zerohalf separator and includes it in SCIP
Definition at line 7448 of file sepa_zerohalf.c. Referenced by process(), and SCIPincludeDefaultPlugins(). Variable Documentation
size of BITARRAYBASETYPE Definition at line 287 of file sepa_zerohalf.c.
number of bits per BITARRAYBASETYPE Definition at line 290 of file sepa_zerohalf.c. |