bluemira.optimisation._tools

Collection of utility functions for the module.

Attributes

_FloatOrArray

NO_CODE

Functions

approx_derivative(, args, ...)

Approximate the gradient of a function about a point.

_log_and_raise(→ NoReturn)

_process_slsqp(→ numpy.ndarray)

_process_cobyla(→ numpy.ndarray)

_process_cobyqa(→ numpy.ndarray)

process_scipy_result(→ numpy.ndarray)

Handle a scipy.minimize OptimizeResult object. Process error codes, if any.

_check_bounds(→ None)

Validate that the bounds have the correct dimensions.

_initial_guess_from_bounds(→ numpy.ndarray)

Derive an initial guess for the optimiser.

Module Contents

bluemira.optimisation._tools._FloatOrArray
bluemira.optimisation._tools.NO_CODE = 'Unknown termination code'
bluemira.optimisation._tools.approx_derivative(func: collections.abc.Callable[[numpy.ndarray], _FloatOrArray], x0: numpy.ndarray, method: str = '3-point', rel_step: _FloatOrArray | None = None, f0: _FloatOrArray | None = None, bounds: collections.abc.Iterable[_FloatOrArray] | None = (-np.inf, np.inf), args: tuple[Any, Ellipsis] | None = ()) numpy.ndarray

Approximate the gradient of a function about a point.

Parameters:
  • func (collections.abc.Callable[[numpy.ndarray], _FloatOrArray]) – Function for which to calculate the gradient.

  • x0 (numpy.ndarray) – Point about which to calculate the gradient.

  • method (str) – Finite difference method to use.

  • rel_step (_FloatOrArray | None) – Relative step size to use.

  • f0 (_FloatOrArray | None) – Result of func(x0). If None, this is recomputed.

  • bounds (collections.abc.Iterable[_FloatOrArray] | None) – Lower and upper bounds on individual variables.

  • args (tuple[Any, Ellipsis] | None) – Additional positional arguments to func.

Returns:

approximate gradient of the function about a point.

Return type:

numpy.ndarray

bluemira.optimisation._tools._log_and_raise(alg: str, msg: str) NoReturn
Parameters:
  • alg (str)

  • msg (str)

Return type:

NoReturn

bluemira.optimisation._tools._process_slsqp(res: scipy.optimize._optimize.OptimizeResult) numpy.ndarray
Parameters:

res (scipy.optimize._optimize.OptimizeResult)

Return type:

numpy.ndarray

bluemira.optimisation._tools._process_cobyla(res: scipy.optimize._optimize.OptimizeResult) numpy.ndarray
Parameters:

res (scipy.optimize._optimize.OptimizeResult)

Return type:

numpy.ndarray

bluemira.optimisation._tools._process_cobyqa(res: scipy.optimize._optimize.OptimizeResult) numpy.ndarray
Parameters:

res (scipy.optimize._optimize.OptimizeResult)

Return type:

numpy.ndarray

bluemira.optimisation._tools.process_scipy_result(res: scipy.optimize._optimize.OptimizeResult, alg: str) numpy.ndarray

Handle a scipy.minimize OptimizeResult object. Process error codes, if any.

Parameters:
  • res (scipy.optimize._optimize.OptimizeResult) – Scipy optimise result

  • alg (str)

Returns:

x – The optimal set of parameters (result of the optimisation)

Return type:

np.array

Raises:

OptimisationError – if an error code returned without a usable result.

bluemira.optimisation._tools._check_bounds(n_dims: int, new_bounds: numpy.ndarray) None

Validate that the bounds have the correct dimensions.

Raises:

ValueError – New bounds in not 1D and does not have a size of n_dims

Parameters:
  • n_dims (int)

  • new_bounds (numpy.ndarray)

Return type:

None

bluemira.optimisation._tools._initial_guess_from_bounds(lower: numpy.ndarray, upper: numpy.ndarray) numpy.ndarray

Derive an initial guess for the optimiser.

Takes the center of the bounds for each parameter.

Returns:

Initial guess based on the midpoint of the provided bounds.

Parameters:
  • lower (numpy.ndarray)

  • upper (numpy.ndarray)

Return type:

numpy.ndarray