Description
In this course, you will :
- Learn the fundamentals of Genetic Algorithms in Elixir.
- Discover how to create a framework for using Genetic Algorithms.
- Investigate the selection, crossover, mutation, and reinsertion processes.
- Benchmarking and profiling the performance of the Genetic Algorithms
- Investigate various methods of visualising Genetic Algorithms, as well as testing and typing your code.
- Discover everything you need to know to get started with genetic algorithms.
Syllabus :
1. Writing Your First Genetic Algorithm
- Understanding Genetic Algorithms
- Role of Exploration and Exploitation in Genetic Algorithms
- Introducing the One-Max Problem
- Understanding the Flow of Genetic Algorithms
- The Evaluation, Selection and Crossover Steps
- Adding Mutation to our Genetic Algorithm
2. Breaking Down Genetic Algorithms
- Looking Deeper into Genetic Algorithms
- Selection, Crossover, Mutation and Termination
- Building a Framework for Genetic Algorithms
- Adding the Missing Pieces to Functions
- Understanding Hyperparameters
- Solving the One-Max Problem Again
3. Encoding Problems and Solutions
- Understanding and Creating Chromosomes
- Using Behaviours to Model Problems
- Creating the Problem Behaviour
- Understanding and Choosing Genotypes
- Using the New Framework in One-Max problem
- Using the New Framework in spelling word problem
4. Evaluating Solutions and Populations
- Optimizing Cargo Loads
- Introducing Penalty Functions
- Defining Termination Criteria
- Applying Termination Criteria to the Cargo Problem
- Crafting Fitness Functions
- Exploring Different Types of Optimization
5. Selecting the Best
- Exploring Selection
- Customizing Selection in Your Framework
- Implementing Common Selection Strategies
- Tournament Selection
- Roulette Selection
6. Generating New Solutions
- Introducing N-Queens
- Solving N-Queens with Order-One Crossover
- Exploring Crossover
- Uniform Crossover
- Whole Arithmetic Recombination
- Crossing Over More Than Two Parents
- Implementing Chromosome Repairment
7. Preventing Premature Convergence
- Breaking Codes with Genetic Algorithms
- Understanding Mutation
- Customizing Mutation in Your Framework
- Implementing Common Mutation Strategies
- Other Methods to Combat Convergence
8. Replacing and Transitioning
- Creating a Class Schedule
- Understanding Reinsertion
- Implementing Reinsertion Strategies
- Experimenting with Reinsertion
- Different Populations in Genetic Algorithms
9. Tracking Genetic Algorithms
- Using Genetic Algorithms to Simulate Evolution
- Logging Statistics Using ETS
- Tracking Statistics in Your Framework
- Finding the Average Tiger
- Tracking Genealogy in a Genealogy Tree
- Tracking Genealogy in Your Framework
10. Visualizing the Results
- Visualizing the Genealogy of the Tiger Evolution
- Visualizing Basic Statistics
- Playing Tetris with Genetic Algorithms
- Creating and Running the Tetris Game
11. Optimizing Your Algorithms
- Benchmarking and Profiling Genetic Algorithms
- Using Benchee to Analyze Performance
- Identifying Bottlenecks with ExProf
- Writing Fast Elixir
- Improving Performance with Parallelization
- Treating Chromosomes as Processes
- Improving Performance with NIFs
12. Writing Tests and Code Quality
- Understanding Randomness
- Writing Property Tests with ExUnit
- Cleaning Up Your Framework
- Writing Type Specifications
13. Moving Forward
- Genetic Algorithms Role in AI
- Genetic Algorithms in Real Life Applications
- Evolving Neural Networks