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 )