Jido.Evolve (Jido Evolve v1.0.0)

Copy Markdown View Source

Jido.Evolve is a generic evolutionary algorithm framework for Elixir.

The canonical public API is evolve/1.

Summary

Functions

Run an evolutionary search over a population.

Get version information.

Functions

evolve(opts)

@spec evolve(keyword() | map()) :: Enumerable.t()

Run an evolutionary search over a population.

Required options

  • :initial_population - List of entities to evolve.
  • :fitness - Module implementing evaluate/2.

Optional options

  • :config - %Jido.Evolve.Config{} or config options map/keyword.
  • :context - Context map passed to fitness.evaluate/2.
  • :mutation - Mutation strategy module override.
  • :selection - Selection strategy module override.
  • :crossover - Crossover strategy module override.

Examples

defmodule MyFitness do
  use Jido.Evolve.Fitness

  def evaluate(entity, _ctx), do: {:ok, String.length(entity)}
end

Jido.Evolve.evolve(
  initial_population: ["a", "abc", "ab"],
  fitness: MyFitness
)
|> Enum.to_list()

version()

@spec version() :: String.t()

Get version information.