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. Referenced by SCIP_DECL_SEPACOPY(), SCIP_DECL_SEPAEXECLP(), SCIP_DECL_SEPAFREE(), and SCIPincludeSepaZerohalf().
Definition at line 64 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
Definition at line 65 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
Definition at line 66 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
Definition at line 67 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
Definition at line 68 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
Definition at line 69 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
maximal number of zerohalf separation rounds per node (-1: unlimited) Definition at line 71 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
maximal number of zerohalf separation rounds in the root node (-1: unlimited) Definition at line 72 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
maximal number of {0,1/2}-cuts separated per separation round Definition at line 73 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
maximal number of {0,1/2}-cuts separated per separation round in root node Definition at line 74 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
should generated cuts be removed from the LP if they are no longer tight? Definition at line 75 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
should problem be decomposed into subproblems (if possible)? Definition at line 76 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
separating cuts only if depth <= maxdepth (-1: unlimited) Definition at line 77 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
minimal violation of a {0,1/2}-cut to be separated Definition at line 78 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
should the cuts be forced to enter the LP? (bypassing SCIPefficacy criteria) Definition at line 79 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
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. Referenced by SCIPincludeSepaZerohalf().
maximal number of {0,1/2}-cuts determined per separation round (this includes separated but inefficacious cuts) Definition at line 82 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
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. Referenced by SCIPincludeSepaZerohalf().
auxiliary IP objective function type Definition at line 86 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
should continuous variables be relaxed by adding variable bounds? Definition at line 87 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
should rows be scaled to make fractional coefficients integer? Definition at line 88 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
optional settings file of the auxiliary IP (-: none) Definition at line 89 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
limits/solutions setting of the auxiliary IP Definition at line 90 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
should all (proper) solutions of the auxiliary IP be used to generate cuts instead of using only the best? Definition at line 91 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
value of delta parameter used in preprocessing method 'd' Definition at line 93 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
penalty factor used with objective function 'p' of auxiliary IP Definition at line 94 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
preprocessing methods and ordering Definition at line 96 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
preprocessing methods and ordering Definition at line 97 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
maximal number of calls (-1: unlimited) Definition at line 98 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
should zerohalf cuts found in previous callbacks be ignored? Definition at line 99 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
should only original LP rows be considered (i.e. ignore previously added LP rows)? Definition at line 100 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
should zerohalf cuts be filtered using a cutpool Definition at line 101 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
should cuts be added to the delayed cut pool? Definition at line 102 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
maximal number of different deltas to try for cmir (-1: unlimited, 0: delta=1) Definition at line 103 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
should negative values also be tested in scaling for cmir? Definition at line 104 of file sepa_zerohalf.c. Referenced by SCIPincludeSepaZerohalf().
Definition at line 107 of file sepa_zerohalf.c. Referenced by SCIP_DECL_SEPAEXECLP().
Definition at line 108 of file sepa_zerohalf.c. Referenced by SCIP_DECL_SEPAEXECLP().
Definition at line 111 of file sepa_zerohalf.c. Referenced by SCIP_DECL_SEPAEXECLP().
Definition at line 112 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
Definition at line 113 of file sepa_zerohalf.c. Referenced by createZerohalfCutFromZerohalfWeightvector().
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 123 of file sepa_zerohalf.c. Referenced by getRelevantRows().
Definition at line 124 of file sepa_zerohalf.c. Referenced by getRelevantRows().
Definition at line 127 of file sepa_zerohalf.c. Referenced by findClosestLb(), findClosestUb(), and storeMod2Data(). is value even? Definition at line 182 of file sepa_zerohalf.c. Referenced by decomposeProblem(), getRelevantRows(), and storeMod2Data().
is value odd? Definition at line 183 of file sepa_zerohalf.c. Referenced by decomposeProblem(), getRelevantColumns(), and storeMod2Data().
Definition at line 184 of file sepa_zerohalf.c. Referenced by decomposeProblem(), preprocessModGaussElim(), separateByGaussHeuristics(), and storeMod2Data().
integer division using a power of 2 as divisor Definition at line 185 of file sepa_zerohalf.c.
remainder of integer division using a power of 2 as divisor Definition at line 186 of file sepa_zerohalf.c.
row or column is irrelevant Definition at line 236 of file sepa_zerohalf.c. Referenced by decomposeProblem(), getRelevantColumns(), getRelevantRows(), and storeMod2Data().
row has no nonzero entries Definition at line 239 of file sepa_zerohalf.c. Referenced by preprocessRows(), and storeMod2Data().
row is identical to another row but has a larger slack value Definition at line 240 of file sepa_zerohalf.c. Referenced by preprocessRows().
row has a slack value > maxslack Definition at line 241 of file sepa_zerohalf.c. Referenced by getRelevantRows(), preprocessColumns(), and preprocessRows().
row defines a violated zerohalf cut Definition at line 242 of file sepa_zerohalf.c. Referenced by SCIP_DECL_SEPAEXECLP().
row does not exist (lhs is -infinity or rhs is infinity) Definition at line 246 of file sepa_zerohalf.c. Referenced by getRelevantRows().
row does not contain relevant columns Definition at line 247 of file sepa_zerohalf.c. Referenced by getRelevantRows().
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 248 of file sepa_zerohalf.c. Referenced by preprocessConsiderMinSlack().
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 250 of file sepa_zerohalf.c. Referenced by preprocessConsiderMinSlack().
column has no nonzero entries Definition at line 255 of file sepa_zerohalf.c. Referenced by preprocessColumns().
column is identical to another column Definition at line 256 of file sepa_zerohalf.c. Referenced by preprocessIdenticalColums().
column corresponds to a variable whose LP solution is zero Definition at line 257 of file sepa_zerohalf.c. Referenced by getRelevantColumns().
column corresponds to a variable whose LP solution equals its even lb Definition at line 258 of file sepa_zerohalf.c. Referenced by getRelevantColumns().
column corresponds to a variable whose LP solution equals its odd lb Definition at line 259 of file sepa_zerohalf.c. Referenced by decomposeProblem(), getRelevantColumns(), getRelevantRows(), and storeMod2Data().
column corresponds to a variable whose LP solution equals its even ub Definition at line 260 of file sepa_zerohalf.c. Referenced by getRelevantColumns().
column corresponds to a variable whose LP solution equals its odd ub Definition at line 261 of file sepa_zerohalf.c. Referenced by decomposeProblem(), getRelevantColumns(), getRelevantRows(), and storeMod2Data().
column has only one nonzero entry Definition at line 262 of file sepa_zerohalf.c. Referenced by preprocessColumns().
column corresponds to a non-integer variable Definition at line 263 of file sepa_zerohalf.c. Referenced by getRelevantColumns().
column has been omitted (see preprocessColumnsWithSmallFracsol) Definition at line 264 of file sepa_zerohalf.c. Referenced by preprocessColumnsWithSmallFracsol().
all rows (of the current subproblem) have been deleted Definition at line 265 of file sepa_zerohalf.c. Referenced by preprocessConsiderMinSlack().
base type used for the bitarray data structures Definition at line 276 of file sepa_zerohalf.c.
Definition at line 277 of file sepa_zerohalf.c. Referenced by createSubscip(), markColAsRemovedAndClearCol(), preprocessColumns(), preprocessConsiderMinSlack(), preprocessIdenticalColums(), preprocessModGaussElim(), and separateByGaussHeuristics().
Definition at line 286 of file sepa_zerohalf.c. Referenced by decomposeProblem(), preprocessRows(), preprocessTrivialZerohalfCuts(), separateByAuxGraph(), separateByEnumerationHeuristics(), separateBySolvingAuxIP(), and storeMod2Data().
get the bit mask where the pos-th bit is set Definition at line 289 of file sepa_zerohalf.c.
set the pos-th bit of var Definition at line 292 of file sepa_zerohalf.c.
is the pos-th bit of var set? Definition at line 295 of file sepa_zerohalf.c.
Value:
set the pos-th bit of bitarray barray Definition at line 298 of file sepa_zerohalf.c. Referenced by decomposeProblem(), and storeMod2Data().
Value:
is the pos-th bit of bitarray barray set? Definition at line 302 of file sepa_zerohalf.c. Referenced by calcInnerProductOfRowAndFracsol(), calcObjWeight(), decomposeProblem(), getZerohalfWeightvectorFromSelectedRowsBitarray(), hasMatrixMax2EntriesPerRow(), preprocessColumns(), separateByAuxGraph(), and storeMod2Data().
clear bitarray Definition at line 306 of file sepa_zerohalf.c. Referenced by getBitarrayOfSelectedRows(), separateByAuxGraph(), separateByEnumerationHeuristics(), and storeMod2Data().
Value:
((((unsigned int)(nvalstostore)) % (Zerohalf_bitarraybasetypesize_nbits) == 0) \
: ((((unsigned int)(nvalstostore)) / (Zerohalf_bitarraybasetypesize_nbits)) + 1))
calculates the number of array elements (w.r.t. the bitarray base type) required to create the bitarray Definition at line 309 of file sepa_zerohalf.c. Referenced by decomposeProblem(), and storeMod2Data().
get the corresponding array element of a bitarray position Definition at line 315 of file sepa_zerohalf.c. Referenced by createSubscip(), markColAsRemovedAndClearCol(), preprocessColumns(), preprocessConsiderMinSlack(), preprocessIdenticalColums(), preprocessModGaussElim(), and separateByGaussHeuristics().
get the bitmask to mask all bits except the pos-th bit of an array element Definition at line 318 of file sepa_zerohalf.c. Referenced by createSubscip(), markColAsRemovedAndClearCol(), preprocessColumns(), preprocessConsiderMinSlack(), preprocessIdenticalColums(), preprocessModGaussElim(), 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 321 of file sepa_zerohalf.c.
barray2 = barray1 XOR barray2 Definition at line 331 of file sepa_zerohalf.c. Referenced by getBitarrayOfSelectedRows(), preprocessModGaussElim(), separateByAuxGraph(), separateByEnumerationHeuristics(), and separateByGaussHeuristics().
are barray1 and barray2 equal? Definition at line 334 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 4872 of file sepa_zerohalf.c. Referenced by createSubscip().
Definition at line 4873 of file sepa_zerohalf.c. Referenced by createSubscip(). Typedef Documentation
Definition at line 174 of file sepa_zerohalf.c.
Definition at line 439 of file sepa_zerohalf.c.
Definition at line 479 of file sepa_zerohalf.c.
Definition at line 525 of file sepa_zerohalf.c.
Definition at line 555 of file sepa_zerohalf.c.
Definition at line 585 of file sepa_zerohalf.c.
Definition at line 591 of file sepa_zerohalf.c.
Definition at line 611 of file sepa_zerohalf.c. Enumeration Type Documentation
preprocessing methods, usable within the ppmethods parameter
Definition at line 135 of file sepa_zerohalf.c.
separation methods, usable within the sepamethods parameter
Definition at line 155 of file sepa_zerohalf.c.
statistics: "origin" of separated cut Definition at line 170 of file sepa_zerohalf.c. Function Documentation
creates and initializes sub LP data structures
Definition at line 621 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocMemory. Referenced by decomposeProblem(), and getRelevantColumns().
frees sub LP data structures
Definition at line 646 of file sepa_zerohalf.c. References NULL, SCIPfreeMemory, and SCIPfreeMemoryArray. Referenced by decomposeProblem(), and ZerohalfLPDataFree().
creates and initializes LP data structures
Definition at line 686 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocMemory. Referenced by SCIP_DECL_SEPAEXECLP().
frees LP data structures
Definition at line 721 of file sepa_zerohalf.c. References NULL, SCIP_OKAY, SCIPfreeMemory, SCIPfreeMemoryArray, and ZerohalfSubLPDataFree(). Referenced by SCIP_DECL_SEPAEXECLP().
creates and initializes mod 2 data structures
Definition at line 789 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocMemory. Referenced by SCIP_DECL_SEPAEXECLP().
frees data structures
Definition at line 820 of file sepa_zerohalf.c. References NULL, SCIP_OKAY, SCIPfreeMemory, and SCIPfreeMemoryArray. Referenced by SCIP_DECL_SEPAEXECLP().
creates and initializes auxiliary IP data structures
Definition at line 888 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocMemory. Referenced by separateBySolvingAuxIP().
frees auxiliary IP data structures
Definition at line 915 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPfree(), SCIPfreeMemory, and SCIPfreeMemoryArray. Referenced by separateBySolvingAuxIP().
creates and initializes cut data structures
Definition at line 954 of file sepa_zerohalf.c. References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemory, and TRUE. Referenced by preprocessTrivialZerohalfCuts(), SCIP_DECL_SEPAEXECLP(), separateByAuxGraph(), separateByEnumerationHeuristics(), and separateBySolvingAuxIP().
frees cut data structures
Definition at line 999 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeMemory, and SCIPreleaseRow(). Referenced by SCIP_DECL_SEPAEXECLP().
creates and initializes auxiliary graph node data structures
Definition at line 1021 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocMemory. Referenced by separateByAuxGraph().
frees auxiliary graph node data structures
Definition at line 1045 of file sepa_zerohalf.c. References NULL, SCIP_OKAY, SCIPfreeMemory, and SCIPfreeMemoryArray. Referenced by ZerohalfAuxGraphFree().
creates and initializes auxiliary graph data structures
Definition at line 1074 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocMemory. Referenced by separateByAuxGraph().
frees auxiliary graph data structures
Definition at line 1095 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeMemory, SCIPfreeMemoryArray, and ZerohalfAuxGraphNodeFree(). Referenced by separateByAuxGraph().
comparator function for sorting an index array non-decreasingly according to a real array Definition at line 1483 of file sepa_zerohalf.c. References SCIP_Real.
comparator function for sorting an index array non-increasingly according to a real array Definition at line 1500 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 1522 of file sepa_zerohalf.c. References BMSclearMemoryArray, CONTINUOUS_VARIABLE, IRRELEVANT, ISODD, LP_SOL_EQUALS_EVEN_LB, LP_SOL_EQUALS_EVEN_UB, LP_SOL_EQUALS_ODD_LB, LP_SOL_EQUALS_ODD_UB, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPallocMemoryArray, SCIPcolGetLb(), SCIPcolGetPrimsol(), SCIPcolGetUb(), SCIPcolGetVar(), SCIPgetVarSol(), SCIPisFeasEQ(), SCIPisFeasZero(), SCIPisInfinity(), SCIPisLE(), SCIPisNegative(), SCIPisZero(), SCIPvarGetType(), ZERO_LP_SOL, and ZerohalfSubLPDataCreate(). Referenced by SCIP_DECL_SEPAEXECLP().
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 1696 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. Referenced by getRelevantRows(), and storeMod2Data().
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 1803 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. Referenced by getRelevantRows(), and storeMod2Data().
searches for relevant rows, i.e., rows containing relevant columns that cannot be deleted because of basic preprocessing methods
Definition at line 1907 of file sepa_zerohalf.c. References BMSclearMemoryArray, FALSE, findClosestLb(), findClosestUb(), IRRELEVANT, ISEVEN, LP_SOL_EQUALS_ODD_LB, LP_SOL_EQUALS_ODD_UB, MAXDNOM, MAXSCALE, NO_RELEVANT_COLUMNS, NONEXISTENT_ROW, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPallocBufferArray, SCIPallocMemoryArray, SCIPcalcIntegralScalar(), SCIPcolGetLPPos(), SCIPcolGetPrimsol(), SCIPcolGetVar(), SCIPepsilon(), SCIPfreeBufferArray, SCIPgetRowLPActivity(), SCIPgetRowMaxCoef(), SCIPgetRowMinCoef(), SCIPisFeasZero(), SCIPisGE(), SCIPisInfinity(), SCIPisIntegral(), SCIPisLE(), SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetIndex(), SCIProwGetLhs(), SCIProwGetName(), SCIProwGetNLPNonz(), SCIProwGetRhs(), SCIProwGetSumNorm(), SCIProwGetVals(), SCIPvarGetCol(), SCIPvarGetType(), SLACK_GREATER_THAN_MAXSLACK, and TRUE. Referenced by SCIP_DECL_SEPAEXECLP().
Definition at line 2384 of file sepa_zerohalf.c. References BITARRAYBITISSET, FALSE, NULL, and TRUE. Referenced by preprocess(), separateByAuxGraph(), and storeMod2Data().
Definition at line 2460 of file sepa_zerohalf.c. References BITARRAY, BITARRAYBITISSET, BITARRAYBITSET, BITARRAYCLEAR, BMSclearMemoryArray, BMScopyMemoryArray, FALSE, findClosestLb(), findClosestUb(), GETREQUIREDBITARRAYSIZE, hasMatrixMax2EntriesPerRow(), IRRELEVANT, ISEVEN, ISODD, LP_SOL_EQUALS_ODD_LB, LP_SOL_EQUALS_ODD_UB, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPallocBufferArray, SCIPallocMemoryArray, SCIPceil(), SCIPcolGetLb(), SCIPcolGetLPPos(), SCIPcolGetPrimsol(), SCIPcolGetUb(), SCIPcolGetVar(), SCIPfloor(), SCIPfreeBufferArray, SCIPfreeMemoryArray, SCIPisFeasZero(), SCIPisIntegral(), SCIPisLE(), SCIPisZero(), SCIProwGetCols(), SCIProwGetNLPNonz(), SCIProwGetVals(), SCIPvarGetCol(), SCIPvarGetType(), TRUE, USEVARBOUNDS, XOR, and ZERO_ROW. Referenced by SCIP_DECL_SEPAEXECLP().
stores nonzero elements of dense coefficient vector as sparse vector, and calculates activity and norm
Definition at line 2841 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 2952 of file sepa_zerohalf.c. References NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_ERROR, SCIP_OKAY, SCIP_SEPARATED, SCIPaddCut(), SCIPaddPoolCut(), SCIPdebug, SCIPerrorMessage, SCIPisEfficacious(), SCIPisPositive(), SCIPprintRow(), and TRUE. Referenced by preprocessTrivialZerohalfCuts(), SCIP_DECL_SEPAEXECLP(), separateByAuxGraph(), separateByEnumerationHeuristics(), and separateBySolvingAuxIP().
marks a row as "removed" and stores why it has been removed using a flag
Definition at line 3018 of file sepa_zerohalf.c. References NULL. Referenced by preprocessColumns(), preprocessConsiderMinSlack(), 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 3037 of file sepa_zerohalf.c. References BITARRAYBITMASKTYPE, GETBITARRAYINDEX, GETBITARRAYMASK, and NULL. Referenced by preprocessColumns(), preprocessColumnsWithSmallFracsol(), preprocessConsiderMinSlack(), and preprocessIdenticalColums().
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 3072 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 3146 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(), SCIP_DECL_SEPAEXECLP(), separateByAuxGraph(), separateByEnumerationHeuristics(), and separateBySolvingAuxIP().
searches for trivial zerohalf cuts, given as (0,..0) row with rhs=1 and slack <= maxslack
Definition at line 3311 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 3445 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(), preprocessModGaussElim(), and separateByGaussHeuristics().
applies some column reductions
Definition at line 3582 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(), preprocessModGaussElim(), and separateByGaussHeuristics().
applies modified Gaussian Elimination reduction
Definition at line 3760 of file sepa_zerohalf.c. References BITARRAYBITMASKTYPE, BITARRAYSXOR, FALSE, GETBITARRAYINDEX, GETBITARRAYMASK, NULL, preprocessColumns(), preprocessRows(), SCIP_CALL, SCIP_OKAY, SCIPisZero(), SCIPsortInd(), TRUE, and XOR. Referenced by preprocess().
decomposes the problem into subproblems which can be considered separately
Definition at line 3896 of file sepa_zerohalf.c. References BITARRAY, BITARRAYBITISSET, BITARRAYBITSET, BMSclearMemoryArray, FALSE, GETREQUIREDBITARRAYSIZE, IRRELEVANT, ISEVEN, ISODD, LP_SOL_EQUALS_ODD_LB, LP_SOL_EQUALS_ODD_UB, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocMemoryArray, SCIPcolGetLb(), SCIPcolGetLPPos(), SCIPcolGetNNonz(), SCIPcolGetRows(), SCIPcolGetUb(), SCIPcolGetVals(), SCIPdebugMessage, SCIPfreeBufferArray, SCIPfreeMemoryArray, SCIPisInfinity(), SCIPisLE(), SCIProwGetCols(), SCIProwGetLPPos(), SCIProwGetNLPNonz(), SCIProwGetVals(), XOR, ZerohalfSubLPDataCreate(), and ZerohalfSubLPDataFree(). Referenced by SCIP_DECL_SEPAEXECLP().
removes the largest number of columns such that the sum of the corresponding variables is at most delta
Definition at line 4285 of file sepa_zerohalf.c. References markColAsRemovedAndClearCol(), NULL, SCIP_OKAY, SCIP_Real, SCIPisGT(), SCIPisPositive(), SCIPsortInd(), and SMALL_FRACSOL_HEUR. Referenced by preprocess().
removes some rows that cannot be combined because the resulting slack would be larger than maxslack
Definition at line 4346 of file sepa_zerohalf.c. References ALL_MATRIX_ROWS_DELETED, BITARRAYBITMASKTYPE, BMSclearMemoryArray, GETBITARRAYINDEX, GETBITARRAYMASK, LARGE_COL_EXISTS, markColAsRemovedAndClearCol(), markRowAsRemoved(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPisFeasZero(), SCIPisGT(), SCIPisLT(), SCIPsortInd(), SLACK_GREATER_THAN_MSL_MINUS_SODD, and TRUE. Referenced by preprocess().
aggregates identical columns into one column whose (artificial) LP solution is the sum of the aggregated columns
Definition at line 4528 of file sepa_zerohalf.c. References BITARRAYBITMASKTYPE, BMSclearMemoryArray, GETBITARRAYINDEX, GETBITARRAYMASK, IDENT_TO_ANOTHER_COLUMN, markColAsRemovedAndClearCol(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPfreeBufferArray, and TRUE. Referenced by preprocess().
preprocess subproblem
Definition at line 4607 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. Referenced by SCIP_DECL_SEPAEXECLP(). returns the objective weights for the weighted feasibility AuxIP
Definition at line 4842 of file sepa_zerohalf.c. References BITARRAYBITISSET, NULL, and SCIP_Real. Referenced by createSubscip().
Definition at line 4875 of file sepa_zerohalf.c. References BITARRAYBITMASKTYPE, BMSclearMemoryArray, BRANCHPRIORITY__AVOID_BRANCHING, BRANCHPRIORITY__PREFER_BRANCHING, calcObjWeight(), FALSE, GETBITARRAYINDEX, GETBITARRAYMASK, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPaddCons(), SCIPaddVar(), SCIPallocBufferArray, SCIPallocMemoryArray, SCIPchgVarBranchPriority(), SCIPcopyPlugins(), SCIPcreate(), SCIPcreateConsLinear(), SCIPcreateProb(), SCIPcreateVar(), SCIPdebug, SCIPdebugMessage, SCIPfeastol(), SCIPfreeBufferArray, SCIPgetMemExternEstim(), SCIPgetMemUsed(), SCIPgetRealParam(), SCIPgetSolvingTime(), SCIPinfinity(), SCIPisFeasNegative(), SCIPisInfinity(), SCIPprintOrigProblem(), SCIPreadParams(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetLongintParam(), SCIPsetObjlimit(), SCIPsetRealParam(), SCIPsnprintf(), and TRUE. Referenced by separateBySolvingAuxIP().
solves the auxiliary IP given as subscip
Definition at line 5226 of file sepa_zerohalf.c. References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_STAGE_SOLVED, SCIP_STAGE_SOLVING, SCIPallocBufferArray, SCIPallocMemoryArray, SCIPdebug, SCIPfreeBufferArray, SCIPgetNSols(), SCIPgetSolOrigObj(), SCIPgetSols(), SCIPgetSolVal(), SCIPgetStage(), SCIPisGT(), SCIPisLE(), SCIPprintStatistics(), SCIPsolve(), SCIPwarningMessage(), and TRUE. Referenced by separateBySolvingAuxIP().
determines the weightvector for a single row
Definition at line 5359 of file sepa_zerohalf.c. References BMSclearMemoryArray, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemoryArray, SCIPfreeMemoryArray, and SCIProwGetNLPNonz(). Referenced by SCIP_DECL_SEPAEXECLP().
gets the subset of rows that should be combined to a violated zerohalf cut
Definition at line 5404 of file sepa_zerohalf.c. References BITARRAYCLEAR, BITARRAYSXOR, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemoryArray, SCIPgetSolVal(), and SCIPisZero(). Referenced by separateBySolvingAuxIP().
separates violated zerohalf cuts by solving an auxiliary IP. (exact method; exponential time)
Definition at line 5449 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 5598 of file sepa_zerohalf.c. References BITARRAYBITISSET, NULL, SCIP_OKAY, and SCIPisGT(). Referenced by separateByEnumerationHeuristics().
separate violated zerohalf cuts by enumerating possible row combinations. (heuristic; polynomial time)
Definition at line 5639 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 5924 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 6040 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPisGT(), and SCIPisLT(). 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 6138 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 6398 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 6535 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. Referenced by SCIP_DECL_SEPAEXECLP().
copy method for separator plugins (called when SCIP copies plugins) Definition at line 6815 of file sepa_zerohalf.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPincludeSepaZerohalf(), SCIPsepaGetName(), and SEPA_NAME.
destructor of separator to free user data (called when SCIP is exiting) Definition at line 6829 of file sepa_zerohalf.c. References NULL, SCIP_OKAY, SCIPfreeMemory, SCIPfreeMemoryArray, SCIPsepaGetData(), SCIPsepaGetName(), SCIPsepaSetData(), and SEPA_NAME.
LP solution separation method of separator Definition at line 6893 of file sepa_zerohalf.c. References addZerohalfCutToLP(), BMSclearMemoryArray, createZerohalfCutFromZerohalfWeightvector(), decomposeProblem(), DECOMPOSITION, DEFINES_VIOLATED_ZEROHALF_CUT, FALSE, getRelevantColumns(), getRelevantRows(), getZerohalfWeightvectorForSingleRow(), MIN, MINORTHO, NNONZOFFSET, NULL, ORTHOFUNC, preprocess(), process(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_Longint, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIP_REAL_MIN, SCIPaddCut(), SCIPaddDelayedPoolCut(), SCIPaddPoolCut(), SCIPallocBufferArray, SCIPallocMemoryArray, SCIPdebugMessage, SCIPfloor(), SCIPfreeBufferArray, SCIPfreeMemoryArray, SCIPgetCharParam(), SCIPgetDepth(), SCIPgetLPColsData(), SCIPgetLPRowsData(), SCIPgetLPSolstat(), SCIPgetNLPBranchCands(), SCIPgetVarsData(), SCIPisLT(), SCIPisStopped(), SCIProwGetIndex(), SCIProwGetNLPNonz(), SCIProwGetOrthogonality(), SCIPsepaGetData(), SCIPsepaGetName(), SCIPsepaGetNCalls(), SCIPsepaGetNCallsAtNode(), SCIPsortDownRealInt(), SCIPsortRealInt(), SEPA_NAME, storeMod2Data(), TRUE, ZerohalfCutDataCreate(), ZerohalfCutDataFree(), ZerohalfLPDataCreate(), ZerohalfLPDataFree(), ZerohalfMod2DataCreate(), and ZerohalfMod2DataFree().
creates the zerohalf separator and includes it in SCIP
Definition at line 7441 of file sepa_zerohalf.c. References DEFAULT_DECOMPOSEPROBLEM, DEFAULT_DELAYEDCUTS, DEFAULT_DYNAMICCUTS, DEFAULT_FORCECUTSTOLP, DEFAULT_FORCECUTSTOSEPASTORE, DEFAULT_IGNOREPREVIOUSZHCUTS, DEFAULT_MAXCUTS, DEFAULT_MAXCUTSROOT, DEFAULT_MAXDEPTH, DEFAULT_MAXNCALLS, DEFAULT_MAXROUNDS, DEFAULT_MAXROUNDSROOT, DEFAULT_MAXSEPACUTS, DEFAULT_MAXSEPACUTSROOT, DEFAULT_MAXTESTDELTA, DEFAULT_MINVIOLATION, DEFAULT_ONLYORIGROWS, DEFAULT_PPDELTA, DEFAULT_PPMETHODS, DEFAULT_RELAXCONTVARS, DEFAULT_SCALEFRACCOEFFS, DEFAULT_SEPAMETHODS, DEFAULT_SUBSCIPOBJECTIVE, DEFAULT_SUBSCIPOBJPEN, DEFAULT_SUBSCIPSETTINGS, DEFAULT_SUBSCIPSOLLIMIT, DEFAULT_SUBSCIPUSEALLSOLS, DEFAULT_TRYNEGSCALING, DEFAULT_USEZHCUTPOOL, FALSE, NULL, SCIP_CALL, SCIP_LONGINT_MAX, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPaddBoolParam(), SCIPaddCharParam(), SCIPaddIntParam(), SCIPaddLongintParam(), SCIPaddRealParam(), SCIPaddStringParam(), SCIPallocMemory, SCIPincludeSepaBasic(), SCIPmemccpy(), SCIPsetSepaCopy(), SCIPsetSepaFree(), SEPA_DELAY, SEPA_DESC, SEPA_FREQ, SEPA_MAXBOUNDDIST, SEPA_NAME, SEPA_PRIORITY, SEPA_USESSUBSCIP, and TRUE. Referenced by SCIP_DECL_SEPACOPY(), and SCIPincludeDefaultPlugins(). Variable Documentation
size of BITARRAYBASETYPE Definition at line 280 of file sepa_zerohalf.c.
number of bits per BITARRAYBASETYPE Definition at line 283 of file sepa_zerohalf.c. |