OBOE
0.1
|
00001 // Copyright (c) 2004-2007 University of Geneva, HEC, Logilab 00002 // 00003 // OBOE is published under the Common Public License. 00004 // 00005 // Authors : 00006 // Nidhi Sawhney <nsawhney@yahoo.com> 00007 // The OBOE team 00008 // 00009 00010 #ifndef QPGENERATOR_H 00011 #define QPGENERATOR_H 00012 00013 #include <iostream> 00014 #include "AccpmGenMatrix.h" 00015 #include "Timer.h" 00016 #include "ExitCode.h" 00017 00018 #ifdef SERIALIZATION 00019 #include <boost/archive/text_iarchive.hpp> 00020 #include <boost/archive/text_oarchive.hpp> 00021 #include <boost/serialization/base_object.hpp> 00022 #endif 00023 00034 namespace Accpm { 00035 00036 class Parameters; 00037 class Method; 00038 class Manager; 00039 class AccpmVector; 00040 class Oracle; 00055 class QpGenerator { 00056 00057 #ifdef SERIALIZATION 00058 friend class boost::serialization::access; 00059 template<class Archive> 00060 void serialize(Archive &ar, const unsigned int file_version); 00061 #endif 00062 00063 protected: 00064 Parameters *_param; 00065 Manager *_manager; 00066 Method *_method; 00067 Timer _timer; 00068 double _oracleTime; 00069 00070 public: 00071 QpGenerator(); 00072 virtual ~QpGenerator(); 00073 virtual void init(Parameters *param, Oracle *oracle = 0); 00098 virtual int run(); 00102 virtual void terminate(); 00107 virtual void output(std::ostream &os); 00108 virtual void printHeader(std::ostream &s = std::cout) const; 00109 virtual void printIteration(const AccpmVector &val, const AccpmVector &val2, const AccpmGenMatrix &subGrad, 00110 const AccpmGenMatrix &subProblemIndex, std::ostream &os = std::cout) const; 00111 00115 virtual const AccpmVector *getQueryPoint() const; 00116 00122 virtual double getOptimalObj() const; 00123 00127 virtual double getObjUB() const; 00128 00132 virtual double getObjLB() const; 00133 00138 virtual double getRelativeGap() const; 00139 00140 virtual int getNumCuts() const; 00141 00155 virtual int getActiveCuts(const AccpmGenMatrix *&cuts) const; 00159 virtual int getActiveCuts(AccpmGenMatrix &cuts) const; 00160 00170 virtual const AccpmVector& getRhs() const; 00175 virtual const AccpmVector *getCurrentX() const; 00176 00180 virtual const AccpmVector& getCurrentZ() const; 00181 00194 virtual const AccpmVector& getCutType() const; 00195 00201 virtual ExitCode getExitCode() const; 00202 00216 virtual void save(const char *fileName) const; 00217 00228 virtual void load(const char *fileName); 00229 }; 00230 } 00231 00232 #endif