algorithm module
Define the Abstract Base Class of optimisation algorithms.
Abstract methods are mandatory and a TypeError will be raised if you try to
create your own algorithm and omit them.
When you add you own optimisation algorithm, do not forget to add it to the
list of implemented algorithms in the algorithm module.
Todo
Check if it is necessary to pass out the whole elts to
OptimisationAlgorithm?
Todo
Methods and flags to keep the optimisation history or not, and also to save
it or not. See Explorator.
Todo
Better handling of the attribute folder. In particular, a correct value
should be set at the OptimisationAlgorithm instanciation.
- class OptiSol[source]
Bases:
TypedDictHold information on the solution.
- cavity_settings: dict[FieldMap, CavitySettings]
Value of var, but more logical
- cv: NotRequired[float]
Value of constraint violation
- constraints: NotRequired[dict[str, float]]
Maps name of constaint with cv value.
- class OptimisationAlgorithm(*, compensating_elements, objective_factory, design_space, compute_beam_propagation, cavity_settings_factory, reference_simulation_output, optimisation_algorithm_kwargs=None, history_kwargs=None, **kwargs)[source]
Bases:
ABCHolds the optimization parameters, the methods to optimize.
- Parameters:
compensating_elements (
Collection[FieldMap])objective_factory (
ObjectiveFactory)design_space (
DesignSpace)compute_beam_propagation (
Callable[[Mapping[FieldMap,CavitySettings]],SimulationOutput])cavity_settings_factory (
CavitySettingsFactory)reference_simulation_output (
SimulationOutput)optimisation_algorithm_kwargs (
dict[str,Any] |None, default:None)
- __init__(*, compensating_elements, objective_factory, design_space, compute_beam_propagation, cavity_settings_factory, reference_simulation_output, optimisation_algorithm_kwargs=None, history_kwargs=None, **kwargs)[source]
Instantiate the object.
- Parameters:
compensating_elements (
Collection[FieldMap]) – Tunable elements performing compensation.objective_factory (
ObjectiveFactory) – Objects holdingObjectivecreation logic.design_space (
DesignSpace) – HoldsVariable,Constraint.compute_beam_propagation (
Callable[[Mapping[FieldMap,CavitySettings]],SimulationOutput]) – Takes in aSetOfCavitySettings, propages the beam in a version ofeltsthat uses them, and produce aSimulationOutput.cavity_settings_factory (
CavitySettingsFactory) – An object that can createSetOfCavitySettingseasily.reference_simulation_output (
SimulationOutput) – The reference simulation output on the reference accelerator.optimisation_algorithm_kwargs (
dict[str,Any] |None, default:None) – Additional kwargs for algorithm, set by user in the configurationTOML.history_kwargs (
dict[str,Any] |None, default:None) – If given, records in a file the different evaluations of residuals during optimization.
- Return type:
None
- abstractmethod optimize()[source]
Set up optimization parameters and solve the problem.
- Return type:
- Returns:
Gives list of solutions, corresponding objective, convergence violation if applicable, etc.
- abstractmethod _generate_opti_sol(*args, **kwargs)[source]
Takes the results of the optimization in any form, returns dict.
- Return type:
- _format_constraints()[source]
Adapt all
Constraintto this optimisation algorithm.- Return type:
- _norm_wrapper_residuals(var)[source]
Compute norm of residuals vector from array of variable values.
- final _finalize(opti_sol)[source]
End the optimization process.
- In particular:
Save the optimization history if applicable.
Store final residual values in the appropriate
Objectiveinstances.Record final constraint values in history if applicable.
- _to_cavity_settings(var)[source]
Transform
varintoCavitySettings.
- final _evaluate_solution(var)[source]
Evaluate objectives and constraints for a single solution.
Runs the simulation once and returns both, avoiding redundant beam propagation calls when both are needed (e.g. in
_finalize()).
- final _check_consistency(opti_sol, fresh_objectives)[source]
Compare stored objectives with a fresh evaluation.
- _abc_impl = <_abc._abc_data object at 0x7318f91bc640>
- class OptimizationHistory(reference_simulation_output, objectives_names, get_args=(), get_kwargs=None, folder=None, save_interval=100, **kwargs)[source]
Bases:
objectKeep all the settings that were tried.
- Parameters:
- _settings_filename = 'settings.csv'
- _objectives_filename = 'objectives.csv'
- _constraints_filename = 'constraints.csv'
- __init__(reference_simulation_output, objectives_names, get_args=(), get_kwargs=None, folder=None, save_interval=100, **kwargs)[source]
Instantiate the object.
- Parameters:
get_args (
tuple[str,...], default:()) – args and kwargs passed to theSimulationOutput.getmethod. Used to add some values to the output files.get_kwargs (
dict[str,Any] |None, default:None) – args and kwargs passed to theSimulationOutput.getmethod. Used to add some values to the output files.get_kwargs – Keyword arguments for the SimulationOutput.get method.
folder (
Path|str|None, default:None) – Where the histories will be saved. If not provided or None is given, this class will not have any effect and every public method wil be overriden with dummy methods.save_interval (
int, default:100) – Files will be saved everysave_intervaliteration.reference_simulation_output (
SimulationOutput)objectives_names (
Collection[str])
- Return type:
None
- _make_public_methods_useless()[source]
Override some methods so that they do not do anything.
- Return type:
- _init_objective_hist(objectives_names, reference_simulation_output)[source]
Create the objective history, with header and reference values.
- Parameters:
objectives_names (
Collection[str])reference_simulation_output (
SimulationOutput)
- Return type:
- _simulation_output_to_objectives(simulation_output)[source]
Extract and format desired values from
simulation_output.- Parameters:
simulation_output (
SimulationOutput)- Return type:
- add_objective_values(objectives, simulation_output)[source]
Add some objective values.
- Parameters:
objectives (
list)simulation_output (
SimulationOutput)
- Return type: