/home/coin/SVN-release/OS-2.4.0/Bonmin/experimental/Separable/BonHeuristicInnerApproximation.hpp

Go to the documentation of this file.
00001 // (C) Copyright CNRS and others 2010
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // Authors :
00006 // Pierre Bonami, Université de la Méditérannée
00007 // Hassan Hijazi, Orange Labs
00008 //
00009 // Date : 05/22/2010
00010 
00011 #ifndef BonHeuristicInnerApproximation_HPP
00012 #define BonHeuristicInnerApproximation_HPP
00013 #include "BonOsiTMINLPInterface.hpp"
00014 #include "BonBonminSetup.hpp"
00015 #include "CbcHeuristic.hpp"
00016 #include "CbcStrategy.hpp"
00017 
00018 namespace Bonmin {
00019 class SubMipSolver;
00020 class HeuristicInnerApproximation: public CbcHeuristic {
00021 public:
00022 
00024         HeuristicInnerApproximation(BonminSetup * setup);
00025 
00027         HeuristicInnerApproximation(const HeuristicInnerApproximation &copy);
00028 
00030         ~HeuristicInnerApproximation();
00031 
00033         HeuristicInnerApproximation & operator=(
00034                         const HeuristicInnerApproximation & rhs);
00035 
00037         virtual CbcHeuristic * clone() const {
00038                 return new HeuristicInnerApproximation(*this);
00039         }
00040 
00042         void Initialize(BonminSetup * setup);
00043 
00045         virtual void resetModel(CbcModel * model) {
00046                 setModel(model);
00047         }
00048 
00050         virtual int solution(double &solutionValue, double *betterSolution);
00051 
00053         static void registerOptions(
00054                         Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions);
00055 
00056 protected:
00058         BonminSetup * setup_;
00059 
00060 private:
00062         int howOften_;
00063 
00065         SubMipSolver * mip_;
00066 
00068         int nbAp_;
00069 
00070         void extractInnerApproximation(OsiTMINLPInterface & nlp, OsiSolverInterface &si,
00071                                        const double * x, bool getObj);
00072 
00073         bool getMyInnerApproximation(OsiTMINLPInterface &si, OsiCuts &cs, int ind,
00074                 const double * x, const double * x2);
00075 
00076 
00077 };
00078 }
00079 
00080 #endif

Generated on Thu Sep 22 03:05:53 2011 by  doxygen 1.4.7