Couenne  0.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CouenneCrossConv.hpp
Go to the documentation of this file.
1 /* $Id: CouenneCrossConv.hpp 945 2013-04-06 20:25:21Z stefan $
2  *
3  * Name: CouenneCrossConv.hpp
4  * Author: Pietro Belotti
5  * Purpose: Convexification cuts on redundant relationships between auxiliaries
6  *
7  * (C) Pietro Belotti, 2010-11.
8  * This file is licensed under the Eclipse Public License (EPL)
9  */
10 
11 #ifndef COUENNECROSSCONV_HPP
12 #define COUENNECROSSCONV_HPP
13 
14 #include "BonRegisteredOptions.hpp"
15 
16 #include "CglConfig.h"
17 #include "CglCutGenerator.hpp"
18 #include "OsiRowCut.hpp"
19 #include "CouenneJournalist.hpp"
20 
21 namespace Ipopt {
22  template <class T> class SmartPtr;
23  class OptionsList;
24 }
25 
26 namespace Couenne {
27 
28  class CouenneProblem;
29 
31 
32  class AuxRelation {
33 
34  public:
35 
36  virtual int findRelations () = 0;
37 
38  virtual void generateCuts (const OsiSolverInterface &,
39  OsiCuts &,
40  const CglTreeInfo = CglTreeInfo ()) const;
41  protected:
42 
43  };
44 
57 
58  class SumLogAuxRel: public AuxRelation {
59 
60  public:
61 
62  virtual int findRelations ();
63 
64  virtual void generateCuts (const OsiSolverInterface &,
65  OsiCuts &,
66  const CglTreeInfo = CglTreeInfo ()) const;
67  };
68 
69 
81 
82  class MultiProdRel: public AuxRelation {
83 
84  public:
85 
86  virtual int findRelations ();
87 
88  virtual void generateCuts (const OsiSolverInterface &,
89  OsiCuts &,
90  const CglTreeInfo = CglTreeInfo ()) const;
91  };
92 
104 
105  class BiProdDivRel: public AuxRelation {
106 
107  public:
108 
109  virtual int findRelations ();
110 
111  virtual void generateCuts (const OsiSolverInterface &,
112  OsiCuts &,
113  const CglTreeInfo = CglTreeInfo ()) const;
114  };
115 
124 
125  class PowRel: public AuxRelation {
126 
127  public:
128 
129  virtual int findRelations ();
130 
131  virtual void generateCuts (const OsiSolverInterface &,
132  OsiCuts &,
133  const CglTreeInfo = CglTreeInfo ()) const;
134  };
135 
136 
138 
139  class CouenneCrossConv: public CglCutGenerator {
140 
141  public:
142 
145  JnlstPtr,
147 
150 
152  virtual ~CouenneCrossConv ();
153 
155  virtual CouenneCrossConv *clone () const
156  {return new CouenneCrossConv (*this);}
157 
159  virtual void generateCuts (const OsiSolverInterface &,
160  OsiCuts &,
161  const CglTreeInfo = CglTreeInfo ())
162 #if CGL_VERSION_MAJOR == 0 && CGL_VERSION_MINOR <= 57
163  const
164 #endif
165  ;
166 
169 
171  virtual void setup ();
172 
173  protected:
174 
177 
180  };
181 }
182 
183 #endif
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
the main CglCutGenerator
Identifies 5-tuple of the form.
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
Base class definition for relations between auxiliaries.
Identifies 5-ples of variables of the form.
CouenneProblem * problem_
pointer to the CouenneProblem representation
virtual int findRelations()
virtual int findRelations()
Identifies 5-tuple of the form.
virtual void setup()
Set up data structure to detect redundancies.
Identifies 5-ples of variables of the form.
virtual CouenneCrossConv * clone() const
clone method (necessary for the abstract CglCutGenerator class)
Class for MINLP problems with symbolic information.
static void registerOptions(Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
Add list of options to be read from file.
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
Cut Generator that uses relationships between auxiliaries.
virtual ~CouenneCrossConv()
destructor
CouenneCrossConv(CouenneProblem *, JnlstPtr, const Ipopt::SmartPtr< Ipopt::OptionsList >)
constructor
virtual int findRelations()
JnlstPtr jnlst_
Journalist.
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
virtual int findRelations()
virtual int findRelations()=0
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const