This data structure stores a linear expression of the variables (Cols) and also has a constant component.
There are several ways to access and modify the contents of this container.
e[v]=5; e[v]+=12; e.erase(v);
or you can also iterate through its elements.
double s=0; for(LpBase::Expr::ConstCoeffIt i(e);i!=INVALID;++i) s+=*i * primal(i);
(This code computes the primal value of the expression).
double
's) and variables (Cols) directly convert to an Expr and the usual linear operations are defined, so v+w 2*v-3.12*(v-w/2)+2 v*2.1+(3*v+(v*12+w+6)*3)/2
e=v+w; e+=2*v-3.12*(v-w/2)+2; e*=3.4; e/=5;
*e=12;
double c=*e;
#include <lemon/lp_base.h>
Classes | |
class | CoeffIt |
Iterator over the expression. More... | |
class | ConstCoeffIt |
Const iterator over the expression. More... | |
Public Types | |
typedef LpBase::Col | Key |
The key type of the expression. | |
typedef LpBase::Value | Value |
The value type of the expression. | |
Public Member Functions | |
Expr () | |
Default constructor. | |
Expr (const Col &c) | |
Construct an expression from a column. | |
Expr (const Value &v) | |
Construct an expression from a constant. | |
Value | operator[] (const Col &c) const |
Returns the coefficient of the column. | |
Value & | operator[] (const Col &c) |
Returns the coefficient of the column. | |
void | set (const Col &c, const Value &v) |
Sets the coefficient of the column. | |
Value & | operator* () |
Returns the constant component of the expression. | |
const Value & | operator* () const |
Returns the constant component of the expression. | |
void | simplify (Value epsilon=0.0) |
Removes the coefficients which's absolute value does not exceed epsilon . It also sets to zero the constant component, if it does not exceed epsilon in absolute value. | |
void | clear () |
Sets all coefficients and the constant component to 0. | |
Expr & | operator+= (const Expr &e) |
Compound assignment. | |
Expr & | operator-= (const Expr &e) |
Compound assignment. | |
Expr & | operator*= (const Value &v) |
Multiply with a constant. | |
Expr & | operator/= (const Value &c) |
Division with a constant. | |
Related Functions | |
(Note that these are not member functions.) | |
LpBase::Expr | operator+ (const LpBase::Expr &a, const LpBase::Expr &b) |
Addition. | |
LpBase::Expr | operator- (const LpBase::Expr &a, const LpBase::Expr &b) |
Substraction. | |
LpBase::Expr | operator* (const LpBase::Expr &a, const LpBase::Value &b) |
Multiply with constant. | |
LpBase::Expr | operator* (const LpBase::Value &a, const LpBase::Expr &b) |
Multiply with constant. | |
LpBase::Expr | operator/ (const LpBase::Expr &a, const LpBase::Value &b) |
Divide with constant. |
Expr | ( | ) | [inline] |
Construct an empty expression, the coefficients and the constant component are initialized to zero.
Construct an expression, which has a term with c
variable and 1.0 coefficient.