coin-Cgl
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 // Copyright (C) 2006, Francois Margot and others. All Rights Reserved.
9 
10 #ifndef CglRedSplitParam_H
11 #define CglRedSplitParam_H
12 
13 #include "CglParam.hpp"
14 
15 
18 
57 
58 class CglRedSplitParam : public CglParam {
59 
60 public:
61 
68  virtual void setAway(const double value);
70  inline double getAway() const {return away_;}
71 
75  virtual void setLUB(const double value);
77  inline double getLUB() const {return LUB;}
78 
82  void setEPS_ELIM(const double value);
84  double getEPS_ELIM() const {return EPS_ELIM;}
85 
87  virtual void setEPS_RELAX_ABS(const double eps_ra);
89  inline double getEPS_RELAX_ABS() const {return EPS_RELAX_ABS;}
90 
92  virtual void setEPS_RELAX_REL(const double eps_rr);
94  inline double getEPS_RELAX_REL() const {return EPS_RELAX_REL;}
95 
96  // Set the maximum ratio between largest and smallest non zero
97  // coefficients in a cut. Default: 1e8.
98  virtual void setMAXDYN(double value);
100  inline double getMAXDYN() const {return MAXDYN_LUB;}
101 
102  // Set the maximum ratio between largest and smallest non zero
103  // coefficient in a cut involving structural variables with
104  // lower or upper bound in absolute value larger than LUB.
105  // Should logically be larger or equal to MAXDYN. Default: 1e13.
106  virtual void setMAXDYN_LUB(double value);
108  inline double getMAXDYN_LUB() const {return MAXDYN_LUB;}
109 
113  virtual void setEPS_COEFF_LUB(const double value);
115  inline double getEPS_COEFF_LUB() const {return EPS_COEFF_LUB;}
116 
119  virtual void setMINVIOL(double value);
121  inline double getMINVIOL() const {return MINVIOL;}
122 
124  virtual void setUSE_INTSLACKS(int value);
126  inline int getUSE_INTSLACKS() const {return USE_INTSLACKS;}
127 
129  virtual void setUSE_CG2(int value);
131  inline int getUSE_CG2() const {return USE_CG2;}
132 
135  virtual void setNormIsZero(const double value);
137  inline double getNormIsZero() const {return normIsZero;}
138 
141  virtual void setMinReduc(const double value);
143  inline double getMinReduc() const {return minReduc;}
144 
150  virtual void setMaxTab(const double value);
152  inline double getMaxTab() const {return maxTab_;}
154 
157  CglRedSplitParam(const double lub = 1000.0,
159  const double eps_elim = 1e-12,
160  const double eps_relax_abs = 1e-8,
161  const double eps_relax_rel = 0.0,
162  const double max_dyn = 1e8,
163  const double max_dyn_lub = 1e13,
164  const double eps_coeff_lub = 1e-13,
165  const double min_viol = 1e-7,
166  const int use_int_slacks = 0,
167  const int use_cg2 = 0,
168  const double norm_zero = 1e-5,
169  const double min_reduc = 0.05,
170  const double away = 0.05,
171  const double max_tab = 1e7);
172 
174  CglRedSplitParam(const CglParam &source,
175  const double lub = 1000.0,
176  const double eps_elim = 1e-12,
177  const double eps_relax_abs = 1e-8,
178  const double eps_relax_rel = 0.0,
179  const double max_dyn = 1e8,
180  const double max_dyn_lub = 1e13,
181  const double eps_coeff_lub = 1e-13,
182  const double min_viol = 1e-7,
183  const int use_int_slacks = 0,
184  const int use_cg2 = 0,
185  const double norm_zero = 1e-5,
186  const double min_reduc = 0.05,
187  const double away = 0.05,
188  const double max_tab = 1e7);
189 
191  CglRedSplitParam(const CglRedSplitParam &source);
192 
194  virtual CglRedSplitParam* clone() const;
195 
197  virtual CglRedSplitParam& operator=(const CglRedSplitParam &rhs);
198 
200  virtual ~CglRedSplitParam();
202 
203 protected:
204 
207 
210  double LUB;
211 
214  double EPS_ELIM;
215 
219 
224 
225  // Maximum ratio between largest and smallest non zero
226  // coefficients in a cut. Default: 1e8.
227  double MAXDYN;
228 
229  // Maximum ratio between largest and smallest non zero
230  // coefficients in a cut involving structural variables with
231  // lower or upper bound in absolute value larger than LUB.
232  // Should logically be larger or equal to MAXDYN. Default: 1e13.
233  double MAXDYN_LUB;
234 
238 
241  double MINVIOL;
242 
245 
248  int USE_CG2;
249 
252  double normIsZero;
253 
256  double minReduc;
257 
260  double away_;
261 
264  double maxTab_;
265 
267 };
268 
269 #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:17
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.