C++ Reference

C++ Reference: Linear solver

LinearExpr

Detailed Description

LinearExpr models a quantity that is linear in the decision variables (MPVariable) of an optimization problem, i.e.

offset + sum_{i in S} a_i*x_i,

where the a_i and offset are constants and the x_i are MPVariables. You can use a LinearExpr "linear_expr" with an MPSolver "solver" to:

  • Set as the objective of your optimization problem, e.g.

    solver.MutableObjective()->MaximizeLinearExpr(linear_expr);

  • Create a constraint in your optimization, e.g.

    solver.MakeRowConstraint(linear_expr1 <= linear_expr2);

  • Get the value of the quantity after solving, e.g.

    solver.Solve(); linear_expr.SolutionValue();

LinearExpr is allowed to delete variables with coefficient zero from the map, but is not obligated to do so.

Definition at line 114 of file linear_expr.h.

Public Member Functions

 LinearExpr ()
 
 LinearExpr (double constant)
 Possible implicit conversions are intentional. More...
 
 LinearExpr (const MPVariable *var)
 
LinearExproperator+= (const LinearExpr &rhs)
 
LinearExproperator-= (const LinearExpr &rhs)
 
LinearExproperator*= (double rhs)
 
LinearExproperator/= (double rhs)
 
LinearExpr operator- () const
 
double offset () const
 
const absl::flat_hash_map< const MPVariable *, double > & terms () const
 
double SolutionValue () const
 Evaluates the value of this expression at the solution found. More...
 
std::string ToString () const
 A human readable representation of this. More...
 

Static Public Member Functions

static LinearExpr NotVar (LinearExpr var)
 Returns 1-var. More...
 

Constructor & Destructor Documentation

◆ LinearExpr() [1/3]

◆ LinearExpr() [2/3]

LinearExpr ( double  constant)

Possible implicit conversions are intentional.

◆ LinearExpr() [3/3]

LinearExpr ( const MPVariable var)

Member Function Documentation

◆ NotVar()

static LinearExpr NotVar ( LinearExpr  var)
static

Returns 1-var.

NOTE(user): if var is binary variable, this corresponds to the logical negation of var. Passing by value is intentional, see the discussion on binary ops.

◆ offset()

double offset ( ) const
inline

Definition at line 142 of file linear_expr.h.

◆ operator*=()

LinearExpr& operator*= ( double  rhs)

◆ operator+=()

LinearExpr& operator+= ( const LinearExpr rhs)

◆ operator-()

LinearExpr operator- ( ) const

◆ operator-=()

LinearExpr& operator-= ( const LinearExpr rhs)

◆ operator/=()

LinearExpr& operator/= ( double  rhs)

◆ SolutionValue()

double SolutionValue ( ) const

Evaluates the value of this expression at the solution found.

It must be called only after calling MPSolver::Solve.

◆ terms()

const absl::flat_hash_map<const MPVariable*, double>& terms ( ) const
inline

Definition at line 143 of file linear_expr.h.

◆ ToString()

std::string ToString ( ) const

A human readable representation of this.

Variables will be printed in order of lowest index first.


The documentation for this class was generated from the following file: