29 const std::string mpdDir);
61 virtual void generateCuts(
const OsiSolverInterface & si, OsiCuts & cs,
118 void setLUB(
double value);
124 void setEPS(
double value);
211 inline double rs_above_integer(
double value);
214 void update_pi_mat(
int r1,
int r2,
int step);
217 void update_redTab(
int r1,
int r2,
int step);
221 void find_step(
int r1,
int r2,
int *step,
222 double *reduc,
double *norm);
226 int test_pair(
int r1,
int r2,
double *norm);
229 void reduce_contNonBasicTab();
232 void generate_row(
int index_row,
double *row);
236 int generate_cgcut(
double *row,
double *rhs);
240 int generate_cgcut_2(
int basic_ind,
double *row,
double *rhs);
244 void eliminate_slacks(
double *row,
245 const double *elements,
248 const int *rowLength,
249 const double *rhs,
double *rowrhs);
253 void flip(
double *row);
259 void unflip(
double *row,
double *rowrhs,
double *slack_val);
268 double row_scale_factor(
double *row);
271 int generate_packed_row(
const double *xlp,
double *row,
272 int *rowind,
double *rowelem,
273 int *card_row,
double & rhs);
276 void check_optsol(
const int calling_place,
277 const double *xlp,
const double *slack_val,
281 void check_optsol(
const int calling_place,
282 const double *xlp,
const double *slack_val,
283 const double *ck_row,
const double ck_rhs,
284 const int cut_number,
const int do_flip);
287 bool rs_are_different_vectors(
const int *vect1,
292 bool rs_are_different_vectors(
const double *vect1,
297 bool rs_are_different_matrices(
const CoinPackedMatrix *mat1,
298 const CoinPackedMatrix *mat2,
320 const double *colLower;
323 const double *colUpper;
326 const double *rowLower;
329 const double *rowUpper;
332 const double *rowRhs;
336 int card_intBasicVar_frac;
340 int card_intNonBasicVar;
344 int card_contNonBasicVar;
348 int card_nonBasicAtUpper;
352 int card_nonBasicAtLower;
356 int *cv_intBasicVar_frac;
360 int *intBasicVar_frac;
367 int *contNonBasicVar;
371 int *nonBasicAtUpper;
375 int *nonBasicAtLower;
390 double **contNonBasicTab;
395 double **intNonBasicTab;
402 const double *given_optsol;
405 int card_given_optsol;
420 OsiSolverInterface *solver;
426 const double *rowActivity;
433 const CoinPackedMatrix *byRow;
445 const std::string mpdDir );
virtual bool needsOptimalBasis() const
Return true if needs optimal basis to do cuts (will return true)
double getLUB() const
Get the value of LUB.
friend void CglRedSplitUnitTest(const OsiSolverInterface *siP, const std::string mpdDir)
A function that tests the methods in the CglRedSplit class.
void compute_is_integer()
virtual std::string generateCpp(FILE *fp)
Create C++ lines to get to current state.
double getEPS_RELAX() const
Get the value of EPS_RELAX.
double getEPS_COEFF_LUB() const
Get the value of EPS_COEFF_LUB.
double getEPS_COEFF() const
Get the value of EPS_COEFF.
double getMaxTab() const
Get the value of maxTab.
Information about where the cut generator is invoked from.
void setEPS_COEFF(double value)
Set the value of EPS_COEFF, epsilon for values of coefficients; Default: 1e-8.
void print() const
Print some of the data members.
Gomory Reduce-and-Split Cut Generator Class; See method generateCuts().
CglRedSplit()
Default constructor.
void setMinReduc(double value)
Set the value of minReduc, threshold for relative norm improvement for performing a reduction; Defaul...
int getLimit() const
Get value of limit.
void setEPS_RELAX(double value)
Set the value of EPS_RELAX, value used for relaxing the right hand side of each generated cut; Defaul...
Cut Generator Base Class.
void setEPS(double value)
Set the value of EPS, epsilon for double computations; Default: 1e-7.
double getMinReduc() const
Get the value of minReduc.
double getEPS() const
Get the value of EPS.
void setParam(const CglRedSplitParam &source)
double getNormIsZero() const
Get the value of normIsZero.
void setEPS_COEFF_LUB(double value)
Set the value of EPS_COEFF_LUB, epsilon for values of coefficients for variables with absolute value ...
CglRedSplit & operator=(const CglRedSplit &rhs)
Assignment operator.
double getAway() const
Get value of away.
CglRedSplitParam getParam() const
virtual CglCutGenerator * clone() const
Clone.
void setMaxTab(double value)
Set the maximum allowed value for (mTab * mTab * CoinMax(mTab, nTab)) where mTab is the number of row...
void set_given_optsol(const double *given_sol, const int card_sol)
Set given_optsol to the given optimal solution given_sol.
void setNormIsZero(double value)
Set the value of normIsZero, the threshold for considering a norm to be 0; Default: 1e-5...
virtual ~CglRedSplit()
Destructor.
Class collecting parameters the Reduced-and-split cut generator.
virtual void generateCuts(const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo())
Generate Reduce-and-Split Mixed Integer Gomory cuts for the model of the solver interface si...
void printOptTab(OsiSolverInterface *solver) const
Print the current simplex tableau.
void setLUB(double value)
Set the value of LUB, value considered large for the absolute value of a lower or upper bound on a va...
void setLimit(int limit)
Set limit, the maximum number of non zero coefficients in generated cut; Default: 50...
void setAway(double value)
Set away, the minimum distance from being integer used for selecting rows for cut generation; all row...