00001 /* $Id: OSBlockBearcatSolver.h 3038 2009-11-07 11:43:44Z kmartin $ */ 00018 #ifndef OSDIPBLOCKBEARCATSOLVER_H 00019 #define OSDIPBLOCKBEARCATSOLVER_H 00020 00021 // --------------------------------------------------------------------- // 00022 #include "OSDipBlockSolver.h" 00023 #include "OSDataStructures.h" 00024 #include "OSDefaultSolver.h" 00025 #include "OSrLReader.h" 00026 00027 #include "OSDipBlockSolverFactory.h" 00028 00029 // --------------------------------------------------------------------- // 00037 // --------------------------------------------------------------------- // 00038 class OSDipBlockBearcatSolver : public OSDipBlockSolver { 00039 public: 00040 00041 00042 OSInstance *m_osinstance; 00043 OSOption *m_osoption; 00044 OSResult *m_osresult; 00045 00046 //variables for the dynamic programming solution 00047 int m_numberOfVar; 00048 int m_numHubs; 00049 int m_numNodes; 00050 int m_totalDemand; 00051 int m_minDemand; 00052 int* m_demand; 00053 00054 double** m_u; 00055 double** m_v; 00056 int** m_px; 00057 int** m_tx; 00058 double** m_g; 00059 00060 int* m_varIdx; 00061 //end variables for the dynamic programming solution 00062 00063 std::vector<IndexValuePair*> m_primalVals; 00064 00065 00066 double qrouteCost(const int& k, const int& l, double* c, int* kountVar) ; 00067 00068 00080 virtual void solve(double *cost, std::vector<IndexValuePair*> *solIndexValPair, double *optVal) ; 00081 00082 00093 virtual void solve(double *cost, std::string *osrl) ; 00094 00099 OSDipBlockBearcatSolver(); 00100 00101 00106 OSDipBlockBearcatSolver( OSInstance *osinstance, OSOption *osoption); 00107 00112 ~OSDipBlockBearcatSolver(); 00113 00114 class Factory; 00115 class Factory : public OSDipBlockSolverFactory{ 00116 00117 public: 00118 00119 Factory(){ 00120 00121 } 00122 00123 ~Factory(){ 00124 00125 } 00126 00127 OSDipBlockSolver* create() { return new OSDipBlockBearcatSolver( osinstance, osoption); }; 00128 00129 };// end class OSDipBlockSolverFactory 00130 00131 00132 // 00133 };//end class OSDipBlockBearcatSolver 00134 00135 00136 00137 00138 #endif