quantity_is_between module

Define an objective that is a quantity must be within some bounds.

Todo

Implement loss functions.

class QuantityIsBetween(name: str, weight: float, get_key: str, get_kwargs: dict[str, Element | str | bool], limits: tuple[float, float], descriptor: str | None = None, loss_function: str | None = None)

Bases: Objective

Quantity must be within some bounds.

__init__(name: str, weight: float, get_key: str, get_kwargs: dict[str, Element | str | bool], limits: tuple[float, float], descriptor: str | None = None, loss_function: str | None = None) None

Set complementary SimulationOutput.get() flags, reference value.

Parameters:
  • get_key (str) – Name of the quantity to get, which must be an attribute of SimulationOutput.

  • get_kwargs (dict[str, Element | str | bool]) – Keyword arguments for the SimulationOutput.get() method. We do not check its validity, but in general you will want to define the keys elt and pos. If objective concerns a phase, you may want to precise the to_deg key. You also should explicit the to_numpy key.

  • limits (tuple[float, float]) – Lower and upper bound for the value.

  • loss_function (str | None, optional) – Indicates how the residues are handled whe the quantity is outside the limits. The default is None.

base_str() str

Tell nature and position of objective.

__str__() str

Give objective information value.

_value_getter(simulation_output: SimulationOutput) float

Get desired value using SimulationOutput.get() method.

evaluate(simulation_output: SimulationOutput) float

Compute residue of this objective.

Parameters:

simulation_output (SimulationOutput | float) – Object containing simulation results of the broken linac.

Returns:

residue – Difference between current evaluation and ideal_value value for self.name, scaled by self.weight.

Return type:

float

_compute_residues(value: float) float

Compute the residues.

_abc_impl = <_abc._abc_data object at 0x7f36f755f340>