Cgl trunk
|
00001 // Name: CglRedSplitParam.hpp 00002 // Author: Francois Margot 00003 // Tepper School of Business 00004 // Carnegie Mellon University, Pittsburgh, PA 15213 00005 // email: fmargot@andrew.cmu.edu 00006 // Date: 11/24/06 00007 // 00008 // $Id$ 00009 //----------------------------------------------------------------------------- 00010 // Copyright (C) 2006, Francois Margot and others. All Rights Reserved. 00011 // This code is licensed under the terms of the Eclipse Public License (EPL). 00012 00013 #ifndef CglRedSplitParam_H 00014 #define CglRedSplitParam_H 00015 00016 #include "CglParam.hpp" 00017 00018 00021 00060 00061 class CglRedSplitParam : public CglParam { 00062 00063 public: 00064 00071 virtual void setAway(const double value); 00073 inline double getAway() const {return away_;} 00074 00078 virtual void setLUB(const double value); 00080 inline double getLUB() const {return LUB;} 00081 00085 void setEPS_ELIM(const double value); 00087 double getEPS_ELIM() const {return EPS_ELIM;} 00088 00090 virtual void setEPS_RELAX_ABS(const double eps_ra); 00092 inline double getEPS_RELAX_ABS() const {return EPS_RELAX_ABS;} 00093 00095 virtual void setEPS_RELAX_REL(const double eps_rr); 00097 inline double getEPS_RELAX_REL() const {return EPS_RELAX_REL;} 00098 00099 // Set the maximum ratio between largest and smallest non zero 00100 // coefficients in a cut. Default: 1e8. 00101 virtual void setMAXDYN(double value); 00103 inline double getMAXDYN() const {return MAXDYN_LUB;} 00104 00105 // Set the maximum ratio between largest and smallest non zero 00106 // coefficient in a cut involving structural variables with 00107 // lower or upper bound in absolute value larger than LUB. 00108 // Should logically be larger or equal to MAXDYN. Default: 1e13. 00109 virtual void setMAXDYN_LUB(double value); 00111 inline double getMAXDYN_LUB() const {return MAXDYN_LUB;} 00112 00116 virtual void setEPS_COEFF_LUB(const double value); 00118 inline double getEPS_COEFF_LUB() const {return EPS_COEFF_LUB;} 00119 00122 virtual void setMINVIOL(double value); 00124 inline double getMINVIOL() const {return MINVIOL;} 00125 00127 virtual void setUSE_INTSLACKS(int value); 00129 inline int getUSE_INTSLACKS() const {return USE_INTSLACKS;} 00130 00132 virtual void setUSE_CG2(int value); 00134 inline int getUSE_CG2() const {return USE_CG2;} 00135 00138 virtual void setNormIsZero(const double value); 00140 inline double getNormIsZero() const {return normIsZero;} 00141 00144 virtual void setMinReduc(const double value); 00146 inline double getMinReduc() const {return minReduc;} 00147 00153 virtual void setMaxTab(const double value); 00155 inline double getMaxTab() const {return maxTab_;} 00157 00160 00161 CglRedSplitParam(const double lub = 1000.0, 00162 const double eps_elim = 1e-12, 00163 const double eps_relax_abs = 1e-8, 00164 const double eps_relax_rel = 0.0, 00165 const double max_dyn = 1e8, 00166 const double max_dyn_lub = 1e13, 00167 const double eps_coeff_lub = 1e-13, 00168 const double min_viol = 1e-7, 00169 const int use_int_slacks = 0, 00170 const int use_cg2 = 0, 00171 const double norm_zero = 1e-5, 00172 const double min_reduc = 0.05, 00173 const double away = 0.05, 00174 const double max_tab = 1e7); 00175 00177 CglRedSplitParam(const CglParam &source, 00178 const double lub = 1000.0, 00179 const double eps_elim = 1e-12, 00180 const double eps_relax_abs = 1e-8, 00181 const double eps_relax_rel = 0.0, 00182 const double max_dyn = 1e8, 00183 const double max_dyn_lub = 1e13, 00184 const double eps_coeff_lub = 1e-13, 00185 const double min_viol = 1e-7, 00186 const int use_int_slacks = 0, 00187 const int use_cg2 = 0, 00188 const double norm_zero = 1e-5, 00189 const double min_reduc = 0.05, 00190 const double away = 0.05, 00191 const double max_tab = 1e7); 00192 00194 CglRedSplitParam(const CglRedSplitParam &source); 00195 00197 virtual CglRedSplitParam* clone() const; 00198 00200 virtual CglRedSplitParam& operator=(const CglRedSplitParam &rhs); 00201 00203 virtual ~CglRedSplitParam(); 00205 00206 protected: 00207 00210 00213 double LUB; 00214 00217 double EPS_ELIM; 00218 00221 double EPS_RELAX_ABS; 00222 00226 double EPS_RELAX_REL; 00227 00228 // Maximum ratio between largest and smallest non zero 00229 // coefficients in a cut. Default: 1e8. 00230 double MAXDYN; 00231 00232 // Maximum ratio between largest and smallest non zero 00233 // coefficients in a cut involving structural variables with 00234 // lower or upper bound in absolute value larger than LUB. 00235 // Should logically be larger or equal to MAXDYN. Default: 1e13. 00236 double MAXDYN_LUB; 00237 00240 double EPS_COEFF_LUB; 00241 00244 double MINVIOL; 00245 00247 int USE_INTSLACKS; 00248 00251 int USE_CG2; 00252 00255 double normIsZero; 00256 00259 double minReduc; 00260 00263 double away_; 00264 00267 double maxTab_; 00268 00270 }; 00271 00272 #endif