sequince.steps.mutation.adaptive.policies.de#

Stage-boundary policies for a fixed bank of DE scale multipliers.

Classes#

DEScaleWeightPolicy

Choose categorical weights only from completed mutation blocks.

ESJDScaleWeightPolicy

Favor DE scales with larger squared displacement per attempted move.

Module Contents#

class sequince.steps.mutation.adaptive.policies.de.DEScaleWeightPolicy[source]#

Bases: Protocol

Choose categorical weights only from completed mutation blocks.

initialise(*, initial_weights, context)[source]#
Parameters:
Return type:

tuple[float, …]

update(*, current_weights, metrics, context)[source]#
Parameters:
Return type:

tuple[float, …]

class sequince.steps.mutation.adaptive.policies.de.ESJDScaleWeightPolicy[source]#

Favor DE scales with larger squared displacement per attempted move.

Parameters:
  • learning_rate (float) – Fraction of the proposed distribution used in each update, in (0, 1]. The remainder retains the current weights.

  • exploration_probability (float) – Fraction of each proposed distribution assigned uniformly, in (0, 1]. Initialization mixes the supplied weights with this uniform fraction too, ensuring every component can be measured. Every weight is then at least exploration_probability / n_components.

  • min_attempts (int) – Require this many attempts in every ordinary component before updating. Sparse blocks and blocks with zero total movement retain the current distribution.

Notes

Scores are squared accepted-jump sums divided by attempts (rejections contribute zero). Explicit unit moves, component -1, are excluded; their probability is not adapted. Scores use mutation coordinates, including any configured transform. They are not normalized for coordinate scale or likelihood cost. Equal-cost proposals make ESJD a movement-per-cost proxy, not a convergence diagnostic. Host conversion occurs only after the mutation block has completed.

learning_rate: float = 0.5#
exploration_probability: float = 0.1#
min_attempts: int = 20#
initialise(*, initial_weights, context)[source]#
Parameters:
Return type:

tuple[float, …]

update(*, current_weights, metrics, context)[source]#
Parameters:
Return type:

tuple[float, …]