(In)equality for LPs.Class LPRowBase provides constraints for linear programs in the form
\[ l \le a^Tx \le r, \]
where a is a DSVector. l is referred to as left hand side, r as right hand side and a as row vector or the constraint vector. l and r may also take values \(\pm\) infinity. This static member is predefined, but may be overridden to meet the needs of the LP solver to be used. More...
#include <lprowbase.h>
Public Types | |
Types | |
enum | Type { LESS_EQUAL, EQUAL, GREATER_EQUAL, RANGE } |
(In)Equality type of an LP row. More... | |
Public Member Functions | |
Construction / destruction | |
LPRowBase (int defDim=0) | |
Constructs LPRowBase with a vector ready to hold defDim nonzeros. More... | |
LPRowBase (const LPRowBase< R > &row) | |
Copy constructor. More... | |
template<class S > | |
LPRowBase (const LPRowBase< S > &row) | |
Copy constructor. More... | |
LPRowBase (const R &p_lhs, const SVectorBase< R > &p_rowVector, const R &p_rhs, const R &p_obj=0) | |
Constructs LPRowBase with the given left-hand side, right-hand side and rowVector. More... | |
LPRowBase (const SVectorBase< R > &p_rowVector, Type p_type, const R &p_value, const R &p_obj=0) | |
Constructs LPRowBase from passed rowVector , type and value . More... | |
~LPRowBase () | |
Destructor. More... | |
Access / modification | |
Type | type () const |
Gets type of row. More... | |
void | setType (Type p_type) |
Sets type of (in)equality. More... | |
R | value () const |
Right hand side value of (in)equality. More... | |
R | lhs () const |
Left-hand side value. More... | |
void | setLhs (const R &p_left) |
Sets left-hand side value. More... | |
R | rhs () const |
Right-hand side value. More... | |
void | setRhs (const R &p_right) |
Sets right-hand side value. More... | |
R | obj () const |
Objective coefficient value. More... | |
void | setObj (const R &p_obj) |
Sets objective coefficient value. More... | |
const SVectorBase< R > & | rowVector () const |
Constraint row vector. More... | |
void | setRowVector (const DSVectorBase< R > &p_vec) |
access constraint row vector. More... | |
Consistency check | |
bool | isConsistent () const |
Checks consistency. More... | |
Private Attributes | |
Data | |
R | left |
left-hand side of the constraint More... | |
R | right |
right-hand side of the constraint More... | |
R | object |
objective coefficient of corresponding slack variable s = vec times primal More... | |
DSVectorBase< R > | vec |
the row vector More... | |
Friends | |
template<class S > | |
class | LPRowBase |
(In)equality for LPs.
Class LPRowBase provides constraints for linear programs in the form
\[ l \le a^Tx \le r, \]
where a is a DSVector. l is referred to as left hand side, r as right hand side and a as row vector or the constraint vector. l and r may also take values \(\pm\) infinity. This static member is predefined, but may be overridden to meet the needs of the LP solver to be used.
LPRowBases allow to specify regular inequalities of the form
\[ a^Tx \sim \alpha, \]
where \(\sim\) can take any value of \(\le, =, \ge\), by setting rhs and lhs to the same value or setting one of them to \(\infty\).
Since constraints in the regular form occur often, LPRowBases offers methods type() and value() for retreiving \(\sim\) and \(\alpha\) of an LPRowBase in this form, respectively. Also, a constructor for LPRowBases given in regular form is provided.
Definition at line 45 of file lprowbase.h.
enum Type |
(In)Equality type of an LP row.
LPRowBases may be of one of the following Types. This datatype may be used for constructing new LPRowBases in the regular form.
Enumerator | |
---|---|
LESS_EQUAL | \(a^Tx \le \alpha\). |
EQUAL | \(a^Tx = \alpha\). |
GREATER_EQUAL | \(a^Tx \ge \alpha\). |
RANGE | \(\lambda \le a^Tx \le \rho\). |
Definition at line 72 of file lprowbase.h.
|
explicit |
Constructs LPRowBase with a vector ready to hold defDim
nonzeros.
Definition at line 87 of file lprowbase.h.
References LPRowBase< R >::isConsistent().
Copy constructor.
Definition at line 94 of file lprowbase.h.
References LPRowBase< R >::isConsistent().
Copy constructor.
Definition at line 102 of file lprowbase.h.
References LPRowBase< R >::isConsistent().
LPRowBase | ( | const R & | p_lhs, |
const SVectorBase< R > & | p_rowVector, | ||
const R & | p_rhs, | ||
const R & | p_obj = 0 |
||
) |
Constructs LPRowBase with the given left-hand side, right-hand side and rowVector.
Definition at line 109 of file lprowbase.h.
References LPRowBase< R >::isConsistent().
LPRowBase | ( | const SVectorBase< R > & | p_rowVector, |
Type | p_type, | ||
const R & | p_value, | ||
const R & | p_obj = 0 |
||
) |
Constructs LPRowBase from passed rowVector
, type
and value
.
Definition at line 116 of file lprowbase.h.
References LPRowBase< R >::EQUAL, LPRowBase< R >::GREATER_EQUAL, soplex::infinity, LPRowBase< R >::isConsistent(), and LPRowBase< R >::LESS_EQUAL.
~LPRowBase | ( | ) |
Destructor.
Definition at line 144 of file lprowbase.h.
bool isConsistent | ( | ) | const |
Checks consistency.
Definition at line 265 of file lprowbase.h.
References DSVectorBase< R >::isConsistent().
Referenced by LPRowBase< R >::LPRowBase().
R lhs | ( | ) | const |
Left-hand side value.
Definition at line 211 of file lprowbase.h.
References LPRowBase< R >::left.
Referenced by SoPlex::_changeRowReal(), SoPlex::_getCompatibleColumns(), LPRowSetBase< Real >::add(), SPxLPBase< Real >::changeRow(), SoPlex::changeRowRational(), SoPlex::changeRowReal(), LPRowBase< R >::setType(), LPRowBase< R >::type(), and LPRowBase< R >::value().
R obj | ( | ) | const |
Objective coefficient value.
Definition at line 235 of file lprowbase.h.
References LPRowBase< R >::object.
Referenced by LPRowSetBase< Real >::add(), and SPxLPBase< Real >::changeRow().
R rhs | ( | ) | const |
Right-hand side value.
Definition at line 223 of file lprowbase.h.
References LPRowBase< R >::right.
Referenced by SoPlex::_changeRowReal(), SoPlex::_getCompatibleColumns(), LPRowSetBase< Real >::add(), SPxLPBase< Real >::changeRow(), SoPlex::changeRowRational(), SoPlex::changeRowReal(), LPRowBase< R >::setType(), LPRowBase< R >::type(), and LPRowBase< R >::value().
const SVectorBase<R>& rowVector | ( | ) | const |
Constraint row vector.
Definition at line 247 of file lprowbase.h.
References LPRowBase< R >::vec.
Referenced by SoPlex::_updateDecompComplementaryDualProblem(), SoPlex::_updateDecompComplementaryPrimalProblem(), LPRowSetBase< Real >::add(), and SPxLPBase< Real >::changeRow().
void setLhs | ( | const R & | p_left | ) |
Sets left-hand side value.
Definition at line 217 of file lprowbase.h.
Referenced by SPxLPBase< Real >::getRow(), soplex::MPSreadRows(), and SPxLPBase< Real >::readLPF().
void setObj | ( | const R & | p_obj | ) |
Sets objective coefficient value.
Definition at line 241 of file lprowbase.h.
Referenced by SPxLPBase< Real >::getRow().
void setRhs | ( | const R & | p_right | ) |
Sets right-hand side value.
Definition at line 229 of file lprowbase.h.
Referenced by SPxLPBase< Real >::getRow(), soplex::MPSreadRows(), and SPxLPBase< Real >::readLPF().
void setRowVector | ( | const DSVectorBase< R > & | p_vec | ) |
access constraint row vector.
Definition at line 253 of file lprowbase.h.
Referenced by SoPlex::_getCompatibleColumns(), SPxLPBase< Real >::getRow(), and SPxLPBase< Real >::readLPF().
void setType | ( | Type | p_type | ) |
Sets type of (in)equality.
Definition at line 169 of file lprowbase.h.
References LPRowBase< R >::EQUAL, LPRowBase< R >::GREATER_EQUAL, soplex::infinity, LPRowBase< R >::LESS_EQUAL, LPRowBase< R >::lhs(), MSG_ERROR, LPRowBase< R >::RANGE, and LPRowBase< R >::rhs().
Type type | ( | ) | const |
Gets type of row.
Definition at line 154 of file lprowbase.h.
References LPRowBase< R >::EQUAL, LPRowBase< R >::GREATER_EQUAL, soplex::infinity, LPRowBase< R >::LESS_EQUAL, LPRowBase< R >::lhs(), LPRowBase< R >::RANGE, and LPRowBase< R >::rhs().
Referenced by LPRowBase< R >::value().
R value | ( | ) | const |
Right hand side value of (in)equality.
This method returns \(\alpha\) for a LPRowBase in regular form. However, value() may only be called for LPRowBases with type() != RANGE
.
Definition at line 203 of file lprowbase.h.
References soplex::infinity, LPRowBase< R >::lhs(), LPRowBase< R >::RANGE, LPRowBase< R >::rhs(), and LPRowBase< R >::type().
|
friend |
Definition at line 47 of file lprowbase.h.
|
private |
left-hand side of the constraint
Definition at line 55 of file lprowbase.h.
Referenced by LPRowBase< R >::lhs().
|
private |
objective coefficient of corresponding slack variable s = vec times primal
Definition at line 57 of file lprowbase.h.
Referenced by LPRowBase< R >::obj().
|
private |
right-hand side of the constraint
Definition at line 56 of file lprowbase.h.
Referenced by LPRowBase< R >::rhs().
|
private |
the row vector
Definition at line 58 of file lprowbase.h.
Referenced by LPRowBase< R >::rowVector().