AxisAlignedEllipsoidalSet

(class from pyomo.contrib.pyros.uncertainty_sets)

class pyomo.contrib.pyros.uncertainty_sets.AxisAlignedEllipsoidalSet(center, half_lengths)[source]

Bases: UncertaintySet

An axis-aligned ellipsoidal region.

Parameters:
  • center ((N,) array_like) – Center of the ellipsoid.

  • half_lengths ((N,) array_like) – Semi-axis lengths of the ellipsoid.

See also

EllipsoidalSet

A general ellipsoidal region.

Notes

The \(n\)-dimensional axis-aligned ellipsoidal set is defined by

\[\begin{split}\left\{ q \in \mathbb{R}^n\, \middle|\, \begin{array}{l} \displaystyle \sum_{\substack{i = 1 \\ \alpha_i > 0}}^n \bigg( \frac{q_i - q_i^0}{\alpha_i}\bigg)^2 \leq 1 \\ q_i = q_i^0\quad\forall\,i \,:\,\alpha_i = 0 \end{array} \right\}\end{split}\]

in which \(q^0 \in \mathbb{R}^n\) refers to center, and \(\alpha \in \mathbb{R}_{+}^n\) refers to half_lengths.

Examples

3D origin-centered unit ball:

>>> from pyomo.contrib.pyros import AxisAlignedEllipsoidalSet
>>> ball = AxisAlignedEllipsoidalSet(
...     center=[0, 0, 0],
...     half_lengths=[1, 1, 1],
... )
>>> ball.center
array([0, 0, 0])
>>> ball.half_lengths
array([1, 1, 1])
__init__(center, half_lengths)[source]

Initialize self (see class docstring).

Methods

__init__(center, half_lengths)

Initialize self (see class docstring).

compute_auxiliary_uncertain_param_vals(point)

Compute auxiliary uncertain parameter values for a given point.

is_bounded(config)

Determine whether the uncertainty set is bounded.

is_nonempty(config)

Determine whether the uncertainty set is nonempty.

point_in_set(point)

Determine whether a given point lies in the uncertainty set.

set_as_constraint([uncertain_params, block])

Construct a block of Pyomo constraint(s) defining the uncertainty set on variables representing the uncertain parameters, for use in a two-stage robust optimization problem or subproblem (such as a PyROS separation subproblem).

validate(config)

Check AxisAlignedEllipsoidalSet validity.

Attributes

center

Center of the ellipsoid.

dim

Dimension N of the axis-aligned ellipsoidal set.

geometry

Geometry of the axis-aligned ellipsoidal set.

half_lengths

Semi-axis lengths.

parameter_bounds

Bounds in each dimension of the axis-aligned ellipsoidal set.

type

Brief description of the type of the uncertainty set.

Member Documentation

compute_auxiliary_uncertain_param_vals(point, solver=None)[source]

Compute auxiliary uncertain parameter values for a given point. The point need not be in the uncertainty set.

Parameters:
  • point ((N,) array-like) – Point of interest.

  • solver (Pyomo solver, optional) – If needed, a Pyomo solver with which to compute the auxiliary values.

Returns:

aux_space_pt – Computed auxiliary uncertain parameter values.

Return type:

numpy.ndarray

is_bounded(config)

Determine whether the uncertainty set is bounded.

Parameters:

config (ConfigDict) – PyROS solver configuration.

Returns:

True if the uncertainty set is certified to be bounded, and False otherwise.

Return type:

bool

Notes

This check is carried out by checking if all parameter bounds are finite.

If no parameter bounds are available, the following processes are run to perform the check: (i) feasibility-based bounds tightening is used to obtain parameter bounds, and if not all bound are found, (ii) solving a sequence of maximization and minimization problems (in which the objective for each problem is the value of a single uncertain parameter). If any of the optimization models cannot be solved successfully to optimality, then False is returned.

This method is invoked by self.validate().

is_nonempty(config)

Determine whether the uncertainty set is nonempty.

Parameters:

config (ConfigDict) – PyROS solver configuration.

Returns:

True if the uncertainty set is nonempty, and False otherwise.

Return type:

bool

point_in_set(point)

Determine whether a given point lies in the uncertainty set.

Parameters:

point ((N,) array-like) – Point (parameter value) of interest.

Returns:

True if the point lies in the uncertainty set, False otherwise.

Return type:

bool

Notes

This method is invoked at the outset of a PyROS solver call to determine whether a user-specified nominal parameter realization lies in the uncertainty set.

set_as_constraint(uncertain_params=None, block=None)[source]

Construct a block of Pyomo constraint(s) defining the uncertainty set on variables representing the uncertain parameters, for use in a two-stage robust optimization problem or subproblem (such as a PyROS separation subproblem).

Parameters:
  • uncertain_params (None, Var, or list of Var, optional) – Variable objects representing the (main) uncertain parameters. If None is passed, then new variable objects are constructed.

  • block (BlockData or None, optional) – Block on which to declare the constraints and any new variable objects. If None is passed, then a new block is constructed.

Returns:

A collection of the components added or addressed.

Return type:

UncertaintyQuantification

validate(config)[source]

Check AxisAlignedEllipsoidalSet validity.

Raises:

ValueError – If any uncertainty set attributes are not valid. (e.g., numeric values are infinite, or self.half_lengths are negative).

property center

Center of the ellipsoid.

Type:

(N,) numpy.ndarray

property dim

Dimension N of the axis-aligned ellipsoidal set.

Type:

int

property geometry

Geometry of the axis-aligned ellipsoidal set.

Type:

Geometry

property half_lengths

Semi-axis lengths.

Type:

(N,) numpy.ndarray

property parameter_bounds

Bounds in each dimension of the axis-aligned ellipsoidal set.

Returns:

List, length N, of coordinate value (lower, upper) bound pairs.

Return type:

list[tuple[numbers.Real, numbers.Real]]

property type

Brief description of the type of the uncertainty set.

Type:

str