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 }; 00023 /* Bonmin algorithm setup. */ 00024 class BonminSetup : public BabSetupBase 00025 { 00026 public: 00028 BonminSetup(); 00030 BonminSetup(const BonminSetup & other); 00031 00033 BonminSetup(const BonminSetup &setup, 00034 OsiTMINLPInterface &nlp); 00035 00037 virtual BabSetupBase * clone() const 00038 { 00039 return new BonminSetup(*this); 00040 } 00042 virtual BabSetupBase *clone(OsiTMINLPInterface&nlp)const{ 00043 return new BonminSetup(*this, nlp); 00044 } 00045 virtual ~BonminSetup() 00046 {} 00050 virtual void registerOptions(); 00052 virtual void setBabDefaultOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions) 00053 {} 00056 static void registerAllOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions); 00058 void initialize(Ipopt::SmartPtr<TMINLP> tminlp, bool createContinuousSolver = true); 00060 void initialize(const OsiTMINLPInterface& nlpSi, bool createContinuousSolver = true); 00062 Bonmin::Algorithm getAlgorithm(); 00063 protected: 00065 static void registerMilpCutGenerators(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions); 00067 void addMilpCutGenerators(); 00069 void initializeBBB(); 00071 void initializeBHyb(bool createContinuousSolver = false); 00072 private: 00073 Algorithm algo_; 00074 }; 00075 } 00077 #endif 00078