Bonmin
1.7
|
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/13/2007 00009 #ifndef BonminSetup_H 00010 #define BonminSetup_H 00011 #include "BonBabSetupBase.hpp" 00012 namespace Bonmin 00013 { 00015 enum Algorithm{ 00016 Dummy=-1, 00017 B_BB=0, 00018 B_OA=1, 00019 B_QG=2, 00020 B_Hyb=3, 00021 B_Ecp=4, 00022 B_IFP=5 00023 }; 00024 /* Bonmin algorithm setup. */ 00025 class BonminSetup : public BabSetupBase 00026 { 00027 public: 00029 BonminSetup(const CoinMessageHandler * handler = NULL); 00031 BonminSetup(const BonminSetup & other); 00032 00034 BonminSetup(const BonminSetup &setup, 00035 OsiTMINLPInterface &nlp); 00036 00038 BonminSetup(const BonminSetup &setup, 00039 OsiTMINLPInterface &nlp, 00040 const std::string & prefix); 00042 virtual BabSetupBase * clone() const 00043 { 00044 return new BonminSetup(*this); 00045 } 00047 // virtual BabSetupBase *clone(OsiTMINLPInterface&nlp)const{ 00048 // return new BonminSetup(*this, nlp); 00049 // } 00051 BonminSetup *clone(OsiTMINLPInterface&nlp)const{ 00052 return new BonminSetup(*this, nlp); 00053 } 00055 BonminSetup *clone(OsiTMINLPInterface &nlp, const std::string & prefix)const{ 00056 return new BonminSetup(*this, nlp, prefix); 00057 } 00058 virtual ~BonminSetup() 00059 {} 00063 virtual void registerOptions(); 00065 virtual void setBabDefaultOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions) 00066 {} 00069 static void registerAllOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions); 00071 void initialize(Ipopt::SmartPtr<TMINLP> tminlp, bool createContinuousSolver = true); 00073 void initialize(const OsiTMINLPInterface& nlpSi, bool createContinuousSolver = true); 00075 Bonmin::Algorithm getAlgorithm(); 00076 00077 void addCutGenerator(CuttingMethod & cg){ 00078 BabSetupBase::addCutGenerator(cg); 00079 } 00080 protected: 00082 static void registerMilpCutGenerators(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions); 00084 void addMilpCutGenerators(); 00086 void initializeBBB(); 00088 void initializeBHyb(bool createContinuousSolver = false); 00089 private: 00090 Algorithm algo_; 00091 }; 00092 } 00094 #endif 00095