Bonmin  1.8.8
BonQuadCut.hpp
Go to the documentation of this file.
1 // (C) Copyright International Business Machines Corporation 2007
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // Authors :
6 // Pierre Bonami, International Business Machines Corporation
7 //
8 // Date : 10/06/2007
9 
10 #ifndef BonQuadCut_H
11 #define BonQuadCut_H
12 
13 #include "CoinPackedMatrix.hpp"
14 #include "OsiRowCut.hpp"
15 #include "OsiCuts.hpp"
16 #include "BonTypes.hpp"
17 #include <list>
18 
19 
20 namespace Bonmin {
21 
25  Full };
26 
27 class QuadCut : public OsiRowCut {
28  public:
29 
32 
34  QuadCut(const QuadCut & other);
35 
38 
40  virtual OsiRowCut * clone() const;
41 
44 
46  void print() const;
47 
50  return Q_;
51  }
52 
54  const CoinPackedMatrix& Q() const{
55  return Q_;
56  }
57 
61  return type_;}
62 
63  const MatrixStorageType& type() const{
64  return type_;}
65 
67  double & c(){return c_;}
68 
70  const double & c() const {return c_;}
71 
73  double violated(const double * solution) const;
74 
75  private:
77  double c_;
81  MatrixStorageType type_;
82 
85  void operator+=(double value);
87 
89  void operator-=(double value);
90 
92  void operator*=(double value);
93 
95  void operator/=(double value);
97 
98 };
99 
101 class Cuts : public OsiCuts {
102  public:
105  Cuts();
106 
108  Cuts(const Cuts& other);
109 
111  Cuts& operator=(const Cuts & rhs);
112 
114  ~Cuts();
115 
117  inline void insert(const QuadCut& c);
118 
123  inline void insert(QuadCut* &c);
124 
126  inline void insert(const Cuts &cs);
127 
129  inline int sizeQuadCuts() const;
130 
132  inline int sizeCuts() const;
133 
135  void printCuts() const;
136 
137 
139  inline QuadCut * quadCutPtr(int i);
140 
142  inline const QuadCut * quadCutPtr(int i) const;
143 
145  inline QuadCut& quadCut(int i);
146 
147 
149  inline const QuadCut& quadCut(int i) const;
150 
152  inline void eraseQuadCut(int i);
153 
154  private:
155  QuadCutPtrStorage quadCuts_;
156 };
157 
158 void
160  quadCuts_.push_back(new QuadCut(c));
161 }
162 
163 void
165  quadCuts_.push_back(c);
166  c = NULL;
167 }
168 
169 void
170 Cuts::insert(const Cuts & cs){
171  OsiCuts::insert(cs);
172  for(unsigned int i = 0 ; i < cs.quadCuts_.size() ; i++){
173  quadCuts_.push_back(new QuadCut(*cs.quadCuts_[i]));
174  }
175 }
176 
177 int
179  return static_cast<int>(quadCuts_.size());
180 }
181 
182 int
183 Cuts::sizeCuts() const {
184  return static_cast<int>(quadCuts_.size()) + OsiCuts::sizeCuts();
185 }
186 
187 QuadCut *
189  return quadCuts_[i];
190 }
191 
192 const QuadCut *
193 Cuts::quadCutPtr(int i) const {
194  return quadCuts_[i];
195 }
196 
197 QuadCut &
199  return *quadCuts_[i];
200 }
201 
202 const QuadCut &
203 Cuts::quadCut(int i) const {
204  return *quadCuts_[i];
205 }
206 
207 void
209  delete quadCuts_[i];
210  quadCuts_.erase(quadCuts_.begin() + i);
211 }
212 typedef std::list<QuadCut*> list_QuadCut;
213 
214 }// Ends Bonmin namespace
215 #endif
216 
217 
Bonmin::Cuts::sizeCuts
int sizeCuts() const
Total number of cuts in the collection.
Definition: BonQuadCut.hpp:183
OsiRowCut::rhs
double rhs() const
Bonmin::QuadCut
Definition: BonQuadCut.hpp:27
Bonmin::QuadCut::type
MatrixStorageType & type()
Acces storage type Acces storage type.
Definition: BonQuadCut.hpp:60
OsiCuts.hpp
Bonmin
(C) Copyright International Business Machines Corporation 2007
Definition: BonAmplSetup.hpp:16
Bonmin::Cuts::QuadCutPtrStorage
vector< QuadCut * > QuadCutPtrStorage
Definition: BonQuadCut.hpp:103
Bonmin::Cuts::~Cuts
~Cuts()
Destructor.
Bonmin::QuadCut::clone
virtual OsiRowCut * clone() const
Virtual copy.
Bonmin::Cuts::sizeQuadCuts
int sizeQuadCuts() const
Number of quadratic cuts in the collection.
Definition: BonQuadCut.hpp:178
Bonmin::QuadCut::QuadCut
QuadCut()
Default constructor.
Bonmin::Cuts::operator=
Cuts & operator=(const Cuts &rhs)
Assignment operator.
Bonmin::list_QuadCut
std::list< QuadCut * > list_QuadCut
Definition: BonQuadCut.hpp:212
Bonmin::Upper
@ Upper
Stores only the upper triangle of a symetric Q.
Definition: BonQuadCut.hpp:23
Bonmin::Cuts::quadCut
QuadCut & quadCut(int i)
Access to a quadratic cut by reference.
Definition: BonQuadCut.hpp:198
Bonmin::vector< QuadCut * >
Bonmin::QuadCut::c
double & c()
Acces the constant.
Definition: BonQuadCut.hpp:67
BonTypes.hpp
Bonmin::Cuts::quadCutPtr
QuadCut * quadCutPtr(int i)
Access to a quadratic cut by pointer.
Definition: BonQuadCut.hpp:188
Bonmin::Lower
@ Lower
Stores the lower triangle of a symetric Q.
Definition: BonQuadCut.hpp:24
OsiRowCut
OsiRowCut.hpp
OsiCuts
Bonmin::Cuts
Generalizes OsiCuts to handle quadratic cuts.
Definition: BonQuadCut.hpp:101
Bonmin::QuadCut::operator=
QuadCut & operator=(const QuadCut &rhs)
Assignment operator.
Bonmin::QuadCut::c
const double & c() const
Acces the constant.
Definition: BonQuadCut.hpp:70
Bonmin::QuadCut::print
void print() const
Print.
Bonmin::QuadCut::QuadCut
QuadCut(const QuadCut &other)
Copy constructor.
CoinPackedMatrix
CoinPackedMatrix.hpp
Bonmin::QuadCut::~QuadCut
~QuadCut()
Destructor.
OsiCuts::insert
void insert(const OsiRowCut &rc)
Bonmin::Cuts::Cuts
Cuts(const Cuts &other)
Copy constructor.
Bonmin::Cuts::printCuts
void printCuts() const
Print all cuts in the collection.
Bonmin::MatrixStorageType
MatrixStorageType
Definition: BonQuadCut.hpp:22
Bonmin::Full
@ Full
Stores the whole matrix of a non-symetric Q.
Definition: BonQuadCut.hpp:25
Bonmin::QuadCut::Q
CoinPackedMatrix & Q()
Return the matrix stored.
Definition: BonQuadCut.hpp:49
OsiCuts::sizeCuts
int sizeCuts() const
Bonmin::Cuts::eraseQuadCut
void eraseQuadCut(int i)
Erase quadratic cut from the collection.
Definition: BonQuadCut.hpp:208
Bonmin::Cuts::insert
void insert(const QuadCut &c)
insert a quadratic cut into the collection.
Definition: BonQuadCut.hpp:159
Bonmin::QuadCut::violated
double violated(const double *solution) const
Compute cut violation.
Bonmin::Cuts::Cuts
Cuts()
Default constructor.
Bonmin::QuadCut::type
const MatrixStorageType & type() const
Definition: BonQuadCut.hpp:63
Bonmin::QuadCut::Q
const CoinPackedMatrix & Q() const
Return the matrix stored.
Definition: BonQuadCut.hpp:54