genetic

genetic algorithm framework
git clone [email protected]:dracuxan/genetic.git
Log | Files | Refs | README

benchmark.exs (975B)


      1 defmodule DummyProblem do
      2   alias Types.Chromosome
      3   @behaviour Problem
      4 
      5   @impl true
      6   def genotype do
      7     genes = Enum.map(1..10000, fn _ -> Enum.random(0..1) end)
      8     %Chromosome{genes: genes, size: 10000}
      9   end
     10 
     11   @impl true
     12   def fitness_function(chromosome), do: Enum.sum(chromosome.genes)
     13 
     14   @impl true
     15   def terminate?(_pop, gen), do: gen == 1
     16 end
     17 
     18 dummy_pop = Genetic.initialize(&DummyProblem.genotype/0, population_size: 1000)
     19 {dumm_selected_pop, _} = Genetic.select(dummy_pop, selection_rate: 1.0)
     20 
     21 Benchee.run(
     22   %{
     23     "initialize" => fn -> Genetic.initialize(&DummyProblem.genotype/0) end,
     24     "evaluate" => fn ->
     25       Genetic.evaluate(dummy_pop, &DummyProblem.fitness_function/1)
     26     end,
     27     "select" => fn -> Genetic.select(dummy_pop) end,
     28     "crossover" => fn -> Genetic.crossover(dumm_selected_pop) end,
     29     "mutation" => fn -> Genetic.mutation(dummy_pop) end,
     30     "evolve" => fn -> Genetic.evolve(dummy_pop, DummyProblem, 0) end
     31   },
     32   memory_time: 2
     33 )