Bonmin
1.8.9
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Algorithms
QuadCuts
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
22
enum
MatrixStorageType
{
23
Upper
,
24
Lower
,
25
Full
};
26
27
class
QuadCut
:
public
OsiRowCut
{
28
public
:
29
31
QuadCut
();
32
34
QuadCut
(
const
QuadCut
& other);
35
37
QuadCut
&
operator=
(
const
QuadCut
&
rhs
);
38
40
virtual
OsiRowCut
*
clone
()
const
;
41
43
~QuadCut
();
44
46
void
print
()
const
;
47
49
CoinPackedMatrix
&
Q
(){
50
return
Q_;
51
}
52
54
const
CoinPackedMatrix
&
Q
()
const
{
55
return
Q_;
56
}
57
60
MatrixStorageType
&
type
(){
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_;
79
CoinPackedMatrix
Q_;
81
MatrixStorageType
type_;
82
85
86
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
:
103
typedef
vector<QuadCut *>
QuadCutPtrStorage
;
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
159
Cuts::insert
(
const
QuadCut
&c){
160
quadCuts_.push_back(
new
QuadCut
(c));
161
}
162
163
void
164
Cuts::insert
(
QuadCut
* &c){
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
178
Cuts::sizeQuadCuts
()
const
{
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
*
188
Cuts::quadCutPtr
(
int
i) {
189
return
quadCuts_[i];
190
}
191
192
const
QuadCut
*
193
Cuts::quadCutPtr
(
int
i)
const
{
194
return
quadCuts_[i];
195
}
196
197
QuadCut
&
198
Cuts::quadCut
(
int
i) {
199
return
*quadCuts_[i];
200
}
201
202
const
QuadCut
&
203
Cuts::quadCut
(
int
i)
const
{
204
return
*quadCuts_[i];
205
}
206
207
void
208
Cuts::eraseQuadCut
(
int
i){
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
BonTypes.hpp
CoinPackedMatrix.hpp
OsiCuts.hpp
OsiRowCut.hpp
Bonmin::Cuts::eraseQuadCut
void eraseQuadCut(int i)
Erase quadratic cut from the collection.
Definition
BonQuadCut.hpp:208
Bonmin::Cuts::sizeQuadCuts
int sizeQuadCuts() const
Number of quadratic cuts in the collection.
Definition
BonQuadCut.hpp:178
Bonmin::Cuts::operator=
Cuts & operator=(const Cuts &rhs)
Assignment operator.
Bonmin::Cuts::Cuts
Cuts()
Default constructor.
Bonmin::Cuts::~Cuts
~Cuts()
Destructor.
Bonmin::Cuts::Cuts
Cuts(const Cuts &other)
Copy constructor.
Bonmin::Cuts::quadCut
QuadCut & quadCut(int i)
Access to a quadratic cut by reference.
Definition
BonQuadCut.hpp:198
Bonmin::Cuts::printCuts
void printCuts() const
Print all cuts in the collection.
Bonmin::Cuts::quadCutPtr
QuadCut * quadCutPtr(int i)
Access to a quadratic cut by pointer.
Definition
BonQuadCut.hpp:188
Bonmin::Cuts::sizeCuts
int sizeCuts() const
Total number of cuts in the collection.
Definition
BonQuadCut.hpp:183
Bonmin::Cuts::QuadCutPtrStorage
vector< QuadCut * > QuadCutPtrStorage
Definition
BonQuadCut.hpp:103
Bonmin::Cuts::insert
void insert(const QuadCut &c)
insert a quadratic cut into the collection.
Definition
BonQuadCut.hpp:159
Bonmin::QuadCut
Definition
BonQuadCut.hpp:27
Bonmin::QuadCut::~QuadCut
~QuadCut()
Destructor.
Bonmin::QuadCut::violated
double violated(const double *solution) const
Compute cut violation.
Bonmin::QuadCut::type
const MatrixStorageType & type() const
Definition
BonQuadCut.hpp:63
Bonmin::QuadCut::Q
CoinPackedMatrix & Q()
Return the matrix stored.
Definition
BonQuadCut.hpp:49
Bonmin::QuadCut::type
MatrixStorageType & type()
Acces storage type Acces storage type.
Definition
BonQuadCut.hpp:60
Bonmin::QuadCut::c
const double & c() const
Acces the constant.
Definition
BonQuadCut.hpp:70
Bonmin::QuadCut::operator=
QuadCut & operator=(const QuadCut &rhs)
Assignment operator.
Bonmin::QuadCut::c
double & c()
Acces the constant.
Definition
BonQuadCut.hpp:67
Bonmin::QuadCut::print
void print() const
Print.
Bonmin::QuadCut::QuadCut
QuadCut()
Default constructor.
Bonmin::QuadCut::QuadCut
QuadCut(const QuadCut &other)
Copy constructor.
Bonmin::QuadCut::clone
virtual OsiRowCut * clone() const
Virtual copy.
Bonmin::QuadCut::Q
const CoinPackedMatrix & Q() const
Return the matrix stored.
Definition
BonQuadCut.hpp:54
Bonmin::vector
A small wrap around std::vector to give easy access to array for interfacing with fortran code.
Definition
BonTypes.hpp:9
CoinPackedMatrix
OsiCuts::insert
void insert(const OsiRowCut &rc)
OsiCuts::OsiCuts
OsiCuts()
OsiCuts::sizeCuts
int sizeCuts() const
OsiRowCut::rhs
double rhs() const
OsiRowCut::OsiRowCut
OsiRowCut(const OsiRowCut &)
Bonmin
(C) Copyright International Business Machines Corporation 2007
Definition
BonAmplSetup.hpp:16
Bonmin::MatrixStorageType
MatrixStorageType
Definition
BonQuadCut.hpp:22
Bonmin::Upper
@ Upper
Stores only the upper triangle of a symetric Q.
Definition
BonQuadCut.hpp:23
Bonmin::Lower
@ Lower
Stores the lower triangle of a symetric Q.
Definition
BonQuadCut.hpp:24
Bonmin::Full
@ Full
Stores the whole matrix of a non-symetric Q.
Definition
BonQuadCut.hpp:25
Bonmin::list_QuadCut
std::list< QuadCut * > list_QuadCut
Definition
BonQuadCut.hpp:212
Generated by
1.17.0