00001 // (C) Copyright International Business Machines Corporation 2007 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // Authors : 00006 // Pierre Bonami, International Business Machines Corporation 00007 // 00008 // Date : 04/18/2007 00009 #ifndef BonCouenneSetup_H 00010 #define BonCouenneSetup_H 00011 #include "BonBabSetupBase.hpp" 00012 #include "CbcFeasibilityBase.hpp" 00013 00014 struct ASL; 00015 00016 class CouenneCutGenerator; 00017 00018 00019 namespace Bonmin{ 00020 00021 class SmartAsl : public Ipopt::ReferencedObject{ 00022 public: 00023 ASL * asl; 00024 SmartAsl(): 00025 Ipopt::ReferencedObject(), 00026 asl(NULL) 00027 {} 00028 virtual ~SmartAsl(); 00029 }; 00030 00031 class CouenneSetup : public BabSetupBase{ 00032 public: 00034 CouenneSetup(): 00035 BabSetupBase(), 00036 aslfg_(NULL), 00037 CouennePtr_ (NULL), 00038 displayStats_ (false) {} 00039 00041 CouenneSetup(const CouenneSetup& other): 00042 BabSetupBase(other), 00043 aslfg_(NULL), 00044 displayStats_ (other.displayStats_) {} 00045 00047 virtual BabSetupBase * clone() const{ 00048 return new CouenneSetup(*this); 00049 } 00050 00052 virtual ~CouenneSetup(); 00053 00055 void InitializeCouenne(char **& argv); 00056 00058 virtual void registerOptions(); 00060 static void registerAllOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions); 00061 00063 virtual void readOptionsFile(){ 00064 if (readOptions_) return; 00065 BabSetupBase::readOptionsFile("couenne.opt"); 00066 } 00067 00069 CouenneCutGenerator *couennePtr () const 00070 {return CouennePtr_;} 00071 00073 bool displayStats () 00074 {return displayStats_;} 00075 00077 void addMilpCutGenerators (); 00078 00080 inline void setDoubleParameter (const DoubleParameter &p, const double val) 00081 {doubleParam_ [p] = val;} 00082 00084 inline double getDoubleParameter (const DoubleParameter &p) const 00085 {return doubleParam_ [p];} 00086 00087 private: 00088 SmartPtr<SmartAsl> aslfg_; 00089 00094 CouenneCutGenerator *CouennePtr_; 00095 00097 bool displayStats_; 00098 }; 00099 } 00100 00101 #endif