Google OR-Tools v9.11
a fast and portable software suite for combinatorial optimization
|
#include <linear_solver.h>
Public Member Functions | |
MPConstraint (const MPConstraint &)=delete | |
This type is neither copyable nor movable. | |
MPConstraint & | operator= (const MPConstraint &)=delete |
const std::string & | name () const |
Returns the name of the constraint. | |
void | Clear () |
Clears all variables and coefficients. Does not clear the bounds. | |
void | SetCoefficient (const MPVariable *var, double coeff) |
double | GetCoefficient (const MPVariable *var) const |
const absl::flat_hash_map< const MPVariable *, double > & | terms () const |
double | lb () const |
Returns the lower bound. | |
double | ub () const |
Returns the upper bound. | |
void | SetLB (double lb) |
Sets the lower bound. | |
void | SetUB (double ub) |
Sets the upper bound. | |
void | SetBounds (double lb, double ub) |
Sets both the lower and upper bounds. | |
bool | is_lazy () const |
Advanced usage: returns true if the constraint is "lazy" (see below). | |
void | set_is_lazy (bool laziness) |
const MPVariable * | indicator_variable () const |
bool | indicator_value () const |
int | index () const |
Returns the index of the constraint in the MPSolver::constraints_. | |
double | dual_value () const |
MPSolver::BasisStatus | basis_status () const |
Protected Member Functions | |
MPConstraint (int index, double lb, double ub, const std::string &name, MPSolverInterface *const interface_in) | |
void | set_dual_value (double dual_value) |
Friends | |
class | MPSolver |
class | MPSolverInterface |
class | CBCInterface |
class | CLPInterface |
class | GLPKInterface |
class | SCIPInterface |
class | SLMInterface |
class | GurobiInterface |
class | CplexInterface |
class | XpressInterface |
class | GLOPInterface |
class | BopInterface |
class | SatInterface |
class | PdlpInterface |
class | HighsInterface |
class | KnapsackInterface |
The class for constraints of a Mathematical Programming (MP) model.
A constraint is represented as a linear equation or inequality.
Definition at line 1284 of file linear_solver.h.
|
delete |
This type is neither copyable nor movable.
|
inlineprotected |
Constructor. A constraint points to a single MPSolverInterface that is specified in the constructor. A constraint cannot belong to several models.
Definition at line 1401 of file linear_solver.h.
MPSolver::BasisStatus operations_research::MPConstraint::basis_status | ( | ) | const |
Advanced usage: returns the basis status of the constraint.
It is only available for continuous problems).
Note that if a constraint "linear_expression in [lb, ub]" is transformed into "linear_expression + slack = 0" with slack in [-ub, -lb], then this status is the same as the status of the slack variable with AT_UPPER_BOUND and AT_LOWER_BOUND swapped.
This is done lazily as this method is expected to be rarely used.
Definition at line 168 of file linear_solver.cc.
void operations_research::MPConstraint::Clear | ( | ) |
Clears all variables and coefficients. Does not clear the bounds.
Definition at line 145 of file linear_solver.cc.
double operations_research::MPConstraint::dual_value | ( | ) | const |
Advanced usage: returns the dual value of the constraint in the current solution (only available for continuous problems).
Definition at line 159 of file linear_solver.cc.
double operations_research::MPConstraint::GetCoefficient | ( | const MPVariable * | var | ) | const |
Gets the coefficient of a given variable on the constraint (which is 0 if the variable does not appear in the constraint).
Definition at line 113 of file linear_solver.cc.
|
inline |
Returns the index of the constraint in the MPSolver::constraints_.
Definition at line 1358 of file linear_solver.h.
|
inline |
Definition at line 1355 of file linear_solver.h.
|
inline |
Definition at line 1354 of file linear_solver.h.
|
inline |
Advanced usage: returns true if the constraint is "lazy" (see below).
Definition at line 1337 of file linear_solver.h.
|
inline |
Returns the lower bound.
Definition at line 1322 of file linear_solver.h.
|
inline |
Returns the name of the constraint.
Definition at line 1293 of file linear_solver.h.
|
delete |
|
inlineprotected |
Definition at line 1413 of file linear_solver.h.
|
inline |
Advanced usage: sets the constraint "laziness".
This is only supported for SCIP and has no effect on other solvers.
When laziness is true, the constraint is only considered by the Linear Programming solver if its current solution violates the constraint. In this case, the constraint is definitively added to the problem. This may be useful in some MIP problems, and may have a dramatic impact on performance.
For more info see: http://tinyurl.com/lazy-constraints.
Definition at line 1352 of file linear_solver.h.
void operations_research::MPConstraint::SetBounds | ( | double | lb, |
double | ub ) |
Sets both the lower and upper bounds.
Definition at line 150 of file linear_solver.cc.
void operations_research::MPConstraint::SetCoefficient | ( | const MPVariable * | var, |
double | coeff ) |
Sets the coefficient of the variable on the constraint.
If the variable does not belong to the solver, the function just returns, or crashes in non-opt mode.
If setting a coefficient to 0 when this coefficient did not exist or was already 0, do nothing: skip interface_->SetCoefficient() and do not store a coefficient in the map. Note that if the coefficient being set to 0 did exist and was not 0, we do have to keep a 0 in the coefficients_ map, because the extraction of the constraint might rely on it, depending on the underlying solver.
Definition at line 119 of file linear_solver.cc.
|
inline |
Sets the lower bound.
Definition at line 1328 of file linear_solver.h.
|
inline |
Sets the upper bound.
Definition at line 1331 of file linear_solver.h.
|
inline |
Returns a map from variables to their coefficients in the constraint.
If a variable is not present in the map, then its coefficient is zero.
Definition at line 1317 of file linear_solver.h.
|
inline |
Returns the upper bound.
Definition at line 1325 of file linear_solver.h.
|
friend |
Definition at line 1392 of file linear_solver.h.
|
friend |
Definition at line 1383 of file linear_solver.h.
|
friend |
Definition at line 1384 of file linear_solver.h.
|
friend |
Definition at line 1389 of file linear_solver.h.
|
friend |
Definition at line 1391 of file linear_solver.h.
|
friend |
Definition at line 1385 of file linear_solver.h.
|
friend |
Definition at line 1388 of file linear_solver.h.
|
friend |
Definition at line 1395 of file linear_solver.h.
|
friend |
Definition at line 1396 of file linear_solver.h.
|
friend |
Definition at line 1381 of file linear_solver.h.
|
friend |
Definition at line 1382 of file linear_solver.h.
|
friend |
Definition at line 1394 of file linear_solver.h.
|
friend |
Definition at line 1393 of file linear_solver.h.
|
friend |
Definition at line 1386 of file linear_solver.h.
|
friend |
Definition at line 1387 of file linear_solver.h.
|
friend |
Definition at line 1390 of file linear_solver.h.