All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes
LpBase Class Referenceabstract

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:

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...
 
class  UnsupportedFormatError
 Unsupported file format exception. 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. More...
 
void col (Col c, const DualExpr &e)
 Set a column (i.e a dual constraint) of the LP. More...
 
DualExpr col (Col c) const
 Get a column (i.e a dual constraint) of the LP. More...
 
Col addCol (const DualExpr &e, Value o=0)
 Add a new column to the LP. More...
 
Row addRow ()
 Add a new empty row (i.e a new constraint) to the LP. More...
 
template<class T >
int addRowSet (T &t)
 Add several new rows (i.e constraints) at once. More...
 
void row (Row r, Value l, const Expr &e, Value u)
 Set a row (i.e a constraint) of the LP. More...
 
void row (Row r, const Constr &c)
 Set a row (i.e a constraint) of the LP. More...
 
Expr row (Row r) const
 Get a row (i.e a constraint) of the LP. More...
 
Row addRow (Value l, const Expr &e, Value u)
 Add a new row (i.e a new constraint) to the LP. More...
 
Row addRow (const Constr &c)
 Add a new row (i.e a new constraint) to the LP. More...
 
void erase (Col c)
 Erase a column (i.e a variable) from the LP. More...
 
void erase (Row r)
 Erase a row (i.e a constraint) from the LP. More...
 
std::string colName (Col c) const
 Get the name of a column. More...
 
void colName (Col c, const std::string &name)
 Set the name of a column. More...
 
Col colByName (const std::string &name) const
 Get the column by its name. More...
 
std::string rowName (Row r) const
 Get the name of a row. More...
 
void rowName (Row r, const std::string &name)
 Set the name of a row. More...
 
Row rowByName (const std::string &name) const
 Get the row by its name. More...
 
void coeff (Row r, Col c, Value val)
 Set an element of the coefficient matrix of the LP. More...
 
Value coeff (Row r, Col c) const
 Get an element of the coefficient matrix of the LP. More...
 
void colLowerBound (Col c, Value value)
 Set the lower bound of a column (i.e a variable) More...
 
Value colLowerBound (Col c) const
 Get the lower bound of a column (i.e a variable) More...
 
template<class T >
void colLowerBound (T &t, Value value)
 Set the lower bound of several columns (i.e variables) at once. More...
 
void colUpperBound (Col c, Value value)
 Set the upper bound of a column (i.e a variable) More...
 
Value colUpperBound (Col c) const
 Get the upper bound of a column (i.e a variable) More...
 
template<class T >
void colUpperBound (T &t, Value value)
 Set the upper bound of several columns (i.e variables) at once. More...
 
void colBounds (Col c, Value lower, Value upper)
 Set the lower and the upper bounds of a column (i.e a variable) More...
 
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. More...
 
void rowLowerBound (Row r, Value value)
 Set the lower bound of a row (i.e a constraint) More...
 
Value rowLowerBound (Row r) const
 Get the lower bound of a row (i.e a constraint) More...
 
void rowUpperBound (Row r, Value value)
 Set the upper bound of a row (i.e a constraint) More...
 
Value rowUpperBound (Row r) const
 Get the upper bound of a row (i.e a constraint) More...
 
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. More...
 
Expr obj () const
 Get the objective function. More...
 
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 ()
 Clear the problem.
 
void messageLevel (MessageLevel level)
 Set the message level of the solver.
 
void write (std::string file, std::string format="MPS") const
 Write the problem to a file in the given format. More...
 

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. More...
 
static int id (const Row &row)
 Returns the ID of the row.
 
static Row rowFromId (int id)
 Returns the row with the given ID. More...
 

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)
inlinestatic
Precondition
The argument should be a valid column ID in the LP problem.
static Row rowFromId ( int  id)
inlinestatic
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.
void write ( std::string  file,
std::string  format = "MPS" 
) const
inline

This function writes the problem to a file in the given format. Different solver backends may support different formats. Trying to write in an unsupported format will trigger UnsupportedFormatError. For the supported formats, visit the documentation of the base class of the related backends (CplexBase, GlpkBase etc.)

Parameters
fileThe file path
formatThe output file format.