/home/coin/SVN-release/Bcps-0.93.1/Bcps/examples/Blis/BlisParams.h

Go to the documentation of this file.
00001 /*===========================================================================*
00002  * This file is part of the Bcps Linear Solver (BLIS).                       *
00003  *                                                                           *
00004  * BLIS is distributed under the Eclipse Public License as part of the       *
00005  * COIN-OR repository (http://www.coin-or.org).                              *
00006  *                                                                           *
00007  * Authors:                                                                  *
00008  *                                                                           *
00009  *          Yan Xu, Lehigh University                                        *
00010  *          Ted Ralphs, Lehigh University                                    *
00011  *                                                                           *
00012  * Conceptual Design:                                                        *
00013  *                                                                           *
00014  *          Yan Xu, Lehigh University                                        *
00015  *          Ted Ralphs, Lehigh University                                    *
00016  *          Laszlo Ladanyi, IBM T.J. Watson Research Center                  *
00017  *          Matthew Saltzman, Clemson University                             *
00018  *                                                                           * 
00019  *                                                                           *
00020  * Copyright (C) 2001-2011, Lehigh University, Yan Xu, and Ted Ralphs.       *
00021  * All Rights Reserved.                                                      *
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 //** Parameters used in Blis. */
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     // No need to allocate the arrays, they are of fixed length
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         //      sapar_[i].unchecked_push_back(std::string());
00270         sapar_[i].push_back(std::string());
00271         buf.readRep(sapar_[i].back());
00272       }
00273     }
00274   }
00277 };
00278 
00279 #endif

Generated on Mon Nov 7 03:03:15 2011 by  doxygen 1.4.7