00001 /* $Id: CouenneChooseVariable.hpp 792 2012-01-24 17:24:15Z pbelotti $ 00002 * 00003 * Name: CouenneChooseVariable.hpp 00004 * Authors: Pierre Bonami, IBM Corp. 00005 * Pietro Belotti, Carnegie Mellon University 00006 * Purpose: Branching object for choosing branching auxiliary variable 00007 * 00008 * (C) Carnegie-Mellon University, 2006. 00009 * This file is licensed under the Eclipse Public License (EPL) 00010 */ 00011 00012 #ifndef COUENNECHOOSEVARIABLE_HPP 00013 #define COUENNECHOOSEVARIABLE_HPP 00014 00015 #include "OsiChooseVariable.hpp" 00016 #include "BonBabInfos.hpp" 00017 #include "CouenneJournalist.hpp" 00018 #include "BonRegisteredOptions.hpp" 00019 00020 namespace Couenne { 00021 00022 class CouenneProblem; 00023 00027 class CouenneChooseVariable: public OsiChooseVariable { 00028 00029 public: 00030 00032 CouenneChooseVariable (); 00033 00035 CouenneChooseVariable (const OsiSolverInterface *, CouenneProblem *, JnlstPtr jnlst); 00036 00038 CouenneChooseVariable (const CouenneChooseVariable &); 00039 00041 CouenneChooseVariable &operator= (const CouenneChooseVariable &); 00042 00044 virtual OsiChooseVariable *clone() const 00045 {return new CouenneChooseVariable (*this);} 00046 00048 virtual ~CouenneChooseVariable () {} 00049 00053 virtual int setupList (OsiBranchingInformation *, bool); 00054 00056 virtual bool feasibleSolution (const OsiBranchingInformation * info, 00057 const double * solution, 00058 int numberObjects, 00059 const OsiObject ** objects); 00060 00061 // choose object to branch based on earlier setup 00062 // virtual int chooseVariable (OsiSolverInterface * solver, 00063 // OsiBranchingInformation *info, 00064 // bool fixVariables); 00065 00067 static void registerOptions (Ipopt::SmartPtr <Bonmin::RegisteredOptions> roptions); 00068 00069 protected: 00070 00072 CouenneProblem *problem_; 00073 00075 JnlstPtr jnlst_; 00076 }; 00077 00078 } 00079 00080 #endif