bluemira.equilibria.optimisation.problem._tikhonov

Classes

TikhonovCurrentCOP

Coilset OptimisationProblem for coil currents subject to maximum current bounds.

UnconstrainedTikhonovCurrentGradientCOP

Unbounded, unconstrained, analytically optimised current gradient vector for minimal

Module Contents

class bluemira.equilibria.optimisation.problem._tikhonov.TikhonovCurrentCOP(eq: bluemira.equilibria.equilibrium.Equilibrium, targets: bluemira.equilibria.optimisation.constraints.MagneticConstraintSet, gamma: float, opt_algorithm: bluemira.optimisation.AlgorithmType = Algorithm.SLSQP, opt_conditions: dict[str, float | int] | None = None, opt_parameters: dict[str, float] | None = None, max_currents: numpy.typing.ArrayLike | None = None, constraints: list[bluemira.equilibria.optimisation.constraints.UpdateableConstraint] | None = None)

Bases: bluemira.equilibria.optimisation.problem.base.EqCoilsetOptimisationProblem

Inheritance diagram of bluemira.equilibria.optimisation.problem._tikhonov.TikhonovCurrentCOP

Coilset OptimisationProblem for coil currents subject to maximum current bounds.

Coilset currents optimised using objectives.regularised_lsq_objective as objective function.

Parameters:
  • eq (bluemira.equilibria.equilibrium.Equilibrium) – Equilibrium object (used to update magnetic field targets) with Coilset to optimise.

  • targets (bluemira.equilibria.optimisation.constraints.MagneticConstraintSet) – Set of magnetic field targets to use in objective function.

  • gamma (float) – Tikhonov regularisation parameter in units of [A⁻¹].

  • opt_algorithm (bluemira.optimisation.AlgorithmType) – Optimiser algorithm

  • opt_conditions (dict[str, float | int] | None) – optimiser conditions for defaults see AlgorithDefaultTolerances along with max_eval=100

  • opt_parameters (dict[str, float] | None) – optimisation parameters

  • max_currents (numpy.typing.ArrayLike | None) – Maximum allowed current for each independent coil current in coilset [A]. If specified as a float, the float will set the maximum allowed current for all coils.

  • constraints (list[bluemira.equilibria.optimisation.constraints.UpdateableConstraint] | None) – Optional list of UpdatableConstraint objects storing information about constraints that must be satisfied during the coilset optimisation, to be provided to the optimiser.

gamma
optimise(x0=None, *, fixed_coils=True, keep_history: bool = False, check_constraints: bool = False, verbose: bool = False) bluemira.equilibria.optimisation.problem.base.CoilsetOptimiserResult

Solve the optimisation problem

Parameters:
  • fixed_coils – Whether or not to update to coilset response matrices

  • keep_history (bool)

  • check_constraints (bool)

  • verbose (bool)

Returns:

Optimised CoilSet

Return type:

coilset

class bluemira.equilibria.optimisation.problem._tikhonov.UnconstrainedTikhonovCurrentGradientCOP(eq: bluemira.equilibria.equilibrium.Equilibrium, targets: bluemira.equilibria.optimisation.constraints.MagneticConstraintSet, gamma: float, opt_algorithm: bluemira.optimisation.AlgorithmType = Algorithm.SLSQP, opt_conditions: dict[str, float | int] | None = None, opt_parameters: dict[str, float] | None = None, max_currents: numpy.typing.ArrayLike | None = None)

Bases: bluemira.equilibria.optimisation.problem.base.EqCoilsetOptimisationProblem

Inheritance diagram of bluemira.equilibria.optimisation.problem._tikhonov.UnconstrainedTikhonovCurrentGradientCOP

Unbounded, unconstrained, analytically optimised current gradient vector for minimal error to the L2-norm of a set of magnetic constraints (used here as targets).

This is useful for getting a preliminary Equilibrium

Parameters:
gamma
optimise(**_) bluemira.equilibria.optimisation.problem.base.CoilsetOptimiserResult

Optimise the prescribed problem.

Notes

The weight vector is used to scale the response matrix and constraint vector. The weights are assumed to be uncorrelated, such that the weight matrix W_ij used to define (for example) the least-squares objective function (Ax - b)ᵀ W (Ax - b), is diagonal, such that weights[i] = w[i] = sqrt(W[i,i]).

Return type:

bluemira.equilibria.optimisation.problem.base.CoilsetOptimiserResult