00001 /* $Id: CouenneAggrProbing.hpp 490 2011-01-14 16:07:12Z pbelotti $ 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 "CglCutGenerator.hpp" 00018 #include "OsiColCut.hpp" 00019 #include "OsiSolverInterface.hpp" 00020 #include "CouenneProblem.hpp" 00021 #include "BonCouenneSetup.hpp" 00022 00023 namespace Couenne { 00024 00035 00036 class CouenneAggrProbing: public CglCutGenerator { 00037 00038 public: 00039 00041 CouenneAggrProbing(CouenneSetup* couenne, 00042 const Ipopt::SmartPtr<Ipopt::OptionsList> options); 00043 00045 CouenneAggrProbing(const CouenneAggrProbing& rhs); 00046 00048 ~CouenneAggrProbing(); 00049 00051 CouenneAggrProbing *clone () const 00052 {return new CouenneAggrProbing (*this);} 00053 00055 void generateCuts(const OsiSolverInterface & solver, 00056 OsiCuts& cuts, 00057 const CglTreeInfo = CglTreeInfo ()) const; 00058 00064 double probeVariable(int index, bool probeLower); 00065 00068 double probeVariable2(int index, bool lower); 00069 00071 static void registerOptions(Ipopt::SmartPtr <Bonmin::RegisteredOptions> roptions); 00072 00074 void setMaxTime(double value); 00075 double getMaxTime() const; 00076 00078 void setMaxFailedSteps(int value); 00079 int getMaxFailedSteps() const; 00080 00082 void setMaxNodes(int value); 00083 int getMaxNodes() const; 00084 00087 void setRestoreCutoff(bool value); 00088 bool getRestoreCutoff() const; 00089 00090 protected: 00091 00093 CouenneSetup* couenne_; 00094 00096 int numCols_; 00097 00099 double maxTime_; 00100 00102 int maxFailedSteps_; 00103 00105 int maxNodes_; 00106 00108 bool restoreCutoff_; 00109 00111 double initCutoff_; 00112 00113 }; 00114 } 00115 00116 #endif