this is amazing. you really are good at teaching these things. would love to see similar series on reinforcement learning methods like actor-critic or deep q-learning.
I noticed you have a lot of getters and setters. I would suggest looking at a project Lombok. You can generate getters and setters by using annotations. You can even generate constructors, that initialize final values by using @AllArgsConstructor annotation before the class or generate data classes. There are more things it can do but that's the basics :)
Original paper actually shows recursive examples. You just need to handle them by detecting cycles and not running them more than once when evaluating if you want to stay true to the paper.
Great series, I love it. Why exactly is there the hashCode() in NodeGene when you could just call getInnovation_number()? And is there a point to having the Genome connections and nodes directly instantiated or is that preference?
about the first question: there were some discussions about this on the web and it turned out (kinda logical), that connections do not really require innovation numbers because connections are defined using the innovation numbers of the connected nodes. So when hashing, I did not want to rely on the innovation number which basically has no meaning but on the hashcode. The innovation number is only a tracker of which connection has been generated at what time. And yes thats only preference.
this is amazing. you really are good at teaching these things. would love to see similar series on reinforcement learning methods like actor-critic or deep q-learning.
I noticed you have a lot of getters and setters. I would suggest looking at a project Lombok. You can generate getters and setters by using annotations. You can even generate constructors, that initialize final values by using @AllArgsConstructor annotation before the class or generate data classes. There are more things it can do but that's the basics :)
Original paper actually shows recursive examples. You just need to handle them by detecting cycles and not running them more than once when evaluating if you want to stay true to the paper.
Great series! Thanks!
Can't wait for a part 3 XD
Great series, I love it. Why exactly is there the hashCode() in NodeGene when you could just call getInnovation_number()? And is there a point to having the Genome connections and nodes directly instantiated or is that preference?
about the first question:
there were some discussions about this on the web and it turned out (kinda logical), that connections do not really require innovation numbers because connections are defined using the innovation numbers of the connected nodes.
So when hashing, I did not want to rely on the innovation number which basically has no meaning but on the hashcode.
The innovation number is only a tracker of which connection has been generated at what time.
And yes thats only preference.
Awesome series can't wait for part 3
Tomorrow as far as planned. Will have a new mic. :)
@@finneggers6612 OMG incredible!! can't wait to keep working on this project
@@2yaya123 bad news. maybe, maybe you need to wait till thursday. Have been invited over to dinner tomorrow. I will hurry up tho
@@finneggers6612 Ok man no worries enjoy dinner
Exciting :D
THX for the vids
Nice THX