Bonmin  1.7
BonMilpRounding.hpp
Go to the documentation of this file.
00001 // Copyright (C) 2010, International Business Machines Corporation and others. 
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // Authors :
00006 // Pierre Bonami CNRS
00007 //
00008 // Date : May, 26 2010
00009 
00010 #ifndef BonMilpRounding_HPP
00011 #define BonMilpRounding_HPP
00012 #include "BonOsiTMINLPInterface.hpp"
00013 #include "BonBonminSetup.hpp"
00014 #include "CbcHeuristic.hpp"
00015 #include "CbcStrategy.hpp"
00016 #include "OsiCuts.hpp"
00017 
00018 namespace Bonmin
00019 {
00020   class SubMipSolver;
00021   class MilpRounding : public CbcHeuristic
00022   {
00023   public:
00024 
00026     MilpRounding(BonminSetup * setup);
00027 
00029     MilpRounding(const MilpRounding &copy);
00030 
00032     ~MilpRounding();
00033 
00035     MilpRounding & operator=(const MilpRounding & rhs);
00036 
00038     virtual CbcHeuristic * clone() const{
00039       return new MilpRounding(*this);
00040     }
00041 
00043     void Initialize(BonminSetup * setup);
00044 
00046     virtual void resetModel(CbcModel * model){
00047       setModel(model);
00048     }
00049 
00051     virtual void setSetup(BonminSetup * setup){
00052       setup_ = setup;
00053       //      Initialize(setup_->options());
00054     }
00055 
00057     virtual int solution(double &solutionValue, double *betterSolution);
00058 
00059 
00060     static void registerOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions);
00061   protected:
00063     BonminSetup * setup_; 
00064 
00065   private:
00067     int howOften_;
00069     SubMipSolver * mip_;
00070 
00071     OsiCuts noGoods;
00072   };
00073 }
00074 #endif