coin-Cgl
|
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 // Copyright (C) 2006, Francois Margot and others. All Rights Reserved. 00009 00010 #ifndef CglRedSplitParam_H 00011 #define CglRedSplitParam_H 00012 00013 #include "CglParam.hpp" 00014 00015 00018 00057 00058 class CglRedSplitParam : public CglParam { 00059 00060 public: 00061 00068 virtual void setAway(const double value); 00070 inline double getAway() const {return away_;} 00071 00075 virtual void setLUB(const double value); 00077 inline double getLUB() const {return LUB;} 00078 00082 void setEPS_ELIM(const double value); 00084 double getEPS_ELIM() const {return EPS_ELIM;} 00085 00087 virtual void setEPS_RELAX_ABS(const double eps_ra); 00089 inline double getEPS_RELAX_ABS() const {return EPS_RELAX_ABS;} 00090 00092 virtual void setEPS_RELAX_REL(const double eps_rr); 00094 inline double getEPS_RELAX_REL() const {return EPS_RELAX_REL;} 00095 00096 // Set the maximum ratio between largest and smallest non zero 00097 // coefficients in a cut. Default: 1e8. 00098 virtual void setMAXDYN(double value); 00100 inline double getMAXDYN() const {return MAXDYN_LUB;} 00101 00102 // Set the maximum ratio between largest and smallest non zero 00103 // coefficient in a cut involving structural variables with 00104 // lower or upper bound in absolute value larger than LUB. 00105 // Should logically be larger or equal to MAXDYN. Default: 1e13. 00106 virtual void setMAXDYN_LUB(double value); 00108 inline double getMAXDYN_LUB() const {return MAXDYN_LUB;} 00109 00113 virtual void setEPS_COEFF_LUB(const double value); 00115 inline double getEPS_COEFF_LUB() const {return EPS_COEFF_LUB;} 00116 00119 virtual void setMINVIOL(double value); 00121 inline double getMINVIOL() const {return MINVIOL;} 00122 00124 virtual void setUSE_INTSLACKS(int value); 00126 inline int getUSE_INTSLACKS() const {return USE_INTSLACKS;} 00127 00129 virtual void setUSE_CG2(int value); 00131 inline int getUSE_CG2() const {return USE_CG2;} 00132 00135 virtual void setNormIsZero(const double value); 00137 inline double getNormIsZero() const {return normIsZero;} 00138 00141 virtual void setMinReduc(const double value); 00143 inline double getMinReduc() const {return minReduc;} 00144 00150 virtual void setMaxTab(const double value); 00152 inline double getMaxTab() const {return maxTab_;} 00154 00157 00158 CglRedSplitParam(const double lub = 1000.0, 00159 const double eps_elim = 1e-12, 00160 const double eps_relax_abs = 1e-8, 00161 const double eps_relax_rel = 0.0, 00162 const double max_dyn = 1e8, 00163 const double max_dyn_lub = 1e13, 00164 const double eps_coeff_lub = 1e-13, 00165 const double min_viol = 1e-7, 00166 const int use_int_slacks = 0, 00167 const int use_cg2 = 0, 00168 const double norm_zero = 1e-5, 00169 const double min_reduc = 0.05, 00170 const double away = 0.05, 00171 const double max_tab = 1e7); 00172 00174 CglRedSplitParam(const CglParam &source, 00175 const double lub = 1000.0, 00176 const double eps_elim = 1e-12, 00177 const double eps_relax_abs = 1e-8, 00178 const double eps_relax_rel = 0.0, 00179 const double max_dyn = 1e8, 00180 const double max_dyn_lub = 1e13, 00181 const double eps_coeff_lub = 1e-13, 00182 const double min_viol = 1e-7, 00183 const int use_int_slacks = 0, 00184 const int use_cg2 = 0, 00185 const double norm_zero = 1e-5, 00186 const double min_reduc = 0.05, 00187 const double away = 0.05, 00188 const double max_tab = 1e7); 00189 00191 CglRedSplitParam(const CglRedSplitParam &source); 00192 00194 virtual CglRedSplitParam* clone() const; 00195 00197 virtual CglRedSplitParam& operator=(const CglRedSplitParam &rhs); 00198 00200 virtual ~CglRedSplitParam(); 00202 00203 protected: 00204 00207 00210 double LUB; 00211 00214 double EPS_ELIM; 00215 00218 double EPS_RELAX_ABS; 00219 00223 double EPS_RELAX_REL; 00224 00225 // Maximum ratio between largest and smallest non zero 00226 // coefficients in a cut. Default: 1e8. 00227 double MAXDYN; 00228 00229 // Maximum ratio between largest and smallest non zero 00230 // coefficients in a cut involving structural variables with 00231 // lower or upper bound in absolute value larger than LUB. 00232 // Should logically be larger or equal to MAXDYN. Default: 1e13. 00233 double MAXDYN_LUB; 00234 00237 double EPS_COEFF_LUB; 00238 00241 double MINVIOL; 00242 00244 int USE_INTSLACKS; 00245 00248 int USE_CG2; 00249 00252 double normIsZero; 00253 00256 double minReduc; 00257 00260 double away_; 00261 00264 double maxTab_; 00265 00267 }; 00268 00269 #endif