/home/coin/SVN-release/CoinAll-1.1.0/Osi/src/OsiAuxInfo.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2006, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 #ifndef OsiAuxInfo_H
00004 #define OsiAuxInfo_H
00005 
00006 class OsiSolverInterface;
00007 
00008 //#############################################################################
00019 class OsiAuxInfo {
00020 public:
00021   // Default Constructor 
00022   OsiAuxInfo (void * appData = NULL);
00023 
00024   // Copy Constructor 
00025   OsiAuxInfo (const OsiAuxInfo & rhs);
00026   // Destructor
00027   virtual ~OsiAuxInfo();
00028   
00030   virtual OsiAuxInfo * clone() const;
00032   OsiAuxInfo & operator=(const OsiAuxInfo& rhs);
00033   
00035   inline void * getApplicationData() const
00036   { return appData_;}
00037 protected:
00039     void * appData_;
00040 };
00041 //#############################################################################
00047 class OsiBabSolver : public OsiAuxInfo {
00048 public:
00049   // Default Constructor 
00050   OsiBabSolver (int solverType=0);
00051 
00052   // Copy Constructor 
00053   OsiBabSolver (const OsiBabSolver & rhs);
00054   // Destructor
00055   virtual ~OsiBabSolver();
00056   
00058   virtual OsiAuxInfo * clone() const;
00060   OsiBabSolver & operator=(const OsiBabSolver& rhs);
00061   
00063   inline void setSolver(const OsiSolverInterface * solver)
00064   { solver_ = solver;}
00066   inline void setSolver(const OsiSolverInterface & solver)
00067   { solver_ = &solver;}
00068 
00074   int solution(double & objectiveValue,
00075                        double * newSolution, int numberColumns);
00079   void setSolution(const double * solution, int numberColumns, double objectiveValue);
00080 
00086   bool hasSolution(double & solutionValue, double * solution);
00087 
00100   inline void setSolverType(int value)
00101   { solverType_=value;}
00114   inline int solverType() const
00115   { return solverType_;}
00118   inline bool solutionAddsCuts() const
00119   { return solverType_==3;}
00121   inline bool alwaysTryCutsAtRootNode() const
00122   { return solverType_==4;}
00125   inline bool solverAccurate() const
00126   { return solverType_==0||solverType_==2||solverType_==4;}
00128   inline bool reducedCostsAccurate() const
00129   { return solverType_==0||solverType_==4;}
00131   double mipBound() const;
00133   bool mipFeasible() const;
00135   inline void setMipBound(double value)
00136   { mipBound_ = value;}
00138   inline double bestObjectiveValue() const
00139   { return bestObjectiveValue_;}
00141   inline bool tryCuts() const
00142   { return solverType_!=2;}
00144   inline bool warmStart() const
00145   { return solverType_!=2;}
00150   inline int extraCharacteristics() const
00151   { return extraCharacteristics_;}
00156   inline void setExtraCharacteristics(int value)
00157   { extraCharacteristics_=value;}
00159   inline const double * beforeLower() const
00160   { return beforeLower_;}
00162   inline void setBeforeLower(const double * array)
00163   { beforeLower_ = array;}
00165   inline const double * beforeUpper() const
00166   { return beforeUpper_;}
00168   inline void setBeforeUpper(const double * array)
00169   { beforeUpper_ = array;}
00170 protected:
00172   double bestObjectiveValue_;
00174   double mipBound_;
00176   const OsiSolverInterface * solver_;
00178   double * bestSolution_;
00180   const double * beforeLower_;
00182   const double * beforeUpper_;
00194   int solverType_;
00196   int sizeSolution_;
00201   int extraCharacteristics_;
00202 };
00203 
00204 #endif

Generated on Sun Nov 14 14:06:39 2010 for Coin-All by  doxygen 1.4.7