eekenpiet

eekenpiet

Genetic Algorithms in Elixir: Chapter5 pag82 ebook-1.0.2 Hanging of "tournament_no-duplicates"

The function tournament_no_duplicates keeps hanging, because it will never reach n winners.
In a selection of n chromosomes you can never have n winners.
Maybe you will ever reach n-(tournsize-1) winners.
So I propose a different function.

def tournament_no_duplicates(problem, population, n, tournsize) do
  set =
    tournament(problem, population, n, tournsize)
    |> MapSet.new()
    |> MapSet.to_list()
# you get an error in crossover if this selection is not even.
# therefore I delete the weakest of the list
  if rem(length(set), 2) == 0 do
    set
  else
    Enum.sort_by(set, &problem.fitness_function(&1), :desc)
    List.delete_at(set, -1)
  end
end

Your selection could go to [ ],
therefore the population must be much bigger then the number of generations you run.
Yet you can reach good results.

I added this to the first part of evolve() in Genetic:

if population == [] do
  IO.write("\n\nYou should make your population bigger\n\n")
  raise "Watch it! Population is empty"
end

best = hd(population)
IO.inspect(best, label: "\n\nCurrent best:")
IO.write("Generation: #{generation}")

Where Next?

Popular Pragmatic Bookshelf topics Top

jeffmcompsci
Title: Design and Build Great Web APIs - typo “https://company-atk.herokuapp.com/2258ie4t68jv” (page 19, third bullet in URL list) Typo:...
New
herminiotorres
Hi! I know not the intentions behind this narrative when called, on page XI: mount() |> handle_event() |> render() but the correc...
New
jeremyhuiskamp
Title: Web Development with Clojure, Third Edition, vB17.0 (p9) The create table guestbook syntax suggested doesn’t seem to be accepted ...
New
nicoatridge
Hi, I have just acquired Michael Fazio’s “Kotlin and Android Development” to learn about game programming for Android. I have a game in p...
New
taguniversalmachine
Hi, I am getting an error I cannot figure out on my test. I have what I think is the exact code from the book, other than I changed “us...
New
s2k
Hi all, currently I wonder how the Tailwind colours work (or don’t work). For example, in app/views/layouts/application.html.erb I have...
New
dtonhofer
@parrt In the context of Chapter 4.3, the grammar Java.g4, meant to parse Java 6 compilation units, no longer passes ANTLR (currently 4....
New
New
New
davetron5000
Hello faithful readers! If you have tried to follow along in the book, you are asked to start up the dev environment via dx/build and ar...
New

Other popular topics Top

PragmaticBookshelf
Andy and Dave wrote this influential, classic book to help their clients create better software and rediscover the joy of coding. Almost ...
New
PragmaticBookshelf
From finance to artificial intelligence, genetic algorithms are a powerful tool with a wide array of applications. But you don't need an ...
New
AstonJ
There’s a whole world of custom keycaps out there that I didn’t know existed! Check out all of our Keycaps threads here: https://forum....
New
New
Margaret
Hello everyone! This thread is to tell you about what authors from The Pragmatic Bookshelf are writing on Medium.
1147 29994 760
New
AstonJ
If you’re getting errors like this: psql: error: connection to server on socket “/tmp/.s.PGSQL.5432” failed: No such file or directory ...
New
PragmaticBookshelf
Fight complexity and reclaim the original spirit of agility by learning to simplify how you develop software. The result: a more humane a...
New
Fl4m3Ph03n1x
Background Lately I am in a quest to find a good quality TTS ai generation tool to run locally in order to create audio for some videos I...
New
PragmaticBookshelf
As digital systems increasingly run the world, mastery of the recurring patterns of software development risk is the key to fast and effe...
New
CommunityNews
Open-source implementation of the classic GTA engine now running directly in your browser. Experience the reVC technology demo on DOS.Zon...
New

Sub Categories: