Couenne 0.5.8
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
15
16#include "CglConfig.h"
17#include "CglCutGenerator.hpp"
18#include "OsiRowCut.hpp"
19#include "CouenneJournalist.hpp"
20
21namespace Ipopt {
22 template <class T> class SmartPtr;
23 class OptionsList;
24}
25
26namespace Couenne {
27
28 class CouenneProblem;
29
31
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
140
141 public:
142
145 JnlstPtr,
147
150
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
Base class definition for relations between auxiliaries.
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
virtual int findRelations()=0
Identifies 5-tuple of the form.
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
virtual int findRelations()
Cut Generator that uses relationships between auxiliaries.
CouenneProblem * problem_
pointer to the CouenneProblem representation
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
the main CglCutGenerator
CouenneCrossConv(CouenneProblem *, JnlstPtr, const Ipopt::SmartPtr< Ipopt::OptionsList >)
constructor
virtual ~CouenneCrossConv()
destructor
virtual CouenneCrossConv * clone() const
clone method (necessary for the abstract CglCutGenerator class)
JnlstPtr jnlst_
Journalist.
CouenneCrossConv(const CouenneCrossConv &)
copy constructor
static void registerOptions(Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
Add list of options to be read from file.
virtual void setup()
Set up data structure to detect redundancies.
Class for MINLP problems with symbolic information.
Identifies 5-ples of variables of the form.
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
virtual int findRelations()
Identifies 5-tuple of the form.
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
virtual int findRelations()
Identifies 5-ples of variables of the form.
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
virtual int findRelations()
general include file for different compilers