genetic

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

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)}")