Canonical configuration structure for evolutionary algorithms.
This module uses Zoi for validation and provides sensible defaults.
Summary
Functions
Get the number of elite entities to preserve.
Initialize random seed if configured.
Create a new configuration with validation.
Create a new configuration, raising on validation errors.
Types
@type t() :: %Jido.Evolve.Config{ checkpoint_interval: nil | nil | integer(), crossover_rate: number(), crossover_strategy: atom(), elitism_rate: number(), evaluation_timeout: integer() | :infinity, generations: integer(), max_concurrency: integer(), metrics_enabled: boolean(), mutation_rate: number(), mutation_strategy: atom(), population_size: integer(), random_seed: nil | nil | integer(), selection_pressure: number(), selection_strategy: atom(), termination_criteria: [ max_generations: integer(), target_fitness: number(), no_improvement: integer() ], tournament_size: integer() }
Functions
@spec elite_count(t()) :: non_neg_integer()
Get the number of elite entities to preserve.
Initialize random seed if configured.
Uses explicit :exs1024 algorithm with deterministic seed tuple for reproducibility across OTP versions.
Create a new configuration with validation.
Examples
iex> {:ok, config} = Jido.Evolve.Config.new(population_size: 50)
iex> config.population_size
50
iex> {:error, _error} = Jido.Evolve.Config.new(population_size: -1)
Create a new configuration, raising on validation errors.
Examples
iex> config = Jido.Evolve.Config.new!(population_size: 50)
iex> config.population_size
50