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
00031
00032
00033
00034
00035 class BlisParams : public AlpsParameterSet {
00036 public:
00039 enum boolParams{
00041 useCons,
00043 useHeuristics,
00045 cutDuringRampup,
00046
00047 endOfBoolParams
00048 };
00049
00051 enum intParams{
00053 strongCandSize,
00054
00057
00064 branchStrategy,
00065
00072 heurRound,
00073
00080 cutClique,
00081 cutGomory,
00082 cutFlowCover,
00083 cutKnapsack,
00084 cutMir,
00085 cutOddHole,
00086 cutProbing,
00087 cutTwoMir,
00089 pseudoRelibility,
00091 lookAhead,
00092
00093 endOfIntParams
00094 };
00095
00097 enum dblParams{
00099 integerTol,
00100
00103 cutoffInc,
00104
00107 optimalRelGap,
00108
00111 optimalAbsGap,
00112
00114 pseudoWeight,
00115
00118 cutFactor,
00119
00121 denseConFactor,
00122
00124 scaleConFactor,
00125
00126 endOfDblParams
00127 };
00128
00130 enum strParams{
00131 strDummy,
00132
00133 endOfStrParams
00134 };
00135
00137 enum strArrayParams{
00138 strArrayDummy,
00139
00140 endOfStrArrayParams
00141 };
00142
00143 public:
00149 BlisParams() :
00150 AlpsParameterSet(
00151 static_cast<int>(endOfBoolParams),
00152 static_cast<int>(endOfIntParams),
00153 static_cast<int>(endOfDblParams),
00154 static_cast<int>(endOfStrParams),
00155 static_cast<int>(endOfStrArrayParams)
00156 )
00157 {
00158 createKeywordList();
00159 setDefaultEntries();
00160 }
00165 virtual void createKeywordList();
00167 virtual void setDefaultEntries();
00171 public:
00172
00180
00181
00182
00191
00192 inline bool entry(const boolParams key) const { return bpar_[key]; }
00194 inline int entry(const intParams key) const { return ipar_[key]; }
00196 inline double entry(const dblParams key) const { return dpar_[key]; }
00198 inline const std::string&
00199 entry(const strParams key) const { return spar_[key]; }
00201 inline const std::vector<std::string>&
00202 entry(const strArrayParams key) const { return sapar_[key]; }
00205
00207 void setEntry(const boolParams key, const char * val) {
00208 bpar_[key] = atoi(val) ? true : false; }
00210 void setEntry(const boolParams key, const char val) {
00211 bpar_[key] = val ? true : false; }
00213 void setEntry(const boolParams key, const bool val) {
00214 bpar_[key] = val; }
00216 void setEntry(const intParams key, const char * val) {
00217 ipar_[key] = atoi(val); }
00219 void setEntry(const intParams key, const int val) {
00220 ipar_[key] = val; }
00222 void setEntry(const dblParams key, const char * val) {
00223 dpar_[key] = atof(val); }
00225 void setEntry(const dblParams key, const double val) {
00226 dpar_[key] = val; }
00228 void setEntry(const strParams key, const char * val) {
00229 spar_[key] = val; }
00231 void setEntry(const strArrayParams key, const char *val) {
00232 sapar_[key].push_back(val); }
00233
00234
00235
00240 void pack(AlpsEncoded& buf) {
00241 buf.writeRep(bpar_, endOfBoolParams)
00242 .writeRep(ipar_, endOfIntParams)
00243 .writeRep(dpar_, endOfDblParams);
00244 for (int i = 0; i < endOfStrParams; ++i)
00245 buf.writeRep(spar_[i]);
00246 for (int i = 0; i < endOfStrArrayParams; ++i) {
00247 buf.writeRep(sapar_[i].size());
00248 for (size_t j = 0; j < sapar_[i].size(); ++j)
00249 buf.writeRep(sapar_[i][j]);
00250 }
00251 }
00253 void unpack(AlpsEncoded& buf) {
00254 int dummy;
00255
00256 dummy = static_cast<int>(endOfBoolParams);
00257 buf.readRep(bpar_, dummy, false);
00258 dummy = static_cast<int>(endOfIntParams);
00259 buf.readRep(ipar_, dummy, false);
00260 dummy = static_cast<int>(endOfDblParams);
00261 buf.readRep(dpar_, dummy, false);
00262 for (int i = 0; i < endOfStrParams; ++i)
00263 buf.readRep(spar_[i]);
00264 for (int i = 0; i < endOfStrArrayParams; ++i) {
00265 size_t str_size;
00266 buf.readRep(str_size);
00267 sapar_[i].reserve(str_size);
00268 for (size_t j = 0; j < str_size; ++j){
00269
00270 sapar_[i].push_back(std::string());
00271 buf.readRep(sapar_[i].back());
00272 }
00273 }
00274 }
00277 };
00278
00279 #endif