opengen.constraints package

Submodules

opengen.constraints.affine_space module

class opengen.constraints.affine_space.AffineSpace(A, b)

Bases: Constraint

An affine constraint

A constraint of the form \(Ax = b\), where \(A\) and \(b\) are a matrix and a vector of appropriate dimensions

__init__(A, b)

Constructor for an affine space

Returns:

new instance of AffineSpace

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance to affine space

Not implemented yet

is_compact()

Affine spaces are not compact sets

is_convex()

Affine spaces are convex sets

property matrix_a

Matrix A

project(u)

Projection on affine space

Not implemented yet

property vector_b

Vector b

opengen.constraints.ball1 module

class opengen.constraints.ball1.Ball1(center=None, radius: float = 1.0)

Bases: Constraint

Ball1 aka Norm-1 Ball

Ball-1 with given radius, that is

\(\mathcal{B}_{1}(x_0, r) = \{x\in{\rm I\!R}^n {}:{} \|x - x_0\|_1 \leq r\}\)

__init__(center=None, radius: float = 1.0)

Constructor for a Ball1

Parameters:

radius – ball radius (default: 1)

Returns:

New instance of Ball1 with given radius

property center

Returns the center of the ball

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project on the current Ball-1

Parameters:

u – vector u

Returns:

projection of u onto the current ball-1

property radius

Returns the radius of this ball

opengen.constraints.ball2 module

class opengen.constraints.ball2.Ball2(center=None, radius: float = 1.0)

Bases: Constraint

A Euclidean ball constraint

A constraint of the form \(\Vert u-u_0 \Vert \leq r\), where \(u_0\) is the center of the ball and r is its radius

__init__(center=None, radius: float = 1.0)

Constructor for a Euclidean ball constraint

Parameters:
  • center – center of the ball; if this is equal to Null, the ball is centered at the origin

  • radius – radius of the ball

Returns:

New instance of Ball2 with given center and radius

property center

Returns the center of the ball

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Computes the squared distance between a given point u and this ball

Parameters:

u – given point; can be a list of float, a numpy n-dim array (ndarray) or a CasADi SX/MX symbol

Returns:

distance from set as a float or a CasADi symbol

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

property radius

Returns the radius of the ball

opengen.constraints.ball_inf module

class opengen.constraints.ball_inf.BallInf(center=None, radius: float = 1.0)

Bases: Constraint

Norm-ball of norm infinity translated by given vector

Centered inf-ball around given point, that is

\(\mathcal{B}_{\infty}(x_0, r) = \{x\in{\rm I\!R}^n {}:{} \|x - x_0\|_{\infty} \leq r\}\)

__init__(center=None, radius: float = 1.0)

Constructor for an infinity ball constraint

Parameters:
  • center – center of the ball; if this is equal to Null, the ball is centered at the origin

  • radius – radius of the ball

Returns:

New instance of Ballinf with given center and radius

property center

Returns the center of the ball

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

property radius

Returns the radius of the ball

opengen.constraints.cartesian module

class opengen.constraints.cartesian.CartesianProduct(segments: List[int], constraints: List[Constraint])

Bases: Constraint

__init__(segments: List[int], constraints: List[Constraint])

Cartesian product

\(X = X_1 \times X_1 \times \ldots \times X_s.\)

Construct a Cartesian product of constraints by providing a list of sets and their dimensions as follows: an n-dimensional vector x can be partitioned into subvectors as \(x = (x_{[1]}, x_{[2]}, ..., x_{[s]})\), where each \(x_{[i]}\) has dimension \(m_i\).

For example consider the 5-dimensional vector \(x = (x_0, x_1, x_2, x_3, x_4)\), which can be partitioned into \(x_{[1]} = (x_0, x_1)\) and \(x_{[2]} = (x_2, x_3, x_4)\). We can associate with \(x_{[1]}\) the indices [0, 1] and with \(x_{[2]}\) the indices [2, 3, 4]. The segment ids are the indices 1 and 4.

Important:

In Python, segments uses inclusive last indices. For example, segments=[1, 4] means that the first segment is x[0:2] and the second segment is x[2:5].

This convention is different from the Rust API, where Cartesian products are specified using cumulative lengths / exclusive end indices.

Example:

In this example we shall define the set \(X = \mathcal{B}_{1.5} \times R \times {\rm I\!R}^{5}\), where \(\mathcal{B}_{1.5}\) is a Euclidean ball of dimension 2 with radius 1.5, \(R\) is a 3-dimensional rectangle with \(x_{\min} = (-1, -2, -3)\) and \(x_{\max} = (0, 10, -1)\). Here the segments are [1, 4, 9].

>>> ball = og.constraints.Ball2(None, 1.5)
>>> rect = og.constraints.Rectangle(xmin=[-1,-2,-3], xmax=[0, 10, -1])
>>> free = og.constraints.NoConstraints()
>>> segment_ids = [1, 4, 9]
>>> my_set = og.constraints.CartesianProduct(segment_ids, [ball, rect, free])
Parameters:
  • segments – inclusive last indices of segments

  • constraints – list of sets

property constraints
Returns:

list of constraints comprising the current instance of CartesianProduct

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of given vector, u, from the current instance of CartesianProduct

Parameters:

u – vector u

Returns:

squared distance (float)

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

segment_dimension(i)

Dimension of segment i

Parameters:

i – index of segment (starts at 0)

Returns:

dimension of i-th index

property segments
Returns:

list of segments

opengen.constraints.constraint module

class opengen.constraints.constraint.Constraint

Bases: object

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

opengen.constraints.finite_set module

class opengen.constraints.finite_set.FiniteSet(points=None)

Bases: Constraint

Finite set

A set of the form \(A = \{a_1, a_2, \ldots, a_K\}\)

__init__(points=None)

Constructor for a finite set

Parameters:

points (list of lists) – the elements of the set

cardinality()

Cardinality of the set

dimension()

Dimension of the set

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

property points

List of points of this set

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

opengen.constraints.halfspace module

class opengen.constraints.halfspace.Halfspace(normal_vector, offset: float)

Bases: Constraint

Halfspace constraint

A halfspace is a set of the form \(H = \{c^\intercal x \leq b\}\), where c is a given vector and b is a constant scalar.

__init__(normal_vector, offset: float)

Construct a new halfspace \(H = \{c^\intercal x \leq b\}\)

Parameters:
  • normal_vector – vector c

  • offset – parameter b

dimension()

Dimension of the halfspace

Returns:

length/dimension of normal vector

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

H is compact iff \(b < 0\) and \(c = 0\), in which case H is empty

is_convex()

A halfspace is a convex set

Returns:

True

property normal_vector

Vector c

property offset

Parameter b

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

opengen.constraints.no_constraints module

class opengen.constraints.no_constraints.NoConstraints

Bases: Constraint

This is the entire \({\rm I\!R}^n\)

__init__()
dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

opengen.constraints.rectangle module

class opengen.constraints.rectangle.Rectangle(xmin=None, xmax=None)

Bases: Constraint

A Rectangle (Box) constraint

A set of the form

\(X = \{x\in{\mathrm{I\!R}}^n {}:{} x_{\mathrm{min}} \leq x \leq x_{\mathrm{max}}\}\)

__init__(xmin=None, xmax=None)

Construct a new instance of Rectangle

Parameters:
  • xmin – minimum bounds (can be None)

  • xmax – maximum bounds (can be None)

Raises:
  • Exception – if both xmin and xmax is None

  • Exception – if xmin and xmax are both not None and not a list

  • Exception – if xmin and xmax have incompatible lengths

  • Exception – if xmin(i) > xmax(i) for some i (empty set)

Returns:

A new instance of Rectangle

dimension()

Dimension of this rectangle (inferred by the dimensions of xmin and xmax)

distance_squared(u)

Squared distance to this rectangle

Parameters:

u – given point

Returns:

squared distance of u to this rectangle

idx_bound_finite_all()

Coordinates where both bounds are finite

Returns:

list of coordinates

idx_infinite_only_xmax()

Coordinates at which xmax is infinity and xmin is finite

Returns:

list of coordinates

idx_infinite_only_xmin()

Coordinates at which xmin is minus infinity and xmax is finite

Returns:

list of coordinates

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

is_orthant()

Whether this rectangle is an orthant

An orthant is a rectangle whose projection on every coordinate is an interval of the form \([0, \infty)\) or \((-\infty, 0]\).

Return type:

boolean

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

property xmax

Maximum bound

property xmin

Minimum bound

opengen.constraints.simplex module

class opengen.constraints.simplex.Simplex(alpha: float = 1.0)

Bases: Constraint

Simplex constraint

A set of the form

\(X = \left\{x \in \mathrm{I\!R}^n : \sum_{i=1}^{n} x_i = \alpha, x \geq 0\right\}\)

where \(\alpha\) is a positive constant.

__init__(alpha: float = 1.0)

Constructor for a Simplex constraint

Parameters:

alpha – size parameter of simplex (default: 1)

Returns:

new instance of Simplex with given alpha

property alpha

Returns the simplex value alpha

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact (True)

is_convex()

Whether the set is convex (True)

project(y)

Computes the projection of a given point \(y\in{\rm I\!R}^n\) onto the current simplex.

Parameters:

y – given point; must be a list of numbers (float, int) or a numpy n-dim array (ndarray)

Returns:

the projection point in \({\rm I\!R}^n\) as a numpy array of float64s

opengen.constraints.soc module

class opengen.constraints.soc.SecondOrderCone(a: float = 1.0)

Bases: Constraint

A Second-Order Cone given by \(C = \{u = (x, r): a\|x\| \leq r\}\)

Second-order cones are used in conic optimisation to describe inequalities that involve quadratic terms

__init__(a: float = 1.0)

Constructor for a Second-Order Cone set

Parameters:

a – parameter a

Returns:

New instance of a SOC with given parameter a

property a

Returns the value of parameter a

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Computes the squared distance between a given point u and this second-order cone

param u:

given point; can be a list of float, a numpy n-dim array (ndarray) or a CasADi SX/MX symbol

return:

distance from set as a float or a CasADi symbol

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

opengen.constraints.sphere2 module

class opengen.constraints.sphere2.Sphere2(center=None, radius: float = 1.0)

Bases: Constraint

A Euclidean sphere constraint

A constraint of the form \(\|u-u_0\| = r\), where \(u_0\) is the center of the ball and r is its radius

__init__(center=None, radius: float = 1.0)

Constructor for a Euclidean sphere constraint

Parameters:
  • center – center of the sphere; if this is equal to Null, the sphere is centered at the origin

  • radius – radius of the sphere

Returns:

New instance of Sphere2 with given center and radius

property center

Returns the center of the ball

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Computes the squared distance between a given point u and this sphere

Parameters:

u – given point; can be a list of float, a numpy n-dim array (ndarray) or a CasADi SX/MX symbol

Returns:

distance from set as a float or a CasADi symbol

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

property radius

Returns the radius of the sphere

opengen.constraints.zero module

class opengen.constraints.zero.Zero

Bases: Constraint

A set that contains only the origin

The singleton \(\{0\}\)

__init__()

Constructor for set \(Z = \{0\}\)

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

Module contents

class opengen.constraints.AffineSpace(A, b)

Bases: Constraint

An affine constraint

A constraint of the form \(Ax = b\), where \(A\) and \(b\) are a matrix and a vector of appropriate dimensions

__init__(A, b)

Constructor for an affine space

Returns:

new instance of AffineSpace

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance to affine space

Not implemented yet

is_compact()

Affine spaces are not compact sets

is_convex()

Affine spaces are convex sets

property matrix_a

Matrix A

project(u)

Projection on affine space

Not implemented yet

property vector_b

Vector b

class opengen.constraints.Ball1(center=None, radius: float = 1.0)

Bases: Constraint

Ball1 aka Norm-1 Ball

Ball-1 with given radius, that is

\(\mathcal{B}_{1}(x_0, r) = \{x\in{\rm I\!R}^n {}:{} \|x - x_0\|_1 \leq r\}\)

__init__(center=None, radius: float = 1.0)

Constructor for a Ball1

Parameters:

radius – ball radius (default: 1)

Returns:

New instance of Ball1 with given radius

property center

Returns the center of the ball

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project on the current Ball-1

Parameters:

u – vector u

Returns:

projection of u onto the current ball-1

property radius

Returns the radius of this ball

class opengen.constraints.Ball2(center=None, radius: float = 1.0)

Bases: Constraint

A Euclidean ball constraint

A constraint of the form \(\Vert u-u_0 \Vert \leq r\), where \(u_0\) is the center of the ball and r is its radius

__init__(center=None, radius: float = 1.0)

Constructor for a Euclidean ball constraint

Parameters:
  • center – center of the ball; if this is equal to Null, the ball is centered at the origin

  • radius – radius of the ball

Returns:

New instance of Ball2 with given center and radius

property center

Returns the center of the ball

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Computes the squared distance between a given point u and this ball

Parameters:

u – given point; can be a list of float, a numpy n-dim array (ndarray) or a CasADi SX/MX symbol

Returns:

distance from set as a float or a CasADi symbol

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

property radius

Returns the radius of the ball

class opengen.constraints.BallInf(center=None, radius: float = 1.0)

Bases: Constraint

Norm-ball of norm infinity translated by given vector

Centered inf-ball around given point, that is

\(\mathcal{B}_{\infty}(x_0, r) = \{x\in{\rm I\!R}^n {}:{} \|x - x_0\|_{\infty} \leq r\}\)

__init__(center=None, radius: float = 1.0)

Constructor for an infinity ball constraint

Parameters:
  • center – center of the ball; if this is equal to Null, the ball is centered at the origin

  • radius – radius of the ball

Returns:

New instance of Ballinf with given center and radius

property center

Returns the center of the ball

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

property radius

Returns the radius of the ball

class opengen.constraints.CartesianProduct(segments: List[int], constraints: List[Constraint])

Bases: Constraint

__init__(segments: List[int], constraints: List[Constraint])

Cartesian product

\(X = X_1 \times X_1 \times \ldots \times X_s.\)

Construct a Cartesian product of constraints by providing a list of sets and their dimensions as follows: an n-dimensional vector x can be partitioned into subvectors as \(x = (x_{[1]}, x_{[2]}, ..., x_{[s]})\), where each \(x_{[i]}\) has dimension \(m_i\).

For example consider the 5-dimensional vector \(x = (x_0, x_1, x_2, x_3, x_4)\), which can be partitioned into \(x_{[1]} = (x_0, x_1)\) and \(x_{[2]} = (x_2, x_3, x_4)\). We can associate with \(x_{[1]}\) the indices [0, 1] and with \(x_{[2]}\) the indices [2, 3, 4]. The segment ids are the indices 1 and 4.

Important:

In Python, segments uses inclusive last indices. For example, segments=[1, 4] means that the first segment is x[0:2] and the second segment is x[2:5].

This convention is different from the Rust API, where Cartesian products are specified using cumulative lengths / exclusive end indices.

Example:

In this example we shall define the set \(X = \mathcal{B}_{1.5} \times R \times {\rm I\!R}^{5}\), where \(\mathcal{B}_{1.5}\) is a Euclidean ball of dimension 2 with radius 1.5, \(R\) is a 3-dimensional rectangle with \(x_{\min} = (-1, -2, -3)\) and \(x_{\max} = (0, 10, -1)\). Here the segments are [1, 4, 9].

>>> ball = og.constraints.Ball2(None, 1.5)
>>> rect = og.constraints.Rectangle(xmin=[-1,-2,-3], xmax=[0, 10, -1])
>>> free = og.constraints.NoConstraints()
>>> segment_ids = [1, 4, 9]
>>> my_set = og.constraints.CartesianProduct(segment_ids, [ball, rect, free])
Parameters:
  • segments – inclusive last indices of segments

  • constraints – list of sets

property constraints
Returns:

list of constraints comprising the current instance of CartesianProduct

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of given vector, u, from the current instance of CartesianProduct

Parameters:

u – vector u

Returns:

squared distance (float)

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

segment_dimension(i)

Dimension of segment i

Parameters:

i – index of segment (starts at 0)

Returns:

dimension of i-th index

property segments
Returns:

list of segments

class opengen.constraints.Constraint

Bases: object

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

class opengen.constraints.FiniteSet(points=None)

Bases: Constraint

Finite set

A set of the form \(A = \{a_1, a_2, \ldots, a_K\}\)

__init__(points=None)

Constructor for a finite set

Parameters:

points (list of lists) – the elements of the set

cardinality()

Cardinality of the set

dimension()

Dimension of the set

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

property points

List of points of this set

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

class opengen.constraints.Halfspace(normal_vector, offset: float)

Bases: Constraint

Halfspace constraint

A halfspace is a set of the form \(H = \{c^\intercal x \leq b\}\), where c is a given vector and b is a constant scalar.

__init__(normal_vector, offset: float)

Construct a new halfspace \(H = \{c^\intercal x \leq b\}\)

Parameters:
  • normal_vector – vector c

  • offset – parameter b

dimension()

Dimension of the halfspace

Returns:

length/dimension of normal vector

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

H is compact iff \(b < 0\) and \(c = 0\), in which case H is empty

is_convex()

A halfspace is a convex set

Returns:

True

property normal_vector

Vector c

property offset

Parameter b

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

class opengen.constraints.NoConstraints

Bases: Constraint

This is the entire \({\rm I\!R}^n\)

__init__()
dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

class opengen.constraints.Rectangle(xmin=None, xmax=None)

Bases: Constraint

A Rectangle (Box) constraint

A set of the form

\(X = \{x\in{\mathrm{I\!R}}^n {}:{} x_{\mathrm{min}} \leq x \leq x_{\mathrm{max}}\}\)

__init__(xmin=None, xmax=None)

Construct a new instance of Rectangle

Parameters:
  • xmin – minimum bounds (can be None)

  • xmax – maximum bounds (can be None)

Raises:
  • Exception – if both xmin and xmax is None

  • Exception – if xmin and xmax are both not None and not a list

  • Exception – if xmin and xmax have incompatible lengths

  • Exception – if xmin(i) > xmax(i) for some i (empty set)

Returns:

A new instance of Rectangle

dimension()

Dimension of this rectangle (inferred by the dimensions of xmin and xmax)

distance_squared(u)

Squared distance to this rectangle

Parameters:

u – given point

Returns:

squared distance of u to this rectangle

idx_bound_finite_all()

Coordinates where both bounds are finite

Returns:

list of coordinates

idx_infinite_only_xmax()

Coordinates at which xmax is infinity and xmin is finite

Returns:

list of coordinates

idx_infinite_only_xmin()

Coordinates at which xmin is minus infinity and xmax is finite

Returns:

list of coordinates

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

is_orthant()

Whether this rectangle is an orthant

An orthant is a rectangle whose projection on every coordinate is an interval of the form \([0, \infty)\) or \((-\infty, 0]\).

Return type:

boolean

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

property xmax

Maximum bound

property xmin

Minimum bound

class opengen.constraints.SecondOrderCone(a: float = 1.0)

Bases: Constraint

A Second-Order Cone given by \(C = \{u = (x, r): a\|x\| \leq r\}\)

Second-order cones are used in conic optimisation to describe inequalities that involve quadratic terms

__init__(a: float = 1.0)

Constructor for a Second-Order Cone set

Parameters:

a – parameter a

Returns:

New instance of a SOC with given parameter a

property a

Returns the value of parameter a

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Computes the squared distance between a given point u and this second-order cone

param u:

given point; can be a list of float, a numpy n-dim array (ndarray) or a CasADi SX/MX symbol

return:

distance from set as a float or a CasADi symbol

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

class opengen.constraints.Simplex(alpha: float = 1.0)

Bases: Constraint

Simplex constraint

A set of the form

\(X = \left\{x \in \mathrm{I\!R}^n : \sum_{i=1}^{n} x_i = \alpha, x \geq 0\right\}\)

where \(\alpha\) is a positive constant.

__init__(alpha: float = 1.0)

Constructor for a Simplex constraint

Parameters:

alpha – size parameter of simplex (default: 1)

Returns:

new instance of Simplex with given alpha

property alpha

Returns the simplex value alpha

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact (True)

is_convex()

Whether the set is convex (True)

project(y)

Computes the projection of a given point \(y\in{\rm I\!R}^n\) onto the current simplex.

Parameters:

y – given point; must be a list of numbers (float, int) or a numpy n-dim array (ndarray)

Returns:

the projection point in \({\rm I\!R}^n\) as a numpy array of float64s

class opengen.constraints.Sphere2(center=None, radius: float = 1.0)

Bases: Constraint

A Euclidean sphere constraint

A constraint of the form \(\|u-u_0\| = r\), where \(u_0\) is the center of the ball and r is its radius

__init__(center=None, radius: float = 1.0)

Constructor for a Euclidean sphere constraint

Parameters:
  • center – center of the sphere; if this is equal to Null, the sphere is centered at the origin

  • radius – radius of the sphere

Returns:

New instance of Sphere2 with given center and radius

property center

Returns the center of the ball

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Computes the squared distance between a given point u and this sphere

Parameters:

u – given point; can be a list of float, a numpy n-dim array (ndarray) or a CasADi SX/MX symbol

Returns:

distance from set as a float or a CasADi symbol

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set

property radius

Returns the radius of the sphere

class opengen.constraints.Zero

Bases: Constraint

A set that contains only the origin

The singleton \(\{0\}\)

__init__()

Constructor for set \(Z = \{0\}\)

dimension()

Constraint dimension

Derived classes can override this method to return the dimension of the constraint, where possible, or return None if the constraint does not have a fixed dimension.

distance_squared(u)

Squared distance of a given point to the set

Parameters:

u – given point

Returns:

squared distance

Return type:

float

is_compact()

Whether the set is compact

is_convex()

Whether the set is convex

project(u)

Project a given point onto the set

Parameters:

u – given point

Returns:

projection of u onto this set