Understanding Genetic Algorithms and Genetic Programming
Artificial intelligence is everywhere these days. This course teaches you how to implement two types of AI using simple C#. You'll use concepts from biology to evolve solutions to complex problems like optimal subset selection and data ordering.
What you'll learn
Certain problems can't be solved by brute force. Combinatorial problems that involve finding an optimal ordering or subset of data can be extremely challenging to solve if the number of items is too large since the time to test each possible solution can often be prohibitive. In this course, you'll learn how to write artificial intelligence code that uses concepts from biology (like evolution, genetic crossover, and mutation) so the software can evolve optimal solutions to complex problems. The code will be written in fairly simple C#, and no external libraries will be used, so you'll understand all of the details. First, you'll learn how to write a genetic algorithm, which is a technique to manipulate data. You'll learn about different ways to represent potential solutions, as well as techniques for evolving solutions over a number of generations. Different types of crossover and mutation will be discussed, as well as various factors related to evaluating each candidate solution's fitness, which influences which candidates are selected for reproduction. After looking at how genetic algorithms can be used to find optimal solutions for data, you'll learn about genetic programming, which uses similar concepts but evolves actual executable code, rather than simply manipulating data. Genetic programming is particularly well-suited to finding an expression that fits a set of training data. The results of this technique can be used for prediction, estimates, and the like. Finally, you'll discover how genetic programming can be used to perform many complex tasks - controlling processes and making decisions, in particular. The code that results can be quite complex, balancing many different competing factors and constraints. By the end of this course, you'll have a solid foundation to apply these concepts to your own programs.
Table of contents
- Genetic Algorithms Basic Concepts 3m
- Uses for Genetic Algorithms 3m
- The Knapsack Problem 2m
- Non-genetic Algorithm Solutions to the Knapsack Problem 7m
- Genetic Algorithm Main Class 2m
- Representing a Solution 3m
- A Quick Aside About Random Numbers 2m
- Randomly Generating Generation 0 1m
- Handling Invalid Candidate Solutions 2m
- Fitness Evaluation 2m
- Roulette Wheel Selection 2m
- Crossover 2m
- Mutations 2m
- Termination Conditions 2m
- Results Compared to Traditional Solutions 5m
- Next Steps 1m
- Introduction to Optimal Ordering 2m
- The Traveling Salesman Problem 4m
- Basic Classes for the Traveling Salesman Problem 5m
- Genetic Algorithms Main Loop 3m
- Fitness Function Approaches 5m
- Order-sensitive Crossover 6m
- Order-sensitive Mutation 1m
- Results for the Traveling Salesman Problem 3m
- Parameter Adjustments 5m
- Elitism 2m
- Tournament Selection 3m
- Ranked Fitness Scaling 3m
- Displacement Mutation 2m
- Final Test Results 3m
- Resources for Genetic Algorithms 1m
- Deriving a Formula from Data with Genetic Programming 2m
- Tree Representation for Expressions 4m
- Closure 2m
- Tree Crossover and Mutation 4m
- Symbolic Regression: Finding an Equation from Data 5m
- Main Code for Symbolic Regressions 4m
- Expression Tree Node Base Type 3m
- Expression Tree Terminal Nodes 4m
- Expression Tree Function Nodes 3m
- Creating Random Expression Trees 5m
- Implementing Crossover and Mutation 4m
- Another Example: Docking a Spaceship 6m
- Spaceship Problem Primitive Set 2m
- Spaceship Problem Fitness Function 4m
- Test Results Using the Demo Program 3m
- Next Steps 1m
- Advanced Techniques in Genetic Programming 1m
- Problems with Closure 4m
- Terminal Functions 4m
- Example: Choosing a Starting Poker Hand 3m
- Defining the Primitive Set 4m
- Developing a Fitness Function 6m
- Evaluating the Solution Quality 7m
- Reducing Tree Bloat 4m
- Automatically Defined Functions 4m
- Temporary Variables and Looping 4m
- Performance Optimizations 2m
- Resources for Genetic Programming 3m