CglRedSplitParam.hpp
Go to the documentation of this file.
1 // Name: CglRedSplitParam.hpp
2 // Author: Francois Margot
3 // Tepper School of Business
4 // Carnegie Mellon University, Pittsburgh, PA 15213
5 // email: fmargot@andrew.cmu.edu
6 // Date: 11/24/06
7 //
8 // $Id: CglRedSplitParam.hpp 1122 2013-04-06 20:39:53Z stefan $
9 //-----------------------------------------------------------------------------
10 // Copyright (C) 2006, Francois Margot and others. All Rights Reserved.
11 // This code is licensed under the terms of the Eclipse Public License (EPL).
12 
13 #ifndef CglRedSplitParam_H
14 #define CglRedSplitParam_H
15 
16 #include "CglParam.hpp"
17 
18 
21 
60 
61 class CglRedSplitParam : public CglParam {
62 
63 public:
64 
71  virtual void setAway(const double value);
73  inline double getAway() const {return away_;}
74 
78  virtual void setLUB(const double value);
80  inline double getLUB() const {return LUB;}
81 
85  void setEPS_ELIM(const double value);
87  double getEPS_ELIM() const {return EPS_ELIM;}
88 
90  virtual void setEPS_RELAX_ABS(const double eps_ra);
92  inline double getEPS_RELAX_ABS() const {return EPS_RELAX_ABS;}
93 
95  virtual void setEPS_RELAX_REL(const double eps_rr);
97  inline double getEPS_RELAX_REL() const {return EPS_RELAX_REL;}
98 
99  // Set the maximum ratio between largest and smallest non zero
100  // coefficients in a cut. Default: 1e8.
101  virtual void setMAXDYN(double value);
103  inline double getMAXDYN() const {return MAXDYN_LUB;}
104 
105  // Set the maximum ratio between largest and smallest non zero
106  // coefficient in a cut involving structural variables with
107  // lower or upper bound in absolute value larger than LUB.
108  // Should logically be larger or equal to MAXDYN. Default: 1e13.
109  virtual void setMAXDYN_LUB(double value);
111  inline double getMAXDYN_LUB() const {return MAXDYN_LUB;}
112 
116  virtual void setEPS_COEFF_LUB(const double value);
118  inline double getEPS_COEFF_LUB() const {return EPS_COEFF_LUB;}
119 
122  virtual void setMINVIOL(double value);
124  inline double getMINVIOL() const {return MINVIOL;}
125 
127  virtual void setUSE_INTSLACKS(int value);
129  inline int getUSE_INTSLACKS() const {return USE_INTSLACKS;}
130 
132  virtual void setUSE_CG2(int value);
134  inline int getUSE_CG2() const {return USE_CG2;}
135 
138  virtual void setNormIsZero(const double value);
140  inline double getNormIsZero() const {return normIsZero;}
141 
144  virtual void setMinReduc(const double value);
146  inline double getMinReduc() const {return minReduc;}
147 
153  virtual void setMaxTab(const double value);
155  inline double getMaxTab() const {return maxTab_;}
157 
160  CglRedSplitParam(const double lub = 1000.0,
162  const double eps_elim = 1e-12,
163  const double eps_relax_abs = 1e-8,
164  const double eps_relax_rel = 0.0,
165  const double max_dyn = 1e8,
166  const double max_dyn_lub = 1e13,
167  const double eps_coeff_lub = 1e-13,
168  const double min_viol = 1e-7,
169  const int use_int_slacks = 0,
170  const int use_cg2 = 0,
171  const double norm_zero = 1e-5,
172  const double min_reduc = 0.05,
173  const double away = 0.05,
174  const double max_tab = 1e7);
175 
177  CglRedSplitParam(const CglParam &source,
178  const double lub = 1000.0,
179  const double eps_elim = 1e-12,
180  const double eps_relax_abs = 1e-8,
181  const double eps_relax_rel = 0.0,
182  const double max_dyn = 1e8,
183  const double max_dyn_lub = 1e13,
184  const double eps_coeff_lub = 1e-13,
185  const double min_viol = 1e-7,
186  const int use_int_slacks = 0,
187  const int use_cg2 = 0,
188  const double norm_zero = 1e-5,
189  const double min_reduc = 0.05,
190  const double away = 0.05,
191  const double max_tab = 1e7);
192 
194  CglRedSplitParam(const CglRedSplitParam &source);
195 
197  virtual CglRedSplitParam* clone() const;
198 
200  virtual CglRedSplitParam& operator=(const CglRedSplitParam &rhs);
201 
203  virtual ~CglRedSplitParam();
205 
206 protected:
207 
210 
213  double LUB;
214 
217  double EPS_ELIM;
218 
222 
227 
228  // Maximum ratio between largest and smallest non zero
229  // coefficients in a cut. Default: 1e8.
230  double MAXDYN;
231 
232  // Maximum ratio between largest and smallest non zero
233  // coefficients in a cut involving structural variables with
234  // lower or upper bound in absolute value larger than LUB.
235  // Should logically be larger or equal to MAXDYN. Default: 1e13.
236  double MAXDYN_LUB;
237 
241 
244  double MINVIOL;
245 
248 
251  int USE_CG2;
252 
255  double normIsZero;
256 
259  double minReduc;
260 
263  double away_;
264 
267  double maxTab_;
268 
270 };
271 
272 #endif
virtual void setMinReduc(const double value)
Set the value of minReduc, threshold for relative norm improvement for performing a reduction; Defaul...
double getLUB() const
Get the value of LUB.
double maxTab_
Maximum value for (mTab * mTab * CoinMax(mTab, nTab)).
int getUSE_CG2() const
Get the value of USE_CG2.
virtual void setMINVIOL(double value)
Set the value of MINVIOL, the minimum violation for the current basic solution in a generated cut...
double EPS_COEFF_LUB
Epsilon for value of coefficients for variables with absolute value of lower or upper bound larger th...
double EPS_RELAX_REL
For a generated cut with right hand side rhs_val, EPS_RELAX_EPS * fabs(rhs_val) is used to relax the ...
virtual void setEPS_RELAX_REL(const double eps_rr)
Set EPS_RELAX_REL.
virtual ~CglRedSplitParam()
Destructor.
double getEPS_RELAX_REL() const
Get value of EPS_RELAX_REL.
int USE_INTSLACKS
Use integer slacks to generate cuts if USE_INTSLACKS = 1. Default: 0.
void setEPS_ELIM(const double value)
Set the value of EPS_ELIM, epsilon for values of coefficients when eliminating slack variables; Defau...
double getMAXDYN_LUB() const
Get the value of MAXDYN_LUB.
virtual void setNormIsZero(const double value)
Set the value of normIsZero, the threshold for considering a norm to be 0; Default: 1e-5...
double getNormIsZero() const
Get the value of normIsZero.
double MAXDYN
Value considered large for the absolute value of lower or upper bound on a variable.
Class collecting parameters the Reduced-and-split cut generator.
int USE_CG2
Use second way to generate a mixed integer Gomory cut (see methods generate_cgcut()) and generate_cgc...
double getMAXDYN() const
Get the value of MAXDYN.
double LUB
Value considered large for the absolute value of lower or upper bound on a variable.
double normIsZero
Norm of a vector is considered zero if smaller than normIsZero; Default: 1e-5.
int getUSE_INTSLACKS() const
Get the value of USE_INTSLACKS.
double EPS_RELAX_ABS
Value added to the right hand side of each generated cut to relax it.
virtual CglRedSplitParam * clone() const
Clone.
virtual void setUSE_CG2(int value)
Set the value of USE_CG2.
Class collecting parameters for all cut generators.
Definition: CglParam.hpp:22
virtual void setMAXDYN(double value)
Set away, the minimum distance from being integer used for selecting rows for cut generation; all row...
double getEPS_ELIM() const
Get the value of EPS_ELIM.
CglRedSplitParam(const double lub=1000.0, const double eps_elim=1e-12, const double eps_relax_abs=1e-8, const double eps_relax_rel=0.0, const double max_dyn=1e8, const double max_dyn_lub=1e13, const double eps_coeff_lub=1e-13, const double min_viol=1e-7, const int use_int_slacks=0, const int use_cg2=0, const double norm_zero=1e-5, const double min_reduc=0.05, const double away=0.05, const double max_tab=1e7)
Default constructor.
double MINVIOL
Minimum violation for the current basic solution in a generated cut.
double getMaxTab() const
Get the value of maxTab.
virtual void setEPS_RELAX_ABS(const double eps_ra)
Set EPS_RELAX_ABS.
virtual void setAway(const double value)
Set away, the minimum distance from being integer used for selecting rows for cut generation; all row...
double MAXDYN_LUB
Value considered large for the absolute value of lower or upper bound on a variable.
double getEPS_COEFF_LUB() const
Get the value of EPS_COEFF_LUB.
double getMinReduc() const
Get the value of minReduc.
double away_
Use row only if pivot variable should be integer but is more than away_ from being integer...
virtual void setMAXDYN_LUB(double value)
Set away, the minimum distance from being integer used for selecting rows for cut generation; all row...
virtual void setUSE_INTSLACKS(int value)
Set the value of USE_INTSLACKS.
virtual CglRedSplitParam & operator=(const CglRedSplitParam &rhs)
Assignment operator.
double getEPS_RELAX_ABS() const
Get value of EPS_RELAX_ABS.
virtual void setLUB(const double value)
Set the value of LUB, value considered large for the absolute value of a lower or upper bound on a va...
double getAway() const
Get value of away.
double minReduc
Minimum reduction in percent that must be achieved by a potential reduction step in order to be perfo...
virtual void setEPS_COEFF_LUB(const double value)
Set the value of EPS_COEFF_LUB, epsilon for values of coefficients for variables with absolute value ...
double EPS_ELIM
Epsilon for value of coefficients when eliminating slack variables.
virtual void setMaxTab(const double value)
Set the maximum allowed value for (mTab * mTab * CoinMax(mTab, nTab)) where mTab is the number of row...
double getMINVIOL() const
Get the value of MINVIOL.