CglGMIParam.hpp

Go to the documentation of this file.
00001 // Name:     CglGMIParam.hpp
00002 // Author:   Giacomo Nannicini
00003 //           Singapore University of Technology and Design
00004 //           email: nannicini@sutd.edu.sg
00005 //           based on CglRedSplitParam.hpp by Francois Margot
00006 // Date:     11/17/09
00007 //-----------------------------------------------------------------------------
00008 // Copyright (C) 2009, Giacomo Nannicini and others.  All Rights Reserved.
00009 
00010 #ifndef CglGMIParam_H
00011 #define CglGMIParam_H
00012 
00013 #include "CglParam.hpp"
00014 
00015 
00018 
00051 
00052 class CglGMIParam : public CglParam {
00053 
00054 public:
00055 
00057   enum CleaningProcedure{
00058     /* CglLandP procedure I */
00059     CP_CGLLANDP1,
00060     /* CglLandP procedure II */
00061     CP_CGLLANDP2,
00062     /* CglRedSplit procedure I */
00063     CP_CGLREDSPLIT,
00064     /* Only integral cuts, i.e. cuts with integral coefficients */
00065     CP_INTEGRAL_CUTS,
00066     /* CglLandP procedure I with integral scaling */
00067     CP_CGLLANDP1_INT,
00068     /* CglLandP procedure I with scaling of the max element to 1 if possible */
00069     CP_CGLLANDP1_SCALEMAX,
00070     /* CglLandP procedure I with scaling of the rhs to 1 if possible */
00071     CP_CGLLANDP1_SCALERHS
00072   };
00073 
00080   inline void setInfinity(double value) {setINFINIT(value);}
00081   inline double getInfinity() const {return INFINIT;}
00082 
00084   inline void setEps(double value) {setEPS(value);}
00085   inline double getEps() const {return EPS;}
00086 
00088   inline void setEpsCoeff(double value) {setEPS_COEFF(value);}
00089   inline double getEpsCoeff() const {return EPS_COEFF;}
00090 
00092   inline void setMaxSupport(int value) {setMAX_SUPPORT(value);}
00093   inline int getMaxSupport() const {return MAX_SUPPORT;}
00095   inline void setMaxSupportAbs(int value) {setMAX_SUPPORT(value);}
00096   inline int getMaxSupportAbs() const {return MAX_SUPPORT;}
00097   inline int getMAX_SUPPORT_ABS() const {return MAX_SUPPORT;}
00098 
00103   virtual void setAway(double value);
00105   inline double getAway() const {return AWAY;}
00107   inline void setAWAY(double value) {setAway(value);}
00108   inline double getAWAY() const {return AWAY;}
00109 
00113   virtual void setEPS_ELIM(double value);
00115   inline double getEPS_ELIM() const {return EPS_ELIM;}
00117   inline void setEpsElim(double value) {setEPS_ELIM(value);}
00118   inline double getEpsElim() const {return EPS_ELIM;}
00119   
00121   virtual void setEPS_RELAX_ABS(double value);
00123   inline double getEPS_RELAX_ABS() const {return EPS_RELAX_ABS;}
00125   inline void setEpsRelaxAbs(double value) {setEPS_RELAX_ABS(value);}
00126   inline double getEpsRelaxAbs() const {return EPS_RELAX_ABS;}
00127 
00129   virtual void setEPS_RELAX_REL(double value);
00131   inline double getEPS_RELAX_REL() const {return EPS_RELAX_REL;}
00133   inline void setEpsRelaxRel(double value) {setEPS_RELAX_REL(value);}
00134   inline double getEpsRelaxRel() const {return EPS_RELAX_REL;}
00135 
00136   // Set the maximum ratio between largest and smallest non zero 
00137   // coefficients in a cut. Default: 1e6.
00138   virtual void setMAXDYN(double value);
00140   inline double getMAXDYN() const {return MAXDYN;}
00142   inline void setMaxDyn(double value) {setMAXDYN(value);}
00143   inline double getMaxDyn() const {return MAXDYN;}
00144 
00147   virtual void setMINVIOL(double value);
00149   inline double getMINVIOL() const {return MINVIOL;}
00151   inline void setMinViol(double value) {setMINVIOL(value);}
00152   inline double getMinViol() const {return MINVIOL;}
00153 
00158   virtual void setMAX_SUPPORT_REL(double value);
00160   inline double getMAX_SUPPORT_REL() const {return MAX_SUPPORT_REL;}
00162   inline void setMaxSupportRel(double value) {setMAX_SUPPORT_REL(value);}
00163   inline double getMaxSupportRel() const {return MAX_SUPPORT_REL;}
00164 
00166   virtual void setUSE_INTSLACKS(bool value);
00168   inline bool getUSE_INTSLACKS() const {return USE_INTSLACKS;}
00170   inline void setUseIntSlacks(bool value) {setUSE_INTSLACKS(value);}
00171   inline int getUseIntSlacks() const {return USE_INTSLACKS;}
00172 
00174   virtual void setCHECK_DUPLICATES(bool value);
00176   inline bool getCHECK_DUPLICATES() const {return CHECK_DUPLICATES;}
00178   inline void setCheckDuplicates(bool value) {setCHECK_DUPLICATES(value);}
00179   inline bool getCheckDuplicates() const {return CHECK_DUPLICATES;}
00180 
00182   virtual void setCLEAN_PROC(CleaningProcedure value);
00184   inline CleaningProcedure getCLEAN_PROC() const {return CLEAN_PROC;}
00186   inline void setCleanProc(CleaningProcedure value) {setCLEAN_PROC(value);}
00187   inline CleaningProcedure getCleaningProcedure() const {return CLEAN_PROC;}
00188 
00190   virtual void setINTEGRAL_SCALE_CONT(bool value);
00192   inline bool getINTEGRAL_SCALE_CONT() const {return INTEGRAL_SCALE_CONT;}
00194   inline void setIntegralScaleCont(bool value) {setINTEGRAL_SCALE_CONT(value);}
00195   inline bool getIntegralScaleCont() const {return INTEGRAL_SCALE_CONT;}
00196 
00198   virtual void setENFORCE_SCALING(bool value);
00200   inline bool getENFORCE_SCALING() const {return ENFORCE_SCALING;}
00202   inline void setEnforceScaling(bool value) {setENFORCE_SCALING(value);}
00203   inline bool getEnforcescaling() const {return ENFORCE_SCALING;}
00204 
00206 
00209 
00210   CglGMIParam(double eps = 1e-12,
00211               double away = 0.005,
00212               double eps_coeff = 1e-11,
00213               double eps_elim = 0,
00214               double eps_relax_abs = 1e-11,
00215               double eps_relax_rel = 1e-13,
00216               double max_dyn = 1e6,
00217               double min_viol = 1e-4,
00218               int max_supp_abs = 1000,
00219               double max_supp_rel = 0.1,
00220               CleaningProcedure clean_proc = CP_CGLLANDP1,
00221               bool use_int_slacks = false,
00222               bool check_duplicates = false,
00223               bool integral_scale_cont = false,
00224               bool enforce_scaling = true);
00225 
00227   CglGMIParam(CglParam &source,
00228               double away = 0.005,
00229               double eps_elim = 1e-12,
00230               double eps_relax_abs = 1e-11,
00231               double eps_relax_rel = 1e-13,
00232               double max_dyn = 1e6,
00233               double min_viol = 1e-4,
00234               double max_supp_rel = 0.1,
00235               CleaningProcedure clean_proc = CP_CGLLANDP1,
00236               bool use_int_slacks = false,
00237               bool check_duplicates = false,
00238               bool integral_scale_cont = false,
00239               bool enforce_scaling = true);
00240   
00242   CglGMIParam(const CglGMIParam &source);
00243 
00245   virtual CglGMIParam* clone() const;
00246 
00248   virtual CglGMIParam& operator=(const CglGMIParam &rhs);
00249 
00251   virtual ~CglGMIParam();
00253 
00254 protected:
00255 
00258 
00261   double AWAY;
00262 
00265   double EPS_ELIM;
00266 
00269   double EPS_RELAX_ABS;
00270 
00274   double EPS_RELAX_REL;
00275 
00278   double MAXDYN;
00279 
00282   double MINVIOL;
00283 
00286   double MAX_SUPPORT_REL;
00287 
00289   CleaningProcedure CLEAN_PROC;
00290 
00292   bool USE_INTSLACKS;
00293 
00295   bool CHECK_DUPLICATES;
00296 
00301   bool INTEGRAL_SCALE_CONT;
00302 
00308   bool ENFORCE_SCALING;
00309 
00311 };
00312 
00313 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 14 Sep 2013 for Cgl by  doxygen 1.6.1