00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef COUENNEFIXPOINT_HPP
00012 #define COUENNEFIXPOINT_HPP
00013
00014 #include "BonRegisteredOptions.hpp"
00015
00016 #include "BonOaDecBase.hpp"
00017 #include "CglCutGenerator.hpp"
00018 #include "OsiRowCut.hpp"
00019 #include "OsiSolverInterface.hpp"
00020
00021 namespace Couenne {
00022
00023 class CouenneProblem;
00024
00026
00027 class CouenneFixPoint: public CglCutGenerator {
00028
00029 public:
00030
00032 CouenneFixPoint (CouenneProblem *,
00033 const Ipopt::SmartPtr<Ipopt::OptionsList>);
00034
00036 CouenneFixPoint (const CouenneFixPoint &);
00037
00039 ~CouenneFixPoint ();
00040
00042 CouenneFixPoint *clone () const
00043 {return new CouenneFixPoint (*this);}
00044
00046 void generateCuts (const OsiSolverInterface &,
00047 OsiCuts &,
00048 const CglTreeInfo = CglTreeInfo ()) const;
00049
00051 static void registerOptions (Ipopt::SmartPtr <Bonmin::RegisteredOptions> roptions);
00052
00053 protected:
00054
00056 bool extendedModel_;
00057
00059 CouenneProblem *problem_;
00060
00062 mutable bool firstCall_;
00063
00065 mutable double CPUtime_;
00066
00068 mutable int nRuns_;
00069
00071 mutable int nTightened_;
00072
00074 void createRow (int, int,
00075 int,
00076 OsiSolverInterface *,
00077 const int *,
00078 const double *,
00079 const double,
00080 const int,
00081 bool,
00082 int, int) const;
00083 };
00084 }
00085
00086 #endif