Bonmin
1.7
|
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 ©); 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