Abstract class representing a
A ConstrainedMinimizationProblem consists of an objective function to minimize, and a set of constraint functions that are constrained to be nonpositive.
In addition to the constraint functions, there may (optionally) be proxy constraint functions: a ConstrainedOptimizer will attempt to penalize these proxy constraint functions so as to satisfy the (non-proxy) constraints. Proxy constraints could be used if the constraints functions are difficult or impossible to optimize (e.g. if they're piecewise constant), in which case the proxy constraints should be some approximation of the original constraints that is well-enough behaved to permit successful optimization.
Returns the vector of constraint functions.
Letting g_i be the ith element of the constraints vector, the ith constraint will be g_i <= 0.
A tensor of constraint functions.
Returns the number of constraints.
An int containing the number of constraints.
ValueError: If the constraints (or proxy_constraints, if present) do not have fully-known shapes, OR if proxy_constraints are present, and the shapes of constraints and proxy_constraints are fully-known, but they're different.
Returns the objective function.
A 0d tensor that should be minimized.
Returns the optional vector of proxy constraint functions.
The difference between
proxy_constraints is that, when
proxy constraints are present, the
constraints are merely EVALUATED during
optimization, whereas the
proxy_constraints are DIFFERENTIATED. If there
are no proxy constraints, then the
constraints are both evaluated and
For example, if we want to impose constraints on step functions, then we
could use these functions for
constraints. However, because a step
function has zero gradient almost everywhere, we can't differentiate these
functions, so we would take
proxy_constraints to be some differentiable
A tensor of proxy constraint functions.