00001 /* $Id: CouenneTwoImplied.hpp 946 2013-04-15 22:20:38Z stefan $ 00002 * 00003 * Name: CouenneTwoImplied.hpp 00004 * Author: Pietro Belotti 00005 * Purpose: Bound Tightening using pairs of linear inequalities or equations 00006 * 00007 * (C) Pietro Belotti, 2010. 00008 * This file is licensed under the Eclipse Public License (EPL) 00009 */ 00010 00011 #ifndef COUENNETWOIMPLIED_HPP 00012 #define COUENNETWOIMPLIED_HPP 00013 00014 #include "BonRegisteredOptions.hpp" 00015 00016 #include "CglConfig.h" 00017 #include "CglCutGenerator.hpp" 00018 #include "OsiRowCut.hpp" 00019 #include "CouenneJournalist.hpp" 00020 00021 namespace Ipopt { 00022 template <class T> class SmartPtr; 00023 class OptionsList; 00024 } 00025 00026 namespace Couenne { 00027 00028 class CouenneProblem; 00029 00174 class CouenneTwoImplied: public CglCutGenerator { 00175 00176 public: 00177 00179 CouenneTwoImplied (CouenneProblem *, 00180 JnlstPtr, 00181 const Ipopt::SmartPtr <Ipopt::OptionsList>); 00182 00184 CouenneTwoImplied (const CouenneTwoImplied &); 00185 00187 ~CouenneTwoImplied (); 00188 00190 CouenneTwoImplied *clone () const 00191 {return new CouenneTwoImplied (*this);} 00192 00194 void generateCuts (const OsiSolverInterface &, 00195 OsiCuts &, 00196 const CglTreeInfo = CglTreeInfo ()) 00197 #if CGL_VERSION_MAJOR == 0 && CGL_VERSION_MINOR <= 57 00198 const 00199 #endif 00200 ; 00201 00203 static void registerOptions (Ipopt::SmartPtr <Bonmin::RegisteredOptions> roptions); 00204 00205 protected: 00206 00208 CouenneProblem *problem_; 00209 00211 JnlstPtr jnlst_; 00212 00214 int nMaxTrials_; 00215 00217 mutable double totalTime_; 00218 00220 mutable double totalInitTime_; 00221 00223 mutable bool firstCall_; 00224 00226 int depthLevelling_; 00227 00229 int depthStopSeparate_; 00230 }; 00231 } 00232 00233 #endif