CouenneCrossConv.hpp

Go to the documentation of this file.
00001 /* $Id: CouenneCrossConv.hpp 945 2013-04-06 20:25:21Z stefan $
00002  *
00003  * Name:    CouenneCrossConv.hpp
00004  * Author:  Pietro Belotti
00005  * Purpose: Convexification cuts on redundant relationships between auxiliaries
00006  *
00007  * (C) Pietro Belotti, 2010-11.
00008  * This file is licensed under the Eclipse Public License (EPL)
00009  */
00010 
00011 #ifndef COUENNECROSSCONV_HPP
00012 #define COUENNECROSSCONV_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 
00031 
00032   class AuxRelation {
00033 
00034   public:
00035 
00036     virtual int findRelations () = 0;
00037 
00038     virtual void generateCuts (const OsiSolverInterface &, 
00039                                OsiCuts &, 
00040                                const CglTreeInfo = CglTreeInfo ()) const;
00041   protected:
00042 
00043   };
00044   
00057 
00058   class SumLogAuxRel: public AuxRelation {
00059 
00060   public:
00061 
00062     virtual int findRelations ();
00063 
00064     virtual void generateCuts (const OsiSolverInterface &, 
00065                                OsiCuts &, 
00066                                const CglTreeInfo = CglTreeInfo ()) const;
00067   };
00068 
00069 
00081 
00082   class MultiProdRel: public AuxRelation {
00083 
00084   public:
00085 
00086     virtual int findRelations ();
00087 
00088     virtual void generateCuts (const OsiSolverInterface &, 
00089                                OsiCuts &, 
00090                                const CglTreeInfo = CglTreeInfo ()) const;
00091   };
00092 
00104 
00105   class BiProdDivRel: public AuxRelation {
00106 
00107   public:
00108 
00109     virtual int findRelations ();
00110 
00111     virtual void generateCuts (const OsiSolverInterface &, 
00112                                OsiCuts &, 
00113                                const CglTreeInfo = CglTreeInfo ()) const;
00114   };
00115 
00124 
00125   class PowRel: public AuxRelation {
00126 
00127   public:
00128 
00129     virtual int findRelations ();
00130 
00131     virtual void generateCuts (const OsiSolverInterface &, 
00132                                OsiCuts &, 
00133                                const CglTreeInfo = CglTreeInfo ()) const;
00134   };
00135 
00136 
00138 
00139   class CouenneCrossConv: public CglCutGenerator {
00140 
00141   public:
00142 
00144     CouenneCrossConv (CouenneProblem *,
00145                       JnlstPtr,
00146                       const Ipopt::SmartPtr <Ipopt::OptionsList>);
00147 
00149     CouenneCrossConv  (const CouenneCrossConv &);
00150 
00152     virtual ~CouenneCrossConv ();
00153 
00155     virtual CouenneCrossConv *clone () const
00156     {return new CouenneCrossConv (*this);}
00157 
00159     virtual void generateCuts (const OsiSolverInterface &, 
00160                        OsiCuts &, 
00161                        const CglTreeInfo = CglTreeInfo ())
00162 #if CGL_VERSION_MAJOR == 0 && CGL_VERSION_MINOR <= 57
00163     const
00164 #endif
00165     ;
00166 
00168     static void registerOptions (Ipopt::SmartPtr <Bonmin::RegisteredOptions> roptions);
00169 
00171     virtual void setup ();
00172 
00173   protected:
00174 
00176     JnlstPtr jnlst_;
00177 
00179     CouenneProblem *problem_;
00180   };
00181 }
00182 
00183 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 17 Feb 2015 for Couenne by  doxygen 1.6.1