/home/coin/SVN-release/OS-2.1.1/Couenne/src/branch/CouenneChooseStrong.hpp

Go to the documentation of this file.
00001 /* $Id: CouenneChooseStrong.hpp 245 2009-07-22 15:47:08Z pbelotti $
00002  *
00003  * Name:    CouenneChooseStrong.hpp
00004  * Authors: Andreas Waechter, IBM Corp.
00005  * Purpose: Strong branching object for Couenne
00006  *
00007  * (C) Carnegie-Mellon University, 2006-09.
00008  * This file is licensed under the Common Public License (CPL)
00009  */
00010 
00011 #ifndef COUENNECHOOSESTRONG_HPP
00012 #define COUENNECHOOSESTRONG_HPP
00013 
00014 #include "BonChooseVariable.hpp"
00015 #include "CouenneJournalist.hpp"
00016 
00017 class Bonmin::HotInfo;
00018 class CouenneProblem;
00019 template <class T> class CouenneSolverInterface;
00020 
00021 class CouenneChooseStrong : public Bonmin::BonChooseVariable  {
00022 
00023   public:
00024 
00026     CouenneChooseStrong (Bonmin::BabSetupBase& b, CouenneProblem* problem, JnlstPtr jnlst);
00027 
00029     CouenneChooseStrong (const CouenneChooseStrong &);
00030 
00032     CouenneChooseStrong & operator= (const CouenneChooseStrong& rhs);
00033 
00035     virtual OsiChooseVariable * clone() const;
00036 
00038     virtual ~CouenneChooseStrong ();
00039 
00042     virtual int setupList (OsiBranchingInformation *info, bool initialize);
00043 
00055     virtual int doStrongBranching (OsiSolverInterface * OsiSolver, 
00056                                    OsiBranchingInformation *info,
00057                                    int numberToDo, int returnCriterion);
00058 
00060     virtual bool feasibleSolution (const OsiBranchingInformation * info,
00061                                    const double * solution,
00062                                    int numberObjects,
00063                                    const OsiObject ** objects);
00064 
00066     virtual int chooseVariable (OsiSolverInterface * solver,
00067                                 OsiBranchingInformation *info,
00068                                 bool fixVariables);
00069 
00071     static void registerOptions (Ipopt::SmartPtr <Bonmin::RegisteredOptions> roptions);
00072 
00073   private:
00074 
00076     CouenneChooseStrong ();
00077     
00078   protected:
00079 
00081     int simulateBranch (OsiObject *Object,
00082                         OsiBranchingInformation *info,
00083                         OsiBranchingObject *branch,
00084                         OsiSolverInterface *solver,
00085                         Bonmin::HotInfo * result,
00086                         int direction);
00087 
00089     CouenneProblem *problem_;
00090 
00094     bool pseudoUpdateLP_;
00095 
00105     bool estimateProduct_;
00106 
00108     JnlstPtr jnlst_;
00109 
00111     double branchtime_;
00112   };
00113 
00114 #endif

Generated on Mon May 3 03:05:18 2010 by  doxygen 1.4.7