00001 /* $Id: CouenneChooseVariable.hpp 221 2009-07-08 21:34:02Z 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 Common Public License (CPL) 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 class CouenneProblem; 00021 00025 class CouenneChooseVariable: public OsiChooseVariable { 00026 00027 public: 00028 00030 CouenneChooseVariable (); 00031 00033 CouenneChooseVariable (const OsiSolverInterface *, CouenneProblem *, JnlstPtr jnlst); 00034 00036 CouenneChooseVariable (const CouenneChooseVariable &); 00037 00039 CouenneChooseVariable &operator= (const CouenneChooseVariable &); 00040 00042 virtual OsiChooseVariable *clone() const 00043 {return new CouenneChooseVariable (*this);} 00044 00046 virtual ~CouenneChooseVariable () {} 00047 00051 virtual int setupList (OsiBranchingInformation *, bool); 00052 00054 virtual bool feasibleSolution (const OsiBranchingInformation * info, 00055 const double * solution, 00056 int numberObjects, 00057 const OsiObject ** objects); 00058 00060 // virtual int chooseVariable (OsiSolverInterface * solver, 00061 // OsiBranchingInformation *info, 00062 // bool fixVariables); 00063 00065 static void registerOptions (Ipopt::SmartPtr <Bonmin::RegisteredOptions> roptions); 00066 00067 protected: 00068 00070 CouenneProblem *problem_; 00071 00073 JnlstPtr jnlst_; 00074 }; 00075 00076 #endif