00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00014
00015
00016
00017
00019
00020 #ifndef MOD_K_SEPARATOR_HH
00021 #define MOD_K_SEPARATOR_HH
00022
00023
00024
00028 class ModkSeparator {
00029
00030 public:
00031
00032
00033
00034
00035
00050 ModkSeparator(int modfac, int nConstraints, int nVariables, int* nNonZeros,
00051 int** NonZeroIndices, double** NonZeroCoeff, double* rhs,
00052 double* lpSolution);
00053
00057 ~ModkSeparator();
00058
00065 int separate(int nMaxCuts);
00066
00073 int* getCut();
00074
00075
00076 private:
00077
00078
00079
00080
00081
00088 unsigned int hweight(unsigned int w);
00089
00090
00091
00092
00093
00094
00098 int** GeneratedCuts;
00099
00103 int** CongruenceSystem;
00104
00108 int nCols;
00109
00113 int nRows;
00114
00118 int nGen;
00119
00123 int nCutsLeft;
00124
00128 int* Cols;
00129
00133 int K;
00134
00138 int* Ord;
00139
00140
00141 int** NonZeroI;
00142 int* nNonZ;
00143 double** NonZeroC;
00144 double* RHS;
00145 int nVar;
00146 int nCon;
00147 double* lpSol;
00148
00152 bool ordGen;
00153
00157 bool constraintsGen;
00158
00162 int congruenceSystemGen;
00163
00164
00168 bool colsGen;
00169
00173 bool generatedCutsGen;
00174
00175 };
00176
00177 #endif
00178