Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes

LpBase Class Reference


Detailed Description

Usually this class is not used directly, please use one of the concrete implementations of the solver interface.

#include <lemon/lp_base.h>

Inheritance diagram for LpBase:

List of all members.

Classes

class  Col
 Refer to a column of the LP. More...
class  ColIt
 Iterator for iterate over the columns of an LP problem. More...
class  Constr
 Linear constraint. More...
class  DualExpr
 Linear expression of rows. More...
class  Expr
 Linear expression of variables and a constant component. More...
class  Row
 Refer to a row of the LP. More...
class  RowIt
 Iterator for iterate over the rows of an LP problem. More...

Public Types

enum  SolveExitStatus { SOLVED = 0, UNSOLVED = 1 }
 

Possible outcomes of an LP solving procedure.

More...
enum  Sense { MIN, MAX }
 

Direction of the optimization.

More...
enum  MessageLevel {
  MESSAGE_NOTHING, MESSAGE_ERROR, MESSAGE_WARNING, MESSAGE_NORMAL,
  MESSAGE_VERBOSE
}
 

Enum for messageLevel() parameter.

More...
typedef double Value
 The floating point type used by the solver.

Public Member Functions

virtual ~LpBase ()
 Virtual destructor.
const char * solverName () const
 Gives back the name of the solver.
Build Up and Modify the LP
Col addCol ()
 Add a new empty column (i.e a new variable) to the LP.
template<class T >
int addColSet (T &t)
 Adds several new columns (i.e variables) at once.
void col (Col c, const DualExpr &e)
 Set a column (i.e a dual constraint) of the LP.
DualExpr col (Col c) const
 Get a column (i.e a dual constraint) of the LP.
Col addCol (const DualExpr &e, Value o=0)
 Add a new column to the LP.
Row addRow ()
 Add a new empty row (i.e a new constraint) to the LP.
template<class T >
int addRowSet (T &t)
 Add several new rows (i.e constraints) at once.
void row (Row r, Value l, const Expr &e, Value u)
 Set a row (i.e a constraint) of the LP.
void row (Row r, const Constr &c)
 Set a row (i.e a constraint) of the LP.
Expr row (Row r) const
 Get a row (i.e a constraint) of the LP.
Row addRow (Value l, const Expr &e, Value u)
 Add a new row (i.e a new constraint) to the LP.
Row addRow (const Constr &c)
 Add a new row (i.e a new constraint) to the LP.
void erase (Col c)
 Erase a column (i.e a variable) from the LP.
void erase (Row r)
 Erase a row (i.e a constraint) from the LP.
std::string colName (Col c) const
 Get the name of a column.
void colName (Col c, const std::string &name)
 Set the name of a column.
Col colByName (const std::string &name) const
 Get the column by its name.
std::string rowName (Row r) const
 Get the name of a row.
void rowName (Row r, const std::string &name)
 Set the name of a row.
Row rowByName (const std::string &name) const
 Get the row by its name.
void coeff (Row r, Col c, Value val)
 Set an element of the coefficient matrix of the LP.
Value coeff (Row r, Col c) const
 Get an element of the coefficient matrix of the LP.
void colLowerBound (Col c, Value value)
 Set the lower bound of a column (i.e a variable)
Value colLowerBound (Col c) const
 Get the lower bound of a column (i.e a variable)
template<class T >
void colLowerBound (T &t, Value value)
 Set the lower bound of several columns (i.e variables) at once.
void colUpperBound (Col c, Value value)
 Set the upper bound of a column (i.e a variable)
Value colUpperBound (Col c) const
 Get the upper bound of a column (i.e a variable)
template<class T >
void colUpperBound (T &t, Value value)
 Set the upper bound of several columns (i.e variables) at once.
void colBounds (Col c, Value lower, Value upper)
 Set the lower and the upper bounds of a column (i.e a variable)
template<class T >
void colBounds (T &t, Value lower, Value upper)
 Set the lower and the upper bound of several columns (i.e variables) at once.
void rowLowerBound (Row r, Value value)
 Set the lower bound of a row (i.e a constraint)
Value rowLowerBound (Row r) const
 Get the lower bound of a row (i.e a constraint)
void rowUpperBound (Row r, Value value)
 Set the upper bound of a row (i.e a constraint)
Value rowUpperBound (Row r) const
 Get the upper bound of a row (i.e a constraint)
void objCoeff (Col c, Value v)
 Set an element of the objective function.
Value objCoeff (Col c) const
 Get an element of the objective function.
void obj (const Expr &e)
 Set the objective function.
Expr obj () const
 Get the objective function.
void sense (Sense sense)
 Set the direction of optimization.
Sense sense () const
 Query the direction of the optimization.
void max ()
 Set the sense to maximization.
void min ()
 Set the sense to maximization.
void clear ()
 Clears the problem.
void messageLevel (MessageLevel level)
 Sets the message level of the solver.

Static Public Member Functions

static int id (const Col &col)
 Returns the ID of the column.
static Col colFromId (int id)
 Returns the column with the given ID.
static int id (const Row &row)
 Returns the ID of the row.
static Row rowFromId (int id)
 Returns the row with the given ID.

Static Public Attributes

static const Value INF
 The infinity constant.
static const Value NaN
 The not a number constant.

Member Enumeration Documentation

Enumerator:
SOLVED 

= 0. It means that the problem has been successfully solved: either an optimal solution has been found or infeasibility/unboundedness has been proved.

UNSOLVED 

= 1. Any other case (including the case when some user specified limit has been exceeded).

enum Sense
Enumerator:
MIN 

Minimization.

MAX 

Maximization.

Enumerator:
MESSAGE_NOTHING 

No output (default value).

MESSAGE_ERROR 

Error messages only.

MESSAGE_WARNING 

Warnings.

MESSAGE_NORMAL 

Normal output.

MESSAGE_VERBOSE 

Verbose output.


Member Function Documentation

static Col colFromId ( int  id) [inline, static]
Precondition:
The argument should be a valid column ID in the LP problem.
static Row rowFromId ( int  id) [inline, static]
Precondition:
The argument should be a valid row ID in the LP problem.
int addColSet ( T &  t) [inline]

This magic function takes a container as its argument and fills its elements with new columns (i.e. variables)

Parameters:
tcan be

  • a standard STL compatible iterable container with Col as its values_type like
           std::vector<LpBase::Col>
           std::list<LpBase::Col>
    
  • a standard STL compatible iterable container with Col as its mapped_type like
           std::map<AnyType,LpBase::Col>
    
  • an iterable lemon write map like
           ListGraph::NodeMap<LpBase::Col>
           ListGraph::ArcMap<LpBase::Col>
    
Returns:
The number of the created column.
void col ( Col  c,
const DualExpr e 
) [inline]
Parameters:
cis the column to be modified
eis a dual linear expression (see DualExpr) a better one.
DualExpr col ( Col  c) const [inline]
Parameters:
cis the column to get
Returns:
the dual expression associated to the column
Col addCol ( const DualExpr e,
Value  o = 0 
) [inline]
Parameters:
eis a dual linear expression (see DualExpr)
ois the corresponding component of the objective function. It is 0 by default.
Returns:
The created column.
Row addRow ( ) [inline]

This function adds a new empty row (i.e a new constraint) to the LP.

Returns:
The created row
int addRowSet ( T &  t) [inline]

This magic function takes a container as its argument and fills its elements with new row (i.e. variables)

Parameters:
tcan be

  • a standard STL compatible iterable container with Row as its values_type like
           std::vector<LpBase::Row>
           std::list<LpBase::Row>
    
  • a standard STL compatible iterable container with Row as its mapped_type like
           std::map<AnyType,LpBase::Row>
    
  • an iterable lemon write map like
           ListGraph::NodeMap<LpBase::Row>
           ListGraph::ArcMap<LpBase::Row>
    
Returns:
The number of rows created.
void row ( Row  r,
Value  l,
const Expr e,
Value  u 
) [inline]
Parameters:
ris the row to be modified
lis lower bound (-INF means no bound)
eis a linear expression (see Expr)
uis the upper bound (INF means no bound)
void row ( Row  r,
const Constr c 
) [inline]
Parameters:
ris the row to be modified
cis a linear expression (see Constr)
Expr row ( Row  r) const [inline]
Parameters:
ris the row to get
Returns:
the expression associated to the row
Row addRow ( Value  l,
const Expr e,
Value  u 
) [inline]
Parameters:
lis the lower bound (-INF means no bound)
eis a linear expression (see Expr)
uis the upper bound (INF means no bound)
Returns:
The created row.
Row addRow ( const Constr c) [inline]
Parameters:
cis a linear expression (see Constr)
Returns:
The created row.
void erase ( Col  c) [inline]
Parameters:
cis the column to be deleted
void erase ( Row  r) [inline]
Parameters:
ris the row to be deleted
std::string colName ( Col  c) const [inline]
Parameters:
cis the coresponding column
Returns:
The name of the colunm
void colName ( Col  c,
const std::string &  name 
) [inline]
Parameters:
cis the coresponding column
nameThe name to be given
Col colByName ( const std::string &  name) const [inline]
Parameters:
nameThe name of the column
Returns:
the proper column or INVALID
std::string rowName ( Row  r) const [inline]
Parameters:
ris the coresponding row
Returns:
The name of the row
void rowName ( Row  r,
const std::string &  name 
) [inline]
Parameters:
ris the coresponding row
nameThe name to be given
Row rowByName ( const std::string &  name) const [inline]
Parameters:
nameThe name of the row
Returns:
the proper row or INVALID
void coeff ( Row  r,
Col  c,
Value  val 
) [inline]
Parameters:
ris the row of the element to be modified
cis the column of the element to be modified
valis the new value of the coefficient
Value coeff ( Row  r,
Col  c 
) const [inline]
Parameters:
ris the row of the element
cis the column of the element
Returns:
the corresponding coefficient
void colLowerBound ( Col  c,
Value  value 
) [inline]

The lower bound of a variable (column) has to be given by an extended number of type Value, i.e. a finite number of type Value or -INF.

Value colLowerBound ( Col  c) const [inline]

This function returns the lower bound for column (variable) c (this might be -INF as well).

Returns:
The lower bound for column c
void colLowerBound ( T &  t,
Value  value 
) [inline]

This magic function takes a container as its argument and applies the function on all of its elements. The lower bound of a variable (column) has to be given by an extended number of type Value, i.e. a finite number of type Value or -INF.

void colUpperBound ( Col  c,
Value  value 
) [inline]

The upper bound of a variable (column) has to be given by an extended number of type Value, i.e. a finite number of type Value or INF.

Value colUpperBound ( Col  c) const [inline]

This function returns the upper bound for column (variable) c (this might be INF as well).

Returns:
The upper bound for column c
void colUpperBound ( T &  t,
Value  value 
) [inline]

This magic function takes a container as its argument and applies the function on all of its elements. The upper bound of a variable (column) has to be given by an extended number of type Value, i.e. a finite number of type Value or INF.

void colBounds ( Col  c,
Value  lower,
Value  upper 
) [inline]

The lower and the upper bounds of a variable (column) have to be given by an extended number of type Value, i.e. a finite number of type Value, -INF or INF.

void colBounds ( T &  t,
Value  lower,
Value  upper 
) [inline]

This magic function takes a container as its argument and applies the function on all of its elements. The lower and the upper bounds of a variable (column) have to be given by an extended number of type Value, i.e. a finite number of type Value, -INF or INF.

void rowLowerBound ( Row  r,
Value  value 
) [inline]

The lower bound of a constraint (row) has to be given by an extended number of type Value, i.e. a finite number of type Value or -INF.

Value rowLowerBound ( Row  r) const [inline]

This function returns the lower bound for row (constraint) c (this might be -INF as well).

Returns:
The lower bound for row r
void rowUpperBound ( Row  r,
Value  value 
) [inline]

The upper bound of a constraint (row) has to be given by an extended number of type Value, i.e. a finite number of type Value or -INF.

Value rowUpperBound ( Row  r) const [inline]

This function returns the upper bound for row (constraint) c (this might be -INF as well).

Returns:
The upper bound for row r
void obj ( const Expr e) [inline]
Parameters:
eis a linear expression of type Expr.
Expr obj ( ) const [inline]
Returns:
the objective function as a linear expression of type Expr.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines