Skip to content

Transforms

Transforms map values between the user domain and the optimizer domain. Each transform is initialized with a boolean mask and applied in sequence during optimization. The base classes define the contract; the built-in defaults provide linear scale/offset transforms.

See Transforms for usage, configuration, and implementation guidance.

ropt.transforms

Public API for domain transforms.

Provides base classes for transforming variables, objectives, and constraints between user-defined domains and the optimizer's internal domain:

See Transforms for usage, configuration, and implementation guidance.

NonlinearConstraintTransform

Bases: ABC

Abstract base class for nonlinear constraint transformations.

Subclasses must implement:

  • to_optimizer / from_optimizer: map constraint values.
  • bounds_to_optimizer: map constraint RHS bounds.
  • nonlinear_constraint_diffs_from_optimizer: map violation differences.
  • init: apply a mask selecting which constraints this transform affects.

All arrays use the last axis for the constraint dimension.

__init__ abstractmethod

__init__(
    transform_config: NonlinearConstraintTransformConfig,
) -> None

Initialize the constraint transform.

Parameters:

Name Type Description Default
transform_config NonlinearConstraintTransformConfig

The transform configuration.

required

init abstractmethod

init(mask: NDArray[bool_]) -> None

Apply a mask selecting which constraints this transform affects.

Unmasked positions must pass through unchanged.

Parameters:

Name Type Description Default
mask NDArray[bool_]

Boolean array (True = this transform applies).

required

to_optimizer abstractmethod

to_optimizer(
    constraints: NDArray[float64],
) -> NDArray[np.float64]

Transform constraint values from user domain to optimizer domain.

The last axis represents constraints. Multi-dimensional arrays are supported.

Parameters:

Name Type Description Default
constraints NDArray[float64]

Constraint values in the user domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the optimizer domain.

from_optimizer abstractmethod

from_optimizer(
    constraints: NDArray[float64],
) -> NDArray[np.float64]

Transform constraint values from optimizer domain to user domain.

The last axis represents constraints. Multi-dimensional arrays are supported.

Parameters:

Name Type Description Default
constraints NDArray[float64]

Constraint values in the optimizer domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the user domain.

bounds_to_optimizer abstractmethod

bounds_to_optimizer(
    lower_bounds: NDArray[float64],
    upper_bounds: NDArray[float64],
) -> tuple[NDArray[np.float64], NDArray[np.float64]]

Transform constraint RHS bounds to the optimizer domain.

Adjusts bounds to remain consistent with the constraint transform.

Parameters:

Name Type Description Default
lower_bounds NDArray[float64]

Lower RHS bounds in user domain.

required
upper_bounds NDArray[float64]

Upper RHS bounds in user domain.

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

Tuple of (lower_bounds, upper_bounds) in optimizer domain.

nonlinear_constraint_diffs_from_optimizer abstractmethod

nonlinear_constraint_diffs_from_optimizer(
    lower_diffs: NDArray[float64],
    upper_diffs: NDArray[float64],
) -> tuple[NDArray[np.float64], NDArray[np.float64]]

Transform constraint-violation differences to user domain.

Used for reporting constraint violations in user-domain units.

Parameters:

Name Type Description Default
lower_diffs NDArray[float64]

Constraint value minus lower bound.

required
upper_diffs NDArray[float64]

Constraint value minus upper bound.

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

Tuple of (lower_diffs, upper_diffs) in user domain.

update

update(*args: Any, **kwargs: Any) -> None

Update internal state mid-run (optional).

Parameters:

Name Type Description Default
args Any

Positional arguments.

()
kwargs Any

Keyword arguments.

{}

ObjectiveTransform

Bases: ABC

Abstract base class for objective transformations.

Subclasses must implement to_optimizer and from_optimizer to map objective values between user and optimizer domains, plus init to apply a mask selecting which objectives this transform affects.

All arrays use the last axis for the objective dimension.

__init__ abstractmethod

__init__(
    transform_config: ObjectiveTransformConfig,
) -> None

Initialize the objective transform.

Parameters:

Name Type Description Default
transform_config ObjectiveTransformConfig

The transform configuration.

required

init abstractmethod

init(mask: NDArray[bool_]) -> None

Apply a mask selecting which objectives this transform affects.

Unmasked positions must pass through unchanged.

Parameters:

Name Type Description Default
mask NDArray[bool_]

Boolean array (True = this transform applies).

required

to_optimizer abstractmethod

to_optimizer(
    objectives: NDArray[float64],
) -> NDArray[np.float64]

Transform objective values from user domain to optimizer domain.

The last axis represents objectives. Multi-dimensional arrays are supported.

Parameters:

Name Type Description Default
objectives NDArray[float64]

Objective values in the user domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the optimizer domain.

from_optimizer abstractmethod

from_optimizer(
    objectives: NDArray[float64],
) -> NDArray[np.float64]

Transform objective values from optimizer domain to user domain.

The last axis represents objectives. Multi-dimensional arrays are supported.

Parameters:

Name Type Description Default
objectives NDArray[float64]

Objective values in the optimizer domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the user domain.

update

update(*args: Any, **kwargs: Any) -> None

Update internal state mid-run (optional).

Parameters:

Name Type Description Default
args Any

Positional arguments.

()
kwargs Any

Keyword arguments.

{}

VariableTransform

Bases: ABC

Abstract base class for variable transformations.

Subclasses must implement methods to transform variables and related quantities between user and optimizer domains:

  • to_optimizer / from_optimizer: map variable values.
  • magnitudes_to_optimizer: map perturbation magnitudes.
  • bound_constraint_diffs_from_optimizer: map bound-violation differences.
  • init: apply a mask selecting which variables this transform affects.

Override linear_constraints_to_optimizer and linear_constraints_diffs_from_optimizer if linear constraints are used.

All arrays use the last axis for the variable dimension.

See Transforms for lifecycle and guidance.

__init__ abstractmethod

__init__(transform_config: VariableTransformConfig) -> None

Initialize the variable transform.

Parameters:

Name Type Description Default
transform_config VariableTransformConfig

The transform configuration.

required

init abstractmethod

init(mask: NDArray[bool_]) -> None

Apply a mask selecting which variables this transform affects.

The mask combines the free-variable mask with the per-transform assignment. Unmasked positions must pass through unchanged.

Parameters:

Name Type Description Default
mask NDArray[bool_]

Boolean array (True = this transform applies).

required

to_optimizer abstractmethod

to_optimizer(
    values: NDArray[float64],
) -> NDArray[np.float64]

Transform variable values from user domain to optimizer domain.

The last axis represents variables. Multi-dimensional arrays are supported.

Parameters:

Name Type Description Default
values NDArray[float64]

Variable values in the user domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the optimizer domain.

from_optimizer abstractmethod

from_optimizer(
    values: NDArray[float64],
) -> NDArray[np.float64]

Transform variable values from optimizer domain to user domain.

The last axis represents variables. Multi-dimensional arrays are supported.

Parameters:

Name Type Description Default
values NDArray[float64]

Variable values in the optimizer domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the user domain.

magnitudes_to_optimizer abstractmethod

magnitudes_to_optimizer(
    values: NDArray[float64],
) -> NDArray[np.float64]

Transform perturbation magnitudes to the optimizer domain.

Must be consistent with the variable transform (e.g., if variables are divided by scale, magnitudes should be too).

Parameters:

Name Type Description Default
values NDArray[float64]

Perturbation magnitudes in the user domain.

required

Returns:

Type Description
NDArray[float64]

Magnitudes in the optimizer domain.

bound_constraint_diffs_from_optimizer abstractmethod

bound_constraint_diffs_from_optimizer(
    lower_diffs: NDArray[float64],
    upper_diffs: NDArray[float64],
) -> tuple[NDArray[np.float64], NDArray[np.float64]]

Transform bound-violation differences to the user domain.

Used for reporting constraint violations in user-domain units.

Parameters:

Name Type Description Default
lower_diffs NDArray[float64]

Variable value minus lower bound (optimizer domain).

required
upper_diffs NDArray[float64]

Variable value minus upper bound (optimizer domain).

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

Tuple of (lower_diffs, upper_diffs) in user domain.

linear_constraints_to_optimizer

linear_constraints_to_optimizer(
    coefficients: NDArray[float64],
    lower_bounds: NDArray[float64],
    upper_bounds: NDArray[float64],
) -> tuple[
    NDArray[np.float64],
    NDArray[np.float64],
    NDArray[np.float64],
]

Transform linear constraint coefficients and bounds to optimizer domain.

Adjusts the coefficient matrix and RHS bounds so that linear constraints remain valid after the variable transformation.

Parameters:

Name Type Description Default
coefficients NDArray[float64]

Coefficient matrix A.

required
lower_bounds NDArray[float64]

Lower RHS bounds.

required
upper_bounds NDArray[float64]

Upper RHS bounds.

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64], NDArray[float64]]

Tuple of (coefficients, lower_bounds, upper_bounds) in optimizer domain.

linear_constraints_diffs_from_optimizer

linear_constraints_diffs_from_optimizer(
    lower_diffs: NDArray[float64],
    upper_diffs: NDArray[float64],
) -> tuple[NDArray[np.float64], NDArray[np.float64]]

Transform linear-constraint-violation differences to user domain.

Used for reporting constraint violations in user-domain units.

Parameters:

Name Type Description Default
lower_diffs NDArray[float64]

Constraint value minus lower bound.

required
upper_diffs NDArray[float64]

Constraint value minus upper bound.

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

Tuple of (lower_diffs, upper_diffs) in user domain.

update

update(*args: Any, **kwargs: Any) -> None

Update internal state mid-run (optional).

Override to support runtime parameter changes when values are not known at initialization.

Parameters:

Name Type Description Default
args Any

Positional arguments.

()
kwargs Any

Keyword arguments.

{}

ropt.transforms.VariableTransform

Bases: ABC

Abstract base class for variable transformations.

Subclasses must implement methods to transform variables and related quantities between user and optimizer domains:

  • to_optimizer / from_optimizer: map variable values.
  • magnitudes_to_optimizer: map perturbation magnitudes.
  • bound_constraint_diffs_from_optimizer: map bound-violation differences.
  • init: apply a mask selecting which variables this transform affects.

Override linear_constraints_to_optimizer and linear_constraints_diffs_from_optimizer if linear constraints are used.

All arrays use the last axis for the variable dimension.

See Transforms for lifecycle and guidance.

__init__ abstractmethod

__init__(transform_config: VariableTransformConfig) -> None

Initialize the variable transform.

Parameters:

Name Type Description Default
transform_config VariableTransformConfig

The transform configuration.

required

init abstractmethod

init(mask: NDArray[bool_]) -> None

Apply a mask selecting which variables this transform affects.

The mask combines the free-variable mask with the per-transform assignment. Unmasked positions must pass through unchanged.

Parameters:

Name Type Description Default
mask NDArray[bool_]

Boolean array (True = this transform applies).

required

to_optimizer abstractmethod

to_optimizer(
    values: NDArray[float64],
) -> NDArray[np.float64]

Transform variable values from user domain to optimizer domain.

The last axis represents variables. Multi-dimensional arrays are supported.

Parameters:

Name Type Description Default
values NDArray[float64]

Variable values in the user domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the optimizer domain.

from_optimizer abstractmethod

from_optimizer(
    values: NDArray[float64],
) -> NDArray[np.float64]

Transform variable values from optimizer domain to user domain.

The last axis represents variables. Multi-dimensional arrays are supported.

Parameters:

Name Type Description Default
values NDArray[float64]

Variable values in the optimizer domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the user domain.

magnitudes_to_optimizer abstractmethod

magnitudes_to_optimizer(
    values: NDArray[float64],
) -> NDArray[np.float64]

Transform perturbation magnitudes to the optimizer domain.

Must be consistent with the variable transform (e.g., if variables are divided by scale, magnitudes should be too).

Parameters:

Name Type Description Default
values NDArray[float64]

Perturbation magnitudes in the user domain.

required

Returns:

Type Description
NDArray[float64]

Magnitudes in the optimizer domain.

bound_constraint_diffs_from_optimizer abstractmethod

bound_constraint_diffs_from_optimizer(
    lower_diffs: NDArray[float64],
    upper_diffs: NDArray[float64],
) -> tuple[NDArray[np.float64], NDArray[np.float64]]

Transform bound-violation differences to the user domain.

Used for reporting constraint violations in user-domain units.

Parameters:

Name Type Description Default
lower_diffs NDArray[float64]

Variable value minus lower bound (optimizer domain).

required
upper_diffs NDArray[float64]

Variable value minus upper bound (optimizer domain).

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

Tuple of (lower_diffs, upper_diffs) in user domain.

linear_constraints_to_optimizer

linear_constraints_to_optimizer(
    coefficients: NDArray[float64],
    lower_bounds: NDArray[float64],
    upper_bounds: NDArray[float64],
) -> tuple[
    NDArray[np.float64],
    NDArray[np.float64],
    NDArray[np.float64],
]

Transform linear constraint coefficients and bounds to optimizer domain.

Adjusts the coefficient matrix and RHS bounds so that linear constraints remain valid after the variable transformation.

Parameters:

Name Type Description Default
coefficients NDArray[float64]

Coefficient matrix A.

required
lower_bounds NDArray[float64]

Lower RHS bounds.

required
upper_bounds NDArray[float64]

Upper RHS bounds.

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64], NDArray[float64]]

Tuple of (coefficients, lower_bounds, upper_bounds) in optimizer domain.

linear_constraints_diffs_from_optimizer

linear_constraints_diffs_from_optimizer(
    lower_diffs: NDArray[float64],
    upper_diffs: NDArray[float64],
) -> tuple[NDArray[np.float64], NDArray[np.float64]]

Transform linear-constraint-violation differences to user domain.

Used for reporting constraint violations in user-domain units.

Parameters:

Name Type Description Default
lower_diffs NDArray[float64]

Constraint value minus lower bound.

required
upper_diffs NDArray[float64]

Constraint value minus upper bound.

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

Tuple of (lower_diffs, upper_diffs) in user domain.

update

update(*args: Any, **kwargs: Any) -> None

Update internal state mid-run (optional).

Override to support runtime parameter changes when values are not known at initialization.

Parameters:

Name Type Description Default
args Any

Positional arguments.

()
kwargs Any

Keyword arguments.

{}

ropt.transforms.ObjectiveTransform

Bases: ABC

Abstract base class for objective transformations.

Subclasses must implement to_optimizer and from_optimizer to map objective values between user and optimizer domains, plus init to apply a mask selecting which objectives this transform affects.

All arrays use the last axis for the objective dimension.

__init__ abstractmethod

__init__(
    transform_config: ObjectiveTransformConfig,
) -> None

Initialize the objective transform.

Parameters:

Name Type Description Default
transform_config ObjectiveTransformConfig

The transform configuration.

required

init abstractmethod

init(mask: NDArray[bool_]) -> None

Apply a mask selecting which objectives this transform affects.

Unmasked positions must pass through unchanged.

Parameters:

Name Type Description Default
mask NDArray[bool_]

Boolean array (True = this transform applies).

required

to_optimizer abstractmethod

to_optimizer(
    objectives: NDArray[float64],
) -> NDArray[np.float64]

Transform objective values from user domain to optimizer domain.

The last axis represents objectives. Multi-dimensional arrays are supported.

Parameters:

Name Type Description Default
objectives NDArray[float64]

Objective values in the user domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the optimizer domain.

from_optimizer abstractmethod

from_optimizer(
    objectives: NDArray[float64],
) -> NDArray[np.float64]

Transform objective values from optimizer domain to user domain.

The last axis represents objectives. Multi-dimensional arrays are supported.

Parameters:

Name Type Description Default
objectives NDArray[float64]

Objective values in the optimizer domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the user domain.

update

update(*args: Any, **kwargs: Any) -> None

Update internal state mid-run (optional).

Parameters:

Name Type Description Default
args Any

Positional arguments.

()
kwargs Any

Keyword arguments.

{}

ropt.transforms.NonlinearConstraintTransform

Bases: ABC

Abstract base class for nonlinear constraint transformations.

Subclasses must implement:

  • to_optimizer / from_optimizer: map constraint values.
  • bounds_to_optimizer: map constraint RHS bounds.
  • nonlinear_constraint_diffs_from_optimizer: map violation differences.
  • init: apply a mask selecting which constraints this transform affects.

All arrays use the last axis for the constraint dimension.

__init__ abstractmethod

__init__(
    transform_config: NonlinearConstraintTransformConfig,
) -> None

Initialize the constraint transform.

Parameters:

Name Type Description Default
transform_config NonlinearConstraintTransformConfig

The transform configuration.

required

init abstractmethod

init(mask: NDArray[bool_]) -> None

Apply a mask selecting which constraints this transform affects.

Unmasked positions must pass through unchanged.

Parameters:

Name Type Description Default
mask NDArray[bool_]

Boolean array (True = this transform applies).

required

to_optimizer abstractmethod

to_optimizer(
    constraints: NDArray[float64],
) -> NDArray[np.float64]

Transform constraint values from user domain to optimizer domain.

The last axis represents constraints. Multi-dimensional arrays are supported.

Parameters:

Name Type Description Default
constraints NDArray[float64]

Constraint values in the user domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the optimizer domain.

from_optimizer abstractmethod

from_optimizer(
    constraints: NDArray[float64],
) -> NDArray[np.float64]

Transform constraint values from optimizer domain to user domain.

The last axis represents constraints. Multi-dimensional arrays are supported.

Parameters:

Name Type Description Default
constraints NDArray[float64]

Constraint values in the optimizer domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the user domain.

bounds_to_optimizer abstractmethod

bounds_to_optimizer(
    lower_bounds: NDArray[float64],
    upper_bounds: NDArray[float64],
) -> tuple[NDArray[np.float64], NDArray[np.float64]]

Transform constraint RHS bounds to the optimizer domain.

Adjusts bounds to remain consistent with the constraint transform.

Parameters:

Name Type Description Default
lower_bounds NDArray[float64]

Lower RHS bounds in user domain.

required
upper_bounds NDArray[float64]

Upper RHS bounds in user domain.

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

Tuple of (lower_bounds, upper_bounds) in optimizer domain.

nonlinear_constraint_diffs_from_optimizer abstractmethod

nonlinear_constraint_diffs_from_optimizer(
    lower_diffs: NDArray[float64],
    upper_diffs: NDArray[float64],
) -> tuple[NDArray[np.float64], NDArray[np.float64]]

Transform constraint-violation differences to user domain.

Used for reporting constraint violations in user-domain units.

Parameters:

Name Type Description Default
lower_diffs NDArray[float64]

Constraint value minus lower bound.

required
upper_diffs NDArray[float64]

Constraint value minus upper bound.

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

Tuple of (lower_diffs, upper_diffs) in user domain.

update

update(*args: Any, **kwargs: Any) -> None

Update internal state mid-run (optional).

Parameters:

Name Type Description Default
args Any

Positional arguments.

()
kwargs Any

Keyword arguments.

{}

ropt.transforms.default.DefaultVariableTransform

Bases: VariableTransform

Linearly scales and shifts variables between domains.

This class implements a linear transformation for variables, allowing for scaling and shifting between the user-defined domain and the optimizer's internal domain. The transformation is defined by a scaling factor and an offset for each variable.

The transformation from the user domain to the optimizer domain is given by:

\[x_{opt} = \frac{(x_{\textrm{user}} - \textrm{offset})}{\textrm{scale}}\]

The transformation from the optimizer domain back to the user domain is:

\[x_{user} = x_{\textrm{opt}} * {\textrm{scale}} + {\textrm{offset}}\]

This transformation can be used to improve the performance of the optimizer by working with variables that are scaled to a more suitable range or centered around a specific value.

__init__

__init__(transform_config: VariableTransformConfig) -> None

Initialize the variable scaler.

Reads scales and offsets from the transform configuration options. If both are provided, they are broadcasted to the same length.

Parameters:

Name Type Description Default
transform_config VariableTransformConfig

The transform configuration.

required

to_optimizer

to_optimizer(
    values: NDArray[float64],
) -> NDArray[np.float64]

Apply (values - offset) / scale.

Parameters:

Name Type Description Default
values NDArray[float64]

Variable values in the user domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the optimizer domain.

from_optimizer

from_optimizer(
    values: NDArray[float64],
) -> NDArray[np.float64]

Apply values * scale + offset.

Parameters:

Name Type Description Default
values NDArray[float64]

Variable values in the optimizer domain.

required

Returns:

Type Description
NDArray[float64]

Transformed values in the user domain.

magnitudes_to_optimizer

magnitudes_to_optimizer(
    values: NDArray[float64],
) -> NDArray[np.float64]

Apply values / scale.

Parameters:

Name Type Description Default
values NDArray[float64]

Perturbation magnitudes in the user domain.

required

Returns:

Type Description
NDArray[float64]

Magnitudes in the optimizer domain.

linear_constraints_to_optimizer

linear_constraints_to_optimizer(
    coefficients: NDArray[float64],
    lower_bounds: NDArray[float64],
    upper_bounds: NDArray[float64],
) -> tuple[
    NDArray[np.float64],
    NDArray[np.float64],
    NDArray[np.float64],
]

Transform linear constraints to the optimizer domain.

The set of linear constraints can be represented by a matrix equation: \(\mathbf{A} \mathbf{x} = \mathbf{b}\).

If the linear transformation of variables to the optimizer domain is:

\[ \hat{\mathbf{x}} = \mathbf{S} \mathbf{x} + \mathbf{o}\]

then the coefficients and right-hand-side values become:

\[ \begin{align} \hat{\mathbf{A}} &= \mathbf{A} \mathbf{S}^{-1} \\ \hat{\mathbf{b}} &= \mathbf{b} + \mathbf{A}\mathbf{S}^{-1}\mathbf{o} \end{align}\]

where \(S\) is a diagonal matrix with scaling factors and \(o\) are offsets.

The resulting equations are further scaled by dividing by the maximum absolute coefficient in each equation.

Parameters:

Name Type Description Default
coefficients NDArray[float64]

The coefficient matrix of the linear constraints.

required
lower_bounds NDArray[float64]

The lower bounds on the right-hand-side values.

required
upper_bounds NDArray[float64]

The upper bounds on the right-hand-side values.

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64], NDArray[float64]]

A tuple containing the transformed coefficient matrix and bounds.

bound_constraint_diffs_from_optimizer

bound_constraint_diffs_from_optimizer(
    lower_diffs: NDArray[float64],
    upper_diffs: NDArray[float64],
) -> tuple[NDArray[np.float64], NDArray[np.float64]]

Scale differences back by * scale.

Parameters:

Name Type Description Default
lower_diffs NDArray[float64]

Variable value minus lower bound (optimizer domain).

required
upper_diffs NDArray[float64]

Variable value minus upper bound (optimizer domain).

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

A tuple of (lower_diffs, upper_diffs) in user domain.

linear_constraints_diffs_from_optimizer

linear_constraints_diffs_from_optimizer(
    lower_diffs: NDArray[float64],
    upper_diffs: NDArray[float64],
) -> tuple[NDArray[np.float64], NDArray[np.float64]]

Re-scale by the equation weights stored during linear_constraints_to_optimizer.

Parameters:

Name Type Description Default
lower_diffs NDArray[float64]

Linear constraint value minus lower bound.

required
upper_diffs NDArray[float64]

Linear constraint value minus upper bound.

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

A tuple of (lower_diffs, upper_diffs) in user domain.

init

init(mask: NDArray[bool_]) -> None

Apply mask: set scales to 1 and offsets to 0 for unmasked variables.

Parameters:

Name Type Description Default
mask NDArray[bool_]

Boolean array (True = this transform applies).

required

ropt.transforms.default.DefaultObjectiveTransform

Bases: ObjectiveTransform

Linearly scales objectives between domains.

Divides by scales when going to the optimizer domain, multiplies when returning to the user domain.

__init__

__init__(
    transform_config: ObjectiveTransformConfig,
) -> None

Initialize the objective scaler.

Reads scales from the transform configuration options.

Parameters:

Name Type Description Default
transform_config ObjectiveTransformConfig

The transform configuration.

required

to_optimizer

to_optimizer(
    objectives: NDArray[float64],
) -> NDArray[np.float64]

Apply objectives / scales.

Parameters:

Name Type Description Default
objectives NDArray[float64]

Objective values in the user domain.

required

Returns:

Type Description
NDArray[float64]

Transformed objectives in the optimizer domain.

from_optimizer

from_optimizer(
    objectives: NDArray[float64],
) -> NDArray[np.float64]

Apply objectives * scales.

Parameters:

Name Type Description Default
objectives NDArray[float64]

Objective values in the optimizer domain.

required

Returns:

Type Description
NDArray[float64]

Transformed objectives in the user domain.

update

update(scales: ArrayLike) -> None

Set new scaling factors (applies mask if previously initialized).

Parameters:

Name Type Description Default
scales ArrayLike

The new scaling factors.

required

init

init(mask: NDArray[bool_]) -> None

Apply mask: set scales to 1 for unmasked objectives.

Parameters:

Name Type Description Default
mask NDArray[bool_]

Boolean array (True = this transform applies).

required

ropt.transforms.default.DefaultNonlinearConstraintTransform

Bases: NonlinearConstraintTransform

Linearly scales constraints between domains.

Divides by scales when going to the optimizer domain, multiplies when returning to the user domain. Also scales RHS bounds consistently.

__init__

__init__(
    transform_config: NonlinearConstraintTransformConfig,
) -> None

Initialize the constraint scaler.

Reads scales from the transform configuration options.

Parameters:

Name Type Description Default
transform_config NonlinearConstraintTransformConfig

The transform configuration.

required

to_optimizer

to_optimizer(
    constraints: NDArray[float64],
) -> NDArray[np.float64]

Apply constraints / scales.

Parameters:

Name Type Description Default
constraints NDArray[float64]

Constraint values in the user domain.

required

Returns:

Type Description
NDArray[float64]

Transformed constraint values in the optimizer domain.

from_optimizer

from_optimizer(
    constraints: NDArray[float64],
) -> NDArray[np.float64]

Apply constraints * scales.

Parameters:

Name Type Description Default
constraints NDArray[float64]

Constraint values in the optimizer domain.

required

Returns:

Type Description
NDArray[float64]

Transformed constraint values in the user domain.

bounds_to_optimizer

bounds_to_optimizer(
    lower_bounds: NDArray[float64],
    upper_bounds: NDArray[float64],
) -> tuple[NDArray[np.float64], NDArray[np.float64]]

Apply bounds / scales.

Parameters:

Name Type Description Default
lower_bounds NDArray[float64]

Lower RHS bounds in user domain.

required
upper_bounds NDArray[float64]

Upper RHS bounds in user domain.

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

Tuple of (lower_bounds, upper_bounds) in optimizer domain.

nonlinear_constraint_diffs_from_optimizer

nonlinear_constraint_diffs_from_optimizer(
    lower_diffs: NDArray[float64],
    upper_diffs: NDArray[float64],
) -> tuple[NDArray[np.float64], NDArray[np.float64]]

Apply diffs * scales.

Parameters:

Name Type Description Default
lower_diffs NDArray[float64]

Constraint value minus lower bound (optimizer domain).

required
upper_diffs NDArray[float64]

Constraint value minus upper bound (optimizer domain).

required

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

Tuple of (lower_diffs, upper_diffs) in user domain.

update

update(scales: ArrayLike) -> None

Set new scaling factors (applies mask if previously initialized).

Parameters:

Name Type Description Default
scales ArrayLike

The new scaling factors.

required

init

init(mask: NDArray[bool_]) -> None

Apply mask: set scales to 1 for unmasked constraints.

Parameters:

Name Type Description Default
mask NDArray[bool_]

Boolean array (True = this transform applies).

required