EllipsoidalSet
(class from pyomo.contrib.pyros.uncertainty_sets
)
- class pyomo.contrib.pyros.uncertainty_sets.EllipsoidalSet(center, shape_matrix, scale=1)[source]
Bases:
UncertaintySet
A general ellipsoid.
- Parameters:
center ((N,) array-like) – Center of the ellipsoid.
shape_matrix ((N, N) array-like) – A positive definite matrix characterizing the shape and orientation of the ellipsoid.
scale (numeric type, optional) – Square of the factor by which to scale the semi-axes of the ellipsoid (i.e. the eigenvectors of the shape matrix). The default is 1.
Examples
3D origin-centered unit hypersphere:
>>> from pyomo.contrib.pyros import EllipsoidalSet >>> import numpy as np >>> hypersphere = EllipsoidalSet( ... center=[0, 0, 0], ... shape_matrix=np.eye(3), ... scale=1, ... ) >>> hypersphere.center array([0, 0, 0]) >>> hypersphere.shape_matrix array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]) >>> hypersphere.scale 1
A 2D ellipsoid with custom rotation and scaling:
>>> rotated_ellipsoid = EllipsoidalSet( ... center=[1, 1], ... shape_matrix=[[4, 2], [2, 4]], ... scale=0.5, ... ) >>> rotated_ellipsoid.center array([1, 1]) >>> rotated_ellipsoid.shape_matrix array([[4, 2], [2, 4]]) >>> rotated_ellipsoid.scale 0.5
Methods
__init__
(center, shape_matrix[, scale])Initialize self (see class docstring).
Compute auxiliary uncertain parameter values for a given point.
is_bounded
(config)Determine whether the uncertainty set is bounded.
is_nonempty
(config)Return True if the uncertainty set is nonempty, else False.
is_valid
(config)Return True if the uncertainty set is bounded and non-empty, else False.
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).
Attributes
Center of the ellipsoid.
Dimension N of the ellipsoidal set.
Geometry of the ellipsoidal set.
Bounds in each dimension of the ellipsoidal set.
Square of the factor by which to scale the semi-axes of the ellipsoid (i.e. the eigenvectors of the shape matrix).
A positive definite matrix characterizing the shape and orientation of the ellipsoid.
Brief description of the type of the uncertainty set.
Member Documentation
- compute_auxiliary_uncertain_param_vals(point, solver=None)
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:
- 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:
Notes
This check is carried out by 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 during the validation step of a PyROS solver call.
- is_nonempty(config)
Return True if the uncertainty set is nonempty, else False.
- is_valid(config)
Return True if the uncertainty set is bounded and non-empty, else False.
- point_in_set(point)[source]
Determine whether a given point lies in the uncertainty set.
- Parameters:
point ((N,) array-like) – Point (parameter value) of interest.
- Returns:
is_in_set – True if the point lies in the uncertainty set, False otherwise.
- Return type:
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:
- property center
Center of the ellipsoid.
- Type:
(N,) numpy.ndarray
- property geometry
Geometry of the ellipsoidal set. See the Geometry class documentation.
- property parameter_bounds
Bounds in each dimension of the ellipsoidal set.
- Returns:
List, length N, of 2-tuples. Each tuple specifies the bounds in its corresponding dimension.
- Return type:
list of tuples
- property scale
Square of the factor by which to scale the semi-axes of the ellipsoid (i.e. the eigenvectors of the shape matrix).
- Type:
numeric type
- property shape_matrix
A positive definite matrix characterizing the shape and orientation of the ellipsoid.
- Type:
(N, N) numpy.ndarray