OBOE  0.1
QpGenerator.h
Go to the documentation of this file.
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