Expressions¶
CVXPY represents mathematical objects as expression trees. An expression
tree is a collection of mathematical expressions linked together by one or more
atoms. Expression trees are encoded as instances of the
Expression
class, and each
Leaf
in a tree is a
Variable
,
Parameter
, or
Constant
.
Expression¶
-
class
cvxpy.expressions.expression.
Expression
[source]¶ Bases:
cvxpy.utilities.canonical.Canonical
A mathematical expression in a convex optimization problem.
Overloads many operators to allow for convenient creation of compound expressions (e.g., the sum of two expressions) and constraints.
-
property
T
¶ The transpose of the expression.
- Type
-
__pow__
(power)[source]¶ Raise expression to a power.
- Parameters
power (
float
) – The power to which to raise the expression.- Returns
The expression raised to
power
.- Return type
-
property
curvature
¶ The curvature of the expression.
- Type
str
-
abstract property
domain
¶ The constraints describing the closure of the region where the expression is finite.
- Type
list
-
abstract property
grad
¶ Gives the (sub/super)gradient of the expression w.r.t. each variable.
Matrix expressions are vectorized, so the gradient is a matrix.
- Returns
A map of variable to SciPy CSC sparse matrix; None if a variable value is missing.
- Return type
dict
-
is_dcp
(dpp=False)[source]¶ Checks whether the Expression is DCP.
- Parameters
dpp (
bool
, optional) – If True, enforce the disciplined parametrized programming (DPP) ruleset; only relevant when the problem involves Parameters.- Returns
True if the Expression is DCP, False otherwise.
- Return type
bool
-
is_dgp
(dpp=False)[source]¶ Checks whether the Expression is log-log DCP.
- Returns
True if the Expression is log-log DCP, False otherwise.
- Return type
bool
-
is_dqcp
()[source]¶ Checks whether the Expression is DQCP.
- Returns
True if the Expression is DQCP, False otherwise.
- Return type
bool
-
property
ndim
¶ The number of dimensions in the expression’s shape.
- Type
int
-
abstract property
shape
¶ The expression dimensions.
- Type
tuple
-
property
sign
¶ The sign of the expression.
- Type
str
-
property
size
¶ The number of entries in the expression.
- Type
int
-
abstract property
value
¶ The numeric value of the expression.
- Type
NumPy.ndarray or None
-
property
Leaf¶
-
class
cvxpy.expressions.leaf.
Leaf
(shape, value=None, nonneg=False, nonpos=False, complex=False, imag=False, symmetric=False, diag=False, PSD=False, NSD=False, hermitian=False, boolean=False, integer=False, sparsity=None, pos=False, neg=False)[source]¶ Bases:
cvxpy.expressions.expression.Expression
A leaf node of an expression tree; i.e., a Variable, Constant, or Parameter.
A leaf may carry attributes that constrain the set values permissible for it. Leafs can have no more than one attribute, with the exception that a leaf may be both
nonpos
andnonneg
or bothboolean
in some indices andinteger
in others.An error is raised if a leaf is assigned a value that contradicts one or more of its attributes. See the
project
method for a convenient way to project a value onto a leaf’s domain.- Parameters
shape (
tuple
orint
) – The leaf dimensions. Either an integer n for a 1D shape, or a tuple where the semantics are the same as NumPy ndarray shapes. Shapes cannot be more than 2D.value (
numeric type
) – A value to assign to the leaf.nonneg (
bool
) – Is the variable constrained to be nonnegative?nonpos (
bool
) – Is the variable constrained to be nonpositive?complex (
bool
) – Is the variable complex valued?symmetric (
bool
) – Is the variable symmetric?diag (
bool
) – Is the variable diagonal?PSD (
bool
) – Is the variable constrained to be positive semidefinite?NSD (
bool
) – Is the variable constrained to be negative semidefinite?Hermitian (
bool
) – Is the variable Hermitian?boolean (
bool
orlist
oftuple
) – Is the variable boolean? True, which constrains the entire Variable to be boolean, False, or a list of indices which should be constrained as boolean, where each index is a tuple of length exactly equal to the length of shape.integer (
bool
orlist
oftuple
) – Is the variable integer? The semantics are the same as the boolean argument.sparsity (
list
oftuplewith
) – Fixed sparsity pattern for the variable.pos (
bool
) – Is the variable positive?neg (
bool
) – Is the variable negative?
-
property
T
¶ The transpose of the expression.
- Type
-
property
ndim
¶ The number of dimensions in the expression’s shape.
- Type
int
-
project
(val)[source]¶ Project value onto the attribute set of the leaf.
A sensible idiom is
leaf.value = leaf.project(val)
.- Parameters
val (
numeric type
) – The value assigned.- Returns
The value rounded to the attribute type.
- Return type
numeric type
-
property
shape
¶ The dimensions of the expression.
- Type
tuple
-
property
size
¶ The number of entries in the expression.
- Type
int
-
property
value
¶ The numeric value of the parameter.
- Type
NumPy.ndarray or None
Variable¶
-
class
cvxpy.expressions.variable.
Variable
(shape=(), name=None, var_id=None, **kwargs)[source]¶ Bases:
cvxpy.expressions.leaf.Leaf
The optimization variables in a problem.
-
property
T
¶ The transpose of the expression.
- Type
-
property
ndim
¶ The number of dimensions in the expression’s shape.
- Type
int
-
project
(val)¶ Project value onto the attribute set of the leaf.
A sensible idiom is
leaf.value = leaf.project(val)
.- Parameters
val (
numeric type
) – The value assigned.- Returns
The value rounded to the attribute type.
- Return type
numeric type
-
project_and_assign
(val)¶ Project and assign a value to the variable.
-
property
shape
¶ The dimensions of the expression.
- Type
tuple
-
property
size
¶ The number of entries in the expression.
- Type
int
-
property
value
¶ The numeric value of the parameter.
- Type
NumPy.ndarray or None
-
property
Parameter¶
-
class
cvxpy.expressions.constants.parameter.
Parameter
(shape=(), name=None, value=None, id=None, **kwargs)[source]¶ Bases:
cvxpy.expressions.leaf.Leaf
Parameters in optimization problems.
Parameters are constant expressions whose value may be specified after problem creation. The only way to modify a problem after its creation is through parameters. For example, you might choose to declare the hyper-parameters of a machine learning model to be Parameter objects; more generally, Parameters are useful for computing trade-off curves.
-
property
T
¶ The transpose of the expression.
- Type
-
property
ndim
¶ The number of dimensions in the expression’s shape.
- Type
int
-
project
(val)¶ Project value onto the attribute set of the leaf.
A sensible idiom is
leaf.value = leaf.project(val)
.- Parameters
val (
numeric type
) – The value assigned.- Returns
The value rounded to the attribute type.
- Return type
numeric type
-
project_and_assign
(val)¶ Project and assign a value to the variable.
-
property
shape
¶ The dimensions of the expression.
- Type
tuple
-
property
size
¶ The number of entries in the expression.
- Type
int
-
property
value
¶ The numeric value of the parameter.
- Type
NumPy.ndarray or None
-
property
Constant¶
-
class
cvxpy.expressions.constants.
Constant
(value)[source]¶ Bases:
cvxpy.expressions.leaf.Leaf
A constant value.
Raw numerical constants (Python primite types, NumPy ndarrays, and NumPy matrices) are implicitly cast to constants via Expression operator overloading. For example, if
x
is an expression andc
is a raw constant, thenx + c
creates an expression by castingc
to a Constant.-
property
T
¶ The transpose of the expression.
- Type
-
property
ndim
¶ The number of dimensions in the expression’s shape.
- Type
int
-
property
shape
¶ Returns the (row, col) dimensions of the expression.
-
property
size
¶ The number of entries in the expression.
- Type
int
-
property
value
¶ The numeric value of the constant.
- Type
NumPy.ndarray or None
-
property