Cbc  2.10.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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
double maxTab_
Maximum value for (mTab * mTab * CoinMax(mTab, nTab)).
virtual void setAway(const double value)
Set away, the minimum distance from being integer used for selecting rows for cut generation; all row...
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...
virtual CglRedSplitParam * clone() const
Clone.
double getEPS_COEFF_LUB() const
Get the value of EPS_COEFF_LUB.
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 ...
double getNormIsZero() const
Get the value of normIsZero.
virtual void setMAXDYN_LUB(double value)
virtual void setUSE_INTSLACKS(int value)
Set the value of USE_INTSLACKS.
virtual void setUSE_CG2(int value)
Set the value of USE_CG2.
double getLUB() const
Get the value of LUB.
virtual void setMAXDYN(double value)
double getAway() const
Get value of away.
virtual void setMINVIOL(double value)
Set the value of MINVIOL, the minimum violation for the current basic solution in a generated cut...
double getMinReduc() const
Get the value of minReduc.
int getUSE_CG2() const
Get the value of USE_CG2.
double getMINVIOL() const
Get the value of MINVIOL.
double MINVIOL
Minimum violation for the current basic solution in a generated cut.
void setEPS_ELIM(const double value)
Set the value of EPS_ELIM, epsilon for values of coefficients when eliminating slack variables; Defau...
virtual void setMinReduc(const double value)
Set the value of minReduc, threshold for relative norm improvement for performing a reduction; Defaul...
double getEPS_RELAX_REL() const
Get value of EPS_RELAX_REL.
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.
int USE_INTSLACKS
Use integer slacks to generate cuts if USE_INTSLACKS = 1. Default: 0.
int USE_CG2
Use second way to generate a mixed integer Gomory cut (see methods generate_cgcut()) and generate_cgc...
double EPS_RELAX_ABS
Value added to the right hand side of each generated cut to relax it.
double normIsZero
Norm of a vector is considered zero if smaller than normIsZero; Default: 1e-5.
Class collecting parameters for all cut generators.
Definition: CglParam.hpp:22
double away_
Use row only if pivot variable should be integer but is more than away_ from being integer...
virtual ~CglRedSplitParam()
Destructor.
double getEPS_ELIM() const
Get the value of EPS_ELIM.
double getEPS_RELAX_ABS() const
Get value of EPS_RELAX_ABS.
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 ...
int getUSE_INTSLACKS() const
Get the value of USE_INTSLACKS.
double getMaxTab() const
Get the value of maxTab.
virtual void setNormIsZero(const double value)
Set the value of normIsZero, the threshold for considering a norm to be 0; Default: 1e-5...
double getMAXDYN_LUB() const
Get the value of MAXDYN_LUB.
double LUB
Value considered large for the absolute value of lower or upper bound on a variable.
double EPS_COEFF_LUB
Epsilon for value of coefficients for variables with absolute value of lower or upper bound larger th...
double minReduc
Minimum reduction in percent that must be achieved by a potential reduction step in order to be perfo...
Class collecting parameters the Reduced-and-split cut generator.
virtual void setEPS_RELAX_ABS(const double eps_ra)
Set EPS_RELAX_ABS.
double EPS_ELIM
Epsilon for value of coefficients when eliminating slack variables.
virtual CglRedSplitParam & operator=(const CglRedSplitParam &rhs)
Assignment operator.
double getMAXDYN() const
Get the value of MAXDYN.
virtual void setMaxTab(const double value)
Set the maximum allowed value for (mTab * mTab * CoinMax(mTab, nTab)) where mTab is the number of row...
virtual void setEPS_RELAX_REL(const double eps_rr)
Set EPS_RELAX_REL.