tvanderpol

tvanderpol

Genetic Algorithms in Elixir: Ch 3 chromosome metadata not maintained (~p 144)

After creating the Chromosome type and updating the one_max script, the size attribute isn’t carried through. I realised that in both crossover() and mutation() the new Chromosome instance isn’t being populated by the relevant parent / existing chromosome. I updated the crossover code to

    {c1, c2} = {
      %Chromosome{p1 | genes: h1 ++ t2},
      %Chromosome{p2 | genes: h2 ++ t1}
    }

and similar for mutation:

      %Chromosome{chromosome | genes: Enum.shuffle(chromosome.genes)}

That sorted it out.

Unrelated I’m pretty sure there were some typos in the area where we updated all the framework code to carry the Problem definition through (initialise’s arguments were missing something, from memory) but I didn’t take notes.

Cheers,
Thomas

Marked As Solved

seanmor5

seanmor5

Author of Genetic Algorithms in Elixir

Thanks for pointing this out. I’ll go back through and ensure the metadata is retained correctly throughout implementations. I hope these mistakes aren’t detracting from your experience with the book! I appreciate the help in making the book better for everybody.

Also Liked

patrickdm

patrickdm

I’ve also stumped upon the missing size when I tried to use it in crossover/2 as p1.size instead of recalculating length(p1.genes) at each iteration. I took a while to figure out it was not retained after initializing the chromosome’s population.

About the chromosome update you mention, we can discuss if you really want the age to increase after a crossover (when you get a kind of new chromosome) or if we should consider a new generation only after a mutation. But I think this are not so relevant aspects in respect of the main code’s objective.

Similar consideration goes for the silly optimization I made in evaluate/3, when I opted to use the precalculated fitness for the last sorting step:

...
|> Enum.sort_by(& &1.fitness, &>=/2)
tvanderpol

tvanderpol

To be honest my Elixir is pretty rusty so having to do a bit of debugging and making sure the code is doing what I think it’s doing is added value for me right now. :smiley:

Where Next?

Popular Pragmatic Bookshelf topics Top

jon
Some minor things in the paper edition that says “3 2020” on the title page verso, not mentioned in the book’s errata online: p. 186 But...
New
johnp
Running the examples in chapter 5 c under pytest 5.4.1 causes an AttributeError: ‘module’ object has no attribute ‘config’. In particula...
New
mikecargal
Title: Hands-on Rust: question about get_component (page 295) (feel free to respond. “You dug you’re own hole… good luck”) I have somet...
New
herminiotorres
Hi @Margaret , On page VII the book tells us the example and snippets will be all using Elixir version 1.11 But on page 3 almost the en...
New
Chrichton
Dear Sophie. I tried to do the “Authorization” exercise and have two questions: When trying to plug in an email-service, I found the ...
New
jskubick
I’m under the impression that when the reader gets to page 136 (“View Data with the Database Inspector”), the code SHOULD be able to buil...
New
adamwoolhether
I’m not quite sure what’s going on here, but I’m unable to have to containers successfully complete the Readiness/Liveness checks. I’m im...
New
jonmac
The allprojects block listed on page 245 produces the following error when syncing gradle: “org.gradle.api.GradleScriptException: A prob...
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
SlowburnAZ
Getting an error when installing the dependencies at the start of this chapter: could not compile dependency :exla, "mix compile" failed...
New

Other popular topics Top

DevotionGeo
I know that these benchmarks might not be the exact picture of real-world scenario, but still I expect a Rust web framework performing a ...
New
AstonJ
Thanks to @foxtrottwist’s and @Tomas’s posts in this thread: Poll: Which code editor do you use? I bought Onivim! :nerd_face: https://on...
New
PragmaticBookshelf
Learn different ways of writing concurrent code in Elixir and increase your application's performance, without sacrificing scalability or...
New
AstonJ
Biggest jackpot ever apparently! :upside_down_face: I don’t (usually) gamble/play the lottery, but working on a program to predict the...
New
AstonJ
Was just curious to see if any were around, found this one: I got 51/100: Not sure if it was meant to buy I am sure at times the b...
New
New
New
First poster: AstonJ
Jan | Rethink the Computer. Jan turns your computer into an AI machine by running LLMs locally on your computer. It’s a privacy-focus, l...
New
AstonJ
This is cool! DEEPSEEK-V3 ON M4 MAC: BLAZING FAST INFERENCE ON APPLE SILICON We just witnessed something incredible: the largest open-s...
New
AstonJ
This is a very quick guide, you just need to: Download LM Studio: https://lmstudio.ai/ Click on search Type DeepSeek, then select the o...
New

Sub Categories: