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); 00032 virtual BabSetupBase * clone() const 00033 { 00034 return new BonminSetup(*this); 00035 } 00036 virtual ~BonminSetup() 00037 {} 00041 virtual void registerOptions(); 00043 virtual void setBabDefaultOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions) 00044 {} 00047 static void registerAllOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions); 00049 void initialize(Ipopt::SmartPtr<TMINLP> tminlp, bool createContinuousSolver = true); 00051 void initialize(const OsiTMINLPInterface& nlpSi, bool createContinuousSolver = true); 00053 Bonmin::Algorithm getAlgorithm(); 00054 protected: 00056 static void registerMilpCutGenerators(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions); 00058 void addMilpCutGenerators(); 00060 void initializeBBB(); 00062 void initializeBHyb(bool createContinuousSolver = false); 00063 private: 00064 Algorithm algo_; 00065 }; 00066 } 00068 #endif 00069