Bonmin  1.7
BonBonminSetup.hpp
Go to the documentation of this file.
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