BonBonminSetup.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
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
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
00048
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