Book Image

Hands-On Neuroevolution with Python

By : Iaroslav Omelianenko
Book Image

Hands-On Neuroevolution with Python

By: Iaroslav Omelianenko

Overview of this book

Neuroevolution is a form of artificial intelligence learning that uses evolutionary algorithms to simplify the process of solving complex tasks in domains such as games, robotics, and the simulation of natural processes. This book will give you comprehensive insights into essential neuroevolution concepts and equip you with the skills you need to apply neuroevolution-based algorithms to solve practical, real-world problems. You'll start with learning the key neuroevolution concepts and methods by writing code with Python. You'll also get hands-on experience with popular Python libraries and cover examples of classical reinforcement learning, path planning for autonomous agents, and developing agents to autonomously play Atari games. Next, you'll learn to solve common and not-so-common challenges in natural computing using neuroevolution-based algorithms. Later, you'll understand how to apply neuroevolution strategies to existing neural network designs to improve training and inference performance. Finally, you'll gain clear insights into the topology of neural networks and how neuroevolution allows you to develop complex networks, starting with simple ones. By the end of this book, you will not only have explored existing neuroevolution-based algorithms, but also have the skills you need to apply them in your research and work assignments.
Table of Contents (18 chapters)
Free Chapter
1
Section 1: Fundamentals of Evolutionary Computation Algorithms and Neuroevolution Methods
4
Section 2: Applying Neuroevolution Methods to Solve Classic Computer Science Problems
9
Section 3: Advanced Neuroevolution Methods
14
Section 4: Discussion and Concluding Remarks

Exercises

  1. Try to increase the value of the node_add_prob parameter and see what happens. Does the algorithm produce any number of hidden nodes, and if so, how many?
  2. Try to decrease/increase the compatibility_threshold value. What happens if you set it to 2.0 or 6.0? Can the algorithm find the solution in each case?
  3. Try to set the elitism value to zero in the DefaultReproduction section. See what happens. How long did the evolutionary process take to find an acceptable solution in this case?
  4. Set the survival_threshold value to 0.5 in the DefaultReproduction section. See how this affects speciation during evolution. Why does it?
  5. Increase the additional_num_runs and additional_steps values in order of magnitude to examine further how well the found control strategy is generalized. Is the algorithm still able to find a winning solution?
The last exercise will lead to an increase...