00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef BlisParams_h
00025 #define BlisParams_h
00026
00027 #include "AlpsKnowledge.h"
00028 #include "AlpsParameterBase.h"
00029
00030 #include "Blis.h"
00031
00032
00033
00034
00035 class BlisParams : public AlpsParameterSet {
00036 public:
00039 enum chrParams{
00042 cutRampUp,
00044 presolve,
00047 shareConstraints,
00050 shareVariables,
00053 sharePseudocostRampUp,
00056 sharePseudocostSearch,
00057
00058 endOfChrParams
00059 };
00060
00062 enum intParams{
00063
00070 branchStrategy,
00071 branchStrategyRampUp,
00072
00079 cutStrategy,
00080 cutGenerationFrequency,
00081
00082 cutPass,
00083 quickCutPass,
00085 cutCliqueStrategy,
00086 cutGomoryStrategy,
00087 cutFlowCoverStrategy,
00088 cutKnapsackStrategy,
00089 cutMirStrategy,
00090 cutOddHoleStrategy,
00091 cutProbingStrategy,
00092 cutTwoMirStrategy,
00093 cutCliqueFreq,
00094 cutGomoryFreq,
00095 cutFlowCoverFreq,
00096 cutKnapsackFreq,
00097 cutMirFreq,
00098 cutOddHoleFreq,
00099 cutProbingFreq,
00100 cutTwoMirFreq,
00101
00103 difference,
00104
00111 heurStrategy,
00112 heurCallFrequency,
00113 heurRoundStrategy,
00114 heurRoundFreq,
00115
00117 lookAhead,
00119 pseudoRelibility,
00120
00122 sharePcostDepth,
00124 sharePcostFrequency,
00126 strongCandSize,
00128 endOfIntParams
00129 };
00130
00132 enum dblParams{
00135 cutFactor,
00136
00138 cutoff,
00141 cutoffInc,
00142
00144 denseConFactor,
00145
00147 integerTol,
00148
00150 objSense,
00151
00154 optimalRelGap,
00155
00158 optimalAbsGap,
00159
00161 pseudoWeight,
00162
00164 scaleConFactor,
00165
00167 tailOff,
00169 endOfDblParams
00170 };
00171
00173 enum strParams{
00174 strDummy,
00175
00176 endOfStrParams
00177 };
00178
00180 enum strArrayParams{
00181 strArrayDummy,
00183 endOfStrArrayParams
00184 };
00185
00186 public:
00192 BlisParams() :
00193 AlpsParameterSet(
00194 static_cast<int>(endOfChrParams),
00195 static_cast<int>(endOfIntParams),
00196 static_cast<int>(endOfDblParams),
00197 static_cast<int>(endOfStrParams),
00198 static_cast<int>(endOfStrArrayParams)
00199 )
00200 {
00201 createKeywordList();
00202 setDefaultEntries();
00203 }
00208 virtual void createKeywordList();
00210 virtual void setDefaultEntries();
00214 public:
00215
00223
00224
00225
00234
00235 inline bool entry(const chrParams key) const { return bpar_[key]; }
00237 inline int entry(const intParams key) const { return ipar_[key]; }
00239 inline double entry(const dblParams key) const { return dpar_[key]; }
00241 inline const std::string&
00242 entry(const strParams key) const { return spar_[key]; }
00244 inline const std::vector<std::string>&
00245 entry(const strArrayParams key) const { return sapar_[key]; }
00248
00250 void setEntry(const chrParams key, const char * val) {
00251 bpar_[key] = atoi(val) ? true : false; }
00253 void setEntry(const chrParams key, const char val) {
00254 bpar_[key] = val ? true : false; }
00256 void setEntry(const chrParams key, const bool val) {
00257 bpar_[key] = val; }
00259 void setEntry(const intParams key, const char * val) {
00260 ipar_[key] = atoi(val); }
00262 void setEntry(const intParams key, const int val) {
00263 ipar_[key] = val; }
00265 void setEntry(const dblParams key, const char * val) {
00266 dpar_[key] = atof(val); }
00268 void setEntry(const dblParams key, const double val) {
00269 dpar_[key] = val; }
00271 void setEntry(const strParams key, const char * val) {
00272 spar_[key] = val; }
00274 void setEntry(const strArrayParams key, const char *val) {
00275 sapar_[key].push_back(val); }
00276
00277
00278
00283 void pack(AlpsEncoded& buf) {
00284 buf.writeRep(bpar_, endOfChrParams)
00285 .writeRep(ipar_, endOfIntParams)
00286 .writeRep(dpar_, endOfDblParams);
00287 for (int i = 0; i < endOfStrParams; ++i)
00288 buf.writeRep(spar_[i]);
00289 for (int i = 0; i < endOfStrArrayParams; ++i) {
00290 buf.writeRep(sapar_[i].size());
00291 for (size_t j = 0; j < sapar_[i].size(); ++j)
00292 buf.writeRep(sapar_[i][j]);
00293 }
00294 }
00296 void unpack(AlpsEncoded& buf) {
00297 int dummy;
00298
00299 dummy = static_cast<int>(endOfChrParams);
00300 buf.readRep(bpar_, dummy, false);
00301 dummy = static_cast<int>(endOfIntParams);
00302 buf.readRep(ipar_, dummy, false);
00303 dummy = static_cast<int>(endOfDblParams);
00304 buf.readRep(dpar_, dummy, false);
00305 for (int i = 0; i < endOfStrParams; ++i)
00306 buf.readRep(spar_[i]);
00307 for (int i = 0; i < endOfStrArrayParams; ++i) {
00308 size_t str_size;
00309 buf.readRep(str_size);
00310 sapar_[i].reserve(str_size);
00311 for (size_t j = 0; j < str_size; ++j){
00312
00313 sapar_[i].push_back(std::string());
00314 buf.readRep(sapar_[i].back());
00315 }
00316 }
00317 }
00320 };
00321
00322 #endif