bluemira.equilibria.optimisation.problem._tikhonov
Classes
Coilset OptimisationProblem for coil currents subject to maximum current bounds. |
|
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.EqCoilsetOptimisationProblemCoilset 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
AlgorithDefaultTolerancesalong with max_eval=100opt_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.EqCoilsetOptimisationProblemUnbounded, 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:
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 constraints to minimise the error for
gamma (float) – Tikhonov regularisation parameter [1/A]
opt_algorithm (bluemira.optimisation.AlgorithmType)
opt_conditions (dict[str, float | int] | None)
opt_parameters (dict[str, float] | None)
max_currents (numpy.typing.ArrayLike | None)
- 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]).