bluemira.optimisation._tools ============================ .. py:module:: bluemira.optimisation._tools .. autoapi-nested-parse:: Collection of utility functions for the module. Attributes ---------- .. autoapisummary:: bluemira.optimisation._tools._FloatOrArray bluemira.optimisation._tools.NO_CODE Functions --------- .. autoapisummary:: bluemira.optimisation._tools.approx_derivative bluemira.optimisation._tools._log_and_raise bluemira.optimisation._tools._process_slsqp bluemira.optimisation._tools._process_cobyla bluemira.optimisation._tools._process_cobyqa bluemira.optimisation._tools.process_scipy_result bluemira.optimisation._tools._check_bounds bluemira.optimisation._tools._initial_guess_from_bounds Module Contents --------------- .. py:data:: _FloatOrArray .. py:data:: NO_CODE :value: 'Unknown termination code' .. py:function:: 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. :param func: Function for which to calculate the gradient. :param x0: Point about which to calculate the gradient. :param method: Finite difference method to use. :param rel_step: Relative step size to use. :param f0: Result of func(x0). If None, this is recomputed. :param bounds: Lower and upper bounds on individual variables. :param args: Additional positional arguments to ``func``. :returns: approximate gradient of the function about a point. .. py:function:: _log_and_raise(alg: str, msg: str) -> NoReturn .. py:function:: _process_slsqp(res: scipy.optimize._optimize.OptimizeResult) -> numpy.ndarray .. py:function:: _process_cobyla(res: scipy.optimize._optimize.OptimizeResult) -> numpy.ndarray .. py:function:: _process_cobyqa(res: scipy.optimize._optimize.OptimizeResult) -> numpy.ndarray .. py:function:: process_scipy_result(res: scipy.optimize._optimize.OptimizeResult, alg: str) -> numpy.ndarray Handle a scipy.minimize OptimizeResult object. Process error codes, if any. :param res: Scipy optimise result :returns: **x** -- The optimal set of parameters (result of the optimisation) :rtype: np.array :raises OptimisationError: if an error code returned without a usable result. .. py:function:: _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 .. py:function:: _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.