00001 /* $Id: CouenneAggrProbing.hpp 945 2013-04-06 20:25:21Z stefan $ 00002 * 00003 * Name: CouenneAggrProbing.hpp 00004 * Author: Giacomo Nannicini 00005 * Purpose: A bound tightener based on aggressive probing 00006 * 00007 * (C) Giacomo Nannicini, 2010. 00008 * This file is licensed under the Eclipse Public License (EPL) 00009 */ 00010 00011 #ifndef COUENNEAGGRPROBING_HPP 00012 #define COUENNEAGGRPROBING_HPP 00013 00014 #include "BonRegisteredOptions.hpp" 00015 00016 #include "BonOaDecBase.hpp" 00017 #include "CglConfig.h" 00018 #include "CglCutGenerator.hpp" 00019 #include "OsiColCut.hpp" 00020 #include "OsiSolverInterface.hpp" 00021 #include "CouenneProblem.hpp" 00022 #include "BonCouenneSetup.hpp" 00023 00024 namespace Couenne { 00025 00036 00037 class CouenneAggrProbing: public CglCutGenerator { 00038 00039 public: 00040 00042 CouenneAggrProbing(CouenneSetup* couenne, 00043 const Ipopt::SmartPtr<Ipopt::OptionsList> options); 00044 00046 CouenneAggrProbing(const CouenneAggrProbing& rhs); 00047 00049 ~CouenneAggrProbing(); 00050 00052 CouenneAggrProbing *clone () const 00053 {return new CouenneAggrProbing (*this);} 00054 00056 void generateCuts(const OsiSolverInterface & solver, 00057 OsiCuts& cuts, 00058 const CglTreeInfo = CglTreeInfo ()) 00059 #if CGL_VERSION_MAJOR == 0 && CGL_VERSION_MINOR <= 57 00060 const 00061 #endif 00062 { } 00063 00069 double probeVariable(int index, bool probeLower); 00070 00073 double probeVariable2(int index, bool lower); 00074 00076 static void registerOptions(Ipopt::SmartPtr <Bonmin::RegisteredOptions> roptions); 00077 00079 void setMaxTime(double value); 00080 double getMaxTime() const; 00081 00083 void setMaxFailedSteps(int value); 00084 int getMaxFailedSteps() const; 00085 00087 void setMaxNodes(int value); 00088 int getMaxNodes() const; 00089 00092 void setRestoreCutoff(bool value); 00093 bool getRestoreCutoff() const; 00094 00095 protected: 00096 00098 CouenneSetup* couenne_; 00099 00101 int numCols_; 00102 00104 double maxTime_; 00105 00107 int maxFailedSteps_; 00108 00110 int maxNodes_; 00111 00113 bool restoreCutoff_; 00114 00116 double initCutoff_; 00117 00118 }; 00119 } 00120 00121 #endif