00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef CglRedSplit2Param_H
00011 #define CglRedSplit2Param_H
00012
00013 #include "CglParam.hpp"
00014 #include <vector>
00015
00018
00087
00088 class CglRedSplit2Param : public CglParam {
00089
00090 public:
00094 enum RowSelectionStrategy{
00095
00096 RS1,
00097
00098
00099 RS2,
00100
00101
00102 RS3,
00103
00104 RS4,
00105
00106 RS5,
00107
00108 RS6,
00109
00110
00111 RS7,
00112
00113
00114 RS8,
00115
00116 RS_ALL,
00117
00118 RS_BEST
00119 };
00120
00122 enum ColumnSelectionStrategy{
00123
00124 CS1, CS2, CS3,
00125
00126 CS4, CS5, CS6, CS7, CS8,
00127
00128 CS9, CS10,
00129
00130 CS11, CS12,
00131
00132 CS13, CS14,
00133
00134 CS15, CS16, CS17,
00135
00136 CS18, CS19, CS20, CS21,
00137
00138 CS_ALL,
00139
00140
00141 CS_BEST,
00142
00143
00144 CS_ALLCONT,
00145
00146
00147
00148
00149 CS_LAP_NONBASICS
00150 };
00151
00154 enum ColumnScalingStrategy{
00155
00156 SC_NONE,
00157
00158
00159 SC_LINEAR,
00160
00161 SC_LINEAR_BOUNDED,
00162
00163 SC_LOG_BOUNDED,
00164
00165 SC_UNIFORM,
00166
00167 SC_UNIFORM_NZ
00168 };
00169
00176 virtual void setAway(double value);
00178 inline double getAway() const {return away_;}
00179
00183 void setEPS_ELIM(double value);
00185 double getEPS_ELIM() const {return EPS_ELIM;}
00186
00188 virtual void setEPS_RELAX_ABS(double eps_ra);
00190 inline double getEPS_RELAX_ABS() const {return EPS_RELAX_ABS;}
00191
00193 virtual void setEPS_RELAX_REL(double eps_rr);
00195 inline double getEPS_RELAX_REL() const {return EPS_RELAX_REL;}
00196
00197
00198
00199 virtual void setMAXDYN(double value);
00201 inline double getMAXDYN() const {return MAXDYN;}
00202
00205 virtual void setMINVIOL(double value);
00207 inline double getMINVIOL() const {return MINVIOL;}
00208
00211 inline void setMAX_SUPP_ABS(int value) {setMAX_SUPPORT(value);}
00212 inline int getMAX_SUPP_ABS() const {return MAX_SUPPORT;}
00213
00216 inline void setMAX_SUPP_REL(double value);
00217 inline double getMAX_SUPP_REL() const {return MAX_SUPP_REL;}
00218
00220 virtual void setUSE_INTSLACKS(int value);
00222 inline int getUSE_INTSLACKS() const {return USE_INTSLACKS;}
00223
00226 virtual void setNormIsZero(double value);
00228 inline double getNormIsZero() const {return normIsZero_;}
00229
00231 virtual void setMinNormReduction(double value);
00233 inline double getMinNormReduction() const {return minNormReduction_;}
00234
00236 virtual void setMaxSumMultipliers(int value);
00238 inline int getMaxSumMultipliers() const {return maxSumMultipliers_;}
00239
00241 virtual void setNormalization(double value);
00243 inline double getNormalization() const {return normalization_;}
00244
00248 virtual void addNumRowsReduction(int value);
00250 inline std::vector<int> getNumRowsReduction() const {return numRowsReduction_;}
00252 inline void resetNumRowsReduction() {numRowsReduction_.clear();}
00253
00255 virtual void addColumnSelectionStrategy(ColumnSelectionStrategy value);
00257 inline std::vector<ColumnSelectionStrategy> getColumnSelectionStrategy() const {return columnSelectionStrategy_;}
00259 inline void resetColumnSelectionStrategy(){columnSelectionStrategy_.clear();}
00260
00263 virtual void addRowSelectionStrategy(RowSelectionStrategy value);
00265 inline std::vector<RowSelectionStrategy> getRowSelectionStrategy() const {return rowSelectionStrategy_;};
00267 inline void resetRowSelectionStrategy() {rowSelectionStrategy_.clear();}
00268
00273 virtual void addNumRowsReductionLAP(int value);
00275 inline std::vector<int> getNumRowsReductionLAP() const {return numRowsReductionLAP_;}
00277 inline void resetNumRowsReductionLAP() {numRowsReductionLAP_.clear();}
00278
00280 virtual void addColumnSelectionStrategyLAP(ColumnSelectionStrategy value);
00282 inline std::vector<ColumnSelectionStrategy> getColumnSelectionStrategyLAP() const {return columnSelectionStrategyLAP_;}
00284 inline void resetColumnSelectionStrategyLAP(){columnSelectionStrategyLAP_.clear();}
00285
00288 virtual void addRowSelectionStrategyLAP(RowSelectionStrategy value);
00290 inline std::vector<RowSelectionStrategy> getRowSelectionStrategyLAP() const {return rowSelectionStrategyLAP_;};
00292 inline void resetRowSelectionStrategyLAP() {rowSelectionStrategyLAP_.clear();}
00293
00296 virtual void setColumnScalingStrategyLAP(ColumnScalingStrategy value);
00298 inline ColumnScalingStrategy getColumnScalingStrategyLAP() const {return columnScalingStrategyLAP_; };
00299
00301 virtual void setColumnScalingBoundLAP(double value);
00303 inline double getColumnScalingBoundLAP() const {return columnScalingBoundLAP_;};
00304
00306 virtual void setTimeLimit(double value);
00308 inline double getTimeLimit() const {return timeLimit_;}
00309
00311 virtual void setMaxNumCuts(int value);
00313 inline int getMaxNumCuts() const {return maxNumCuts_;}
00314
00316 virtual void setMaxNumComputedCuts(int value);
00318 inline int getMaxNumComputedCuts() const {return maxNumComputedCuts_;}
00319
00322 virtual void setMaxNonzeroesTab(int value);
00324 inline int getMaxNonzeroesTab() const {return maxNonzeroesTab_;}
00325
00330 virtual void setSkipGomory(int value);
00332 inline int getSkipGomory() const {return skipGomory_;}
00333
00335
00338
00339
00340
00341 CglRedSplit2Param(bool use_default_strategies = true,
00342 double eps = 1e-12,
00343 double eps_coeff = 1e-11,
00344 double eps_elim = 0.0,
00345 double eps_relax_abs = 1e-11,
00346 double eps_relax_rel = 1e-13,
00347 double max_dyn = 1e6,
00348 double min_viol = 1e-3,
00349 int max_supp_abs = 1000,
00350 double max_supp_rel = 0.1,
00351 int use_int_slacks = 0,
00352 double norm_zero = 1e-5,
00353 double minNormReduction = 0.1,
00354 int maxSumMultipliers = 10,
00355 double normalization = 0.0001,
00356 double away = 0.005,
00357 double timeLimit = 60,
00358 int maxNumCuts = 10000,
00359 int maxNumComputedCuts = 10000,
00360 int maxNonzeroesTab = 1000,
00361 double columnScalingBoundLAP = 5.0,
00362 int skipGomory = 1);
00363
00368 CglRedSplit2Param(const CglParam &source,
00369 bool use_default_strategies = true,
00370 double eps_elim = 0.0,
00371 double eps_relax_abs = 1e-11,
00372 double eps_relax_rel = 1e-13,
00373 double max_dyn = 1e6,
00374 double min_viol = 1e-3,
00375 double max_supp_rel = 0.1,
00376 int use_int_slacks = 0,
00377 double norm_zero = 1e-5,
00378 double minNormReduction = 0.1,
00379 int maxSumMultipliers = 10,
00380 double normalization = 0.0001,
00381 double away = 0.005,
00382 double timeLimit = 60,
00383 int maxNumCuts = 10000,
00384 int maxNumComputedCuts = 10000,
00385 int maxNonzeroesTab = 1000,
00386 double columnScalingBoundLAP = 5.0,
00387 int skipGomory = 1);
00388
00390 CglRedSplit2Param(const CglRedSplit2Param &source);
00391
00393 virtual CglRedSplit2Param* clone() const;
00394
00396 virtual CglRedSplit2Param& operator=(const CglRedSplit2Param &rhs);
00397
00399 virtual ~CglRedSplit2Param();
00401
00402 protected:
00403
00406
00409 double EPS_ELIM;
00410
00413 double EPS_RELAX_ABS;
00414
00418 double EPS_RELAX_REL;
00419
00420
00421
00422 double MAXDYN;
00423
00426 double MINVIOL;
00427
00429 double MAX_SUPP_REL;
00430
00432 int USE_INTSLACKS;
00433
00436 double normIsZero_;
00437
00439 double minNormReduction_;
00440
00442 int maxSumMultipliers_;
00443
00446 double normalization_;
00447
00450 double away_;
00451
00453 std::vector<int> numRowsReduction_;
00454
00456 std::vector<ColumnSelectionStrategy> columnSelectionStrategy_;
00457
00459 std::vector<RowSelectionStrategy> rowSelectionStrategy_;
00460
00462 std::vector<int> numRowsReductionLAP_;
00463
00465 std::vector<ColumnSelectionStrategy> columnSelectionStrategyLAP_;
00466
00468 std::vector<RowSelectionStrategy> rowSelectionStrategyLAP_;
00469
00472 ColumnScalingStrategy columnScalingStrategyLAP_;
00473
00475 double columnScalingBoundLAP_;
00476
00478 double timeLimit_;
00479
00481 int maxNumCuts_;
00482
00484 int maxNumComputedCuts_;
00485
00487 int maxNonzeroesTab_;
00488
00490 int skipGomory_;
00491
00493 };
00494
00495 #endif