UncertaintySet

(class from pyomo.contrib.pyros.uncertainty_sets)

class pyomo.contrib.pyros.uncertainty_sets.UncertaintySet[source]

Bases: object

An object representing an uncertainty set to be passed to the PyROS solver.

UncertaintySet is an abstract base class for constructing specific subclasses and instances of uncertainty sets. Therefore, UncertaintySet cannot be instantiated directly.

A concrete UncertaintySet instance should be viewed as merely a container for data needed to parameterize the set it represents, such that the object’s attributes do not reference the components of a Pyomo modeling object.

__init__()

Methods

__init__()

compute_auxiliary_uncertain_param_vals(point)

Compute auxiliary uncertain parameter values for a given point.

is_bounded(config)

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

is_nonempty(config)

Return True if the uncertainty set is known to be nonempty, False if the uncertainty set is known to be empty.

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)

Validate the uncertainty set with a boundedness check.

Attributes

dim

Dimension of the uncertainty set (number of uncertain parameters in a corresponding optimization model of interest).

geometry

Geometry of the uncertainty set.

parameter_bounds

Valid lower and upper bounds for the coordinate values of points comprising the 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)[source]

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

Parameters:

config (ConfigDict) – PyROS solver configuration.

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)[source]

Return True if the uncertainty set is known to be nonempty, False if the uncertainty set is known to be empty.

Parameters:

config (ConfigDict) – PyROS solver configuration.

Return type:

bool

Raises:

ValueError – If neither nonemptiness nor emptiness of the uncertainty set can be certified.

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:

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.

abstractmethod 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]

Validate the uncertainty set with a boundedness check.

Parameters:

config (ConfigDict) – PyROS solver configuration.

Raises:

ValueError – If boundedness check fails.

abstract property dim

Dimension of the uncertainty set (number of uncertain parameters in a corresponding optimization model of interest).

Type:

int

abstract property geometry

Geometry of the uncertainty set.

Type:

Geometry

abstract property parameter_bounds

Valid lower and upper bounds for the coordinate values of points comprising the set. If the bounds can be calculated efficiently, then this list should be of length self.dim and contain the (lower, upper) bound pairs. Otherwise, the list should be empty.

Type:

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