portfolio.exs (592B)
1 defmodule Portfolio do 2 alias Types.Chromosome 3 4 @behaviour Problem 5 @target_fitness 180 6 7 @impl true 8 def genotype do 9 genes = 10 Enum.map(1..10, fn _ -> {:rand.uniform(10), :rand.uniform(10)} end) 11 12 %Chromosome{genes: genes, size: 10} 13 end 14 15 @impl true 16 def fitness_function(chromosome) do 17 chromosome.genes 18 |> Enum.map(fn {roi, risk} -> 2 * roi - risk end) 19 |> Enum.sum() 20 end 21 22 @impl true 23 def terminate?([best | _], _generation) do 24 best.fitness > @target_fitness 25 end 26 end 27 28 {soln, _} = Genetic.run(Portfolio) 29 IO.puts("\nfinal answer: #{inspect(soln)}")