Scippy

SoPlex

Sequential object-oriented simPlex

LPRowBase< R > Class Template Reference

(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.
 
 LPRowBase (const LPRowBase< R > &row)
 Copy constructor.
 
template<class S >
 LPRowBase (const LPRowBase< S > &row)
 Copy constructor.
 
 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.
 
 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.
 
 ~LPRowBase ()
 Destructor.
 
Access / modification
Type type () const
 Gets type of row.
 
void setType (Type p_type)
 Sets type of (in)equality.
 
value () const
 Right hand side value of (in)equality.
 
lhs () const
 Left-hand side value.
 
void setLhs (const R &p_left)
 Sets left-hand side value.
 
rhs () const
 Right-hand side value.
 
void setRhs (const R &p_right)
 Sets right-hand side value.
 
obj () const
 Objective coefficient value.
 
void setObj (const R &p_obj)
 Sets objective coefficient value.
 
const SVectorBase< R > & rowVector () const
 Constraint row vector.
 
void setRowVector (const DSVectorBase< R > &p_vec)
 access constraint row vector.
 
Consistency check
bool isConsistent () const
 Checks consistency.
 

Private Attributes

Data
left
 left-hand side of the constraint
 
right
 right-hand side of the constraint
 
object
 objective coefficient of corresponding slack variable s = vec times primal
 
DSVectorBase< R > vec
 the row vector
 

Friends

template<class S >
class LPRowBase
 

Detailed Description

template<class R>
class soplex::LPRowBase< R >

(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.

Member Enumeration Documentation

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.

Constructor & Destructor Documentation

LPRowBase ( int  defDim = 0)
explicit

Constructs LPRowBase with a vector ready to hold defDim nonzeros.

Definition at line 87 of file lprowbase.h.

References LPRowBase< R >::isConsistent().

LPRowBase ( const LPRowBase< R > &  row)

Copy constructor.

Definition at line 94 of file lprowbase.h.

References LPRowBase< R >::isConsistent().

LPRowBase ( const LPRowBase< S > &  row)

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 
)
~LPRowBase ( )

Destructor.

Definition at line 141 of file lprowbase.h.

Member Function Documentation

bool isConsistent ( ) const

Checks consistency.

Definition at line 257 of file lprowbase.h.

References LPRowBase< R >::vec.

Referenced by LPRowBase< R >::LPRowBase().

R obj ( ) const

Objective coefficient value.

Definition at line 227 of file lprowbase.h.

References LPRowBase< R >::object.

Referenced by LPRowSetBase< Real >::add(), and SPxLPBase< Real >::changeRow().

const SVectorBase<R>& rowVector ( ) const

Constraint row vector.

Definition at line 239 of file lprowbase.h.

References LPRowBase< R >::vec.

Referenced by LPRowSetBase< Real >::add(), SPxLPBase< Real >::changeRow(), and SPxLPBase< Real >::doAddRow().

void setLhs ( const R &  p_left)

Sets left-hand side value.

Definition at line 209 of file lprowbase.h.

References LPRowBase< R >::left.

Referenced by SPxLPBase< Real >::getRow(), soplex::MPSreadRows(), and SPxLPBase< R >::readLPF().

void setObj ( const R &  p_obj)

Sets objective coefficient value.

Definition at line 233 of file lprowbase.h.

Referenced by SPxLPBase< Real >::getRow().

void setRhs ( const R &  p_right)

Sets right-hand side value.

Definition at line 221 of file lprowbase.h.

References LPRowBase< R >::right.

Referenced by SPxLPBase< Real >::getRow(), soplex::MPSreadRows(), and SPxLPBase< R >::readLPF().

void setRowVector ( const DSVectorBase< R > &  p_vec)

access constraint row vector.

Definition at line 245 of file lprowbase.h.

References LPRowBase< R >::vec.

Referenced by SPxLPBase< Real >::getRow(), and SPxLPBase< R >::readLPF().

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 195 of file lprowbase.h.

References soplex::infinity, LPRowBase< R >::lhs(), LPRowBase< R >::RANGE, LPRowBase< R >::rhs(), and LPRowBase< R >::type().

Friends And Related Function Documentation

friend class LPRowBase
friend

Definition at line 47 of file lprowbase.h.

Member Data Documentation

R left
private

left-hand side of the constraint

Definition at line 55 of file lprowbase.h.

Referenced by LPRowBase< R >::lhs(), LPRowBase< R >::LPRowBase(), LPRowBase< R >::setLhs(), and LPRowBase< R >::setType().

R object
private

objective coefficient of corresponding slack variable s = vec times primal

Definition at line 57 of file lprowbase.h.

Referenced by LPRowBase< R >::obj().

R right
private

right-hand side of the constraint

Definition at line 56 of file lprowbase.h.

Referenced by LPRowBase< R >::LPRowBase(), LPRowBase< R >::rhs(), LPRowBase< R >::setRhs(), and LPRowBase< R >::setType().

DSVectorBase<R> vec
private

the row vector

Definition at line 58 of file lprowbase.h.

Referenced by LPRowBase< R >::isConsistent(), LPRowBase< R >::rowVector(), and LPRowBase< R >::setRowVector().