From cee0fcb1933eafe0e0dd9182b2e571d684c3e4ac Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Mon, 23 May 2022 13:16:11 -0400 Subject: [PATCH] 21 BOM --- .../6-Other/21-GeneticAlgorithms/README.md | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/lessons/6-Other/21-GeneticAlgorithms/README.md b/lessons/6-Other/21-GeneticAlgorithms/README.md index f4ded546..53fc54ce 100644 --- a/lessons/6-Other/21-GeneticAlgorithms/README.md +++ b/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -2,14 +2,12 @@ ## [Pre-lecture quiz](https://black-ground-0cc93280f.1.azurestaticapps.net/quiz/121) -**Genetic Algorithms** (GA) are based on **evolutionary approach** to AI, in which methods of evolution of population is used to obtain an optimal solution for a given problem. They were proposed in 1975 by [John Henry Holland](https://en.wikipedia.org/wiki/John_Henry_Holland). - -> **Watch** [this great video](https://www.youtube.com/watch?v=qv6UVOQ0F44) talking about how computer can learn to play Super Mario using neural networks trained by genetic algorithms. We will learn more about computer learning to play games like that [at the next section](../22-DeepRL/README.md). +**Genetic Algorithms** (GA) are based on an **evolutionary approach** to AI, in which methods of the evolution of a population is used to obtain an optimal solution for a given problem. They were proposed in 1975 by [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). Genetic Algorithms are based on the following ideas: * Valid solutions to the problem can be represented as **genes** -* **Crossover** allows us to combine two solutions together to obtain new valid solution +* **Crossover** allows us to combine two solutions together to obtain a new valid solution * **Selection** is used to select more optimal solutions using some **fitness function** * **Mutations** are introduced to destabilize optimization and get us out of the local minimum @@ -19,40 +17,57 @@ If you want to implement a Genetic Algorithm, you need the following: * On the set of genes Γ we need to define **fitness function** fit: Γ→**R**. Smaller function values correspond to better solutions. * To define **crossover** mechanism to combine two genes together to get a new valid solution crossover: Γ2→Γ. * To define **mutation** mechanism mutate: Γ→Γ. + In many cases, crossover and mutation are quite simple algorithms to manipulate genes as numeric sequences or bit vectors. -Specific implementation of a genetic algorithm can vary from case to case, but overall structure is the following: +The specific implementation of a genetic algorithm can vary from case to case, but the overall structure is the following: -1. Select initial population G⊂Γ +1. Select an initial population G⊂Γ 2. Randomly select one of the operations that will be performed at this step: crossover or mutation 3. **Crossover**: * Randomly select two genes g1, g2 ∈ G * Compute crossover g=crossover(g1,g2) * If fit(g)1) or fit(g)2) - replace corresponding gene in the population by g. 4. **Mutation** - select random gene g∈G and replace it by mutate(g) -5. Repeat from step 2, until we get sufficiently small value of fit, or until the limit on the number of steps is reached. +5. Repeat from step 2, until we get a sufficiently small value of fit, or until the limit on the number of steps is reached. ## Typical Tasks -Tasks typically solved by GA: +Tasks typically solved by Genetic Algorithms include: 1. Schedule optimization 1. Optimal packing 1. Optimal cutting 1. Speeding up exhaustive search -## Notebooks +## ✍️ Exercises: Genetic Algorithms -Go to [Genetic.ipynb](Genetic.ipynb) notebooks to see two examples of using Genetic Algorithms: +Continue your learning in the following notebooks: + +Go to [this notebook](Genetic.ipynb) to see two examples of using Genetic Algorithms: 1. Fair division of treasure -1. 8 Queen Problem +1. 8 Queens Problem + +## Conclusion + +Genetic Algorithms are used to solve many problems, including logistics and search problems. The field is Inspired by research that merged topics in Psychology and Computer Science. + +## 🚀 Challenge + +"Genetic algorithms are simple to implement, but their behavior is difficult to understand." [source](https://wikipedia.org/wiki/Genetic_algorithm) Do some research to find an implementation of a genetic algorithm such as solving a Sudoku puzzle, and explain how it works as a sketch or flowchart. ## [Post-lecture quiz](https://black-ground-0cc93280f.1.azurestaticapps.net/quiz/221) -## Assignment +## Review & Self Study -Your goal is to solve so-called **Diophantine equation** - an equation with integer roots. For example, consider the equation a+2b+3c+4d=30. You need to find integer roots that satisfy this equation. +Watch [this great video](https://www.youtube.com/watch?v=qv6UVOQ0F44) talking about how computer can learn to play Super Mario using neural networks trained by genetic algorithms. We will learn more about computer learning to play games like that [in the next section](../22-DeepRL/README.md). + +## [Assignment: Diophantine Equation](Diophantine.ipynb) + +Your goal is to solve so-called **Diophantine equation** - an equation with integer roots. For example, consider the equation a+2b+3c+4d=30. You need to find the integer roots that satisfy this equation. + +*This assignment is inspired by [this post](https://habr.com/post/128704/).* Hints: @@ -60,7 +75,3 @@ Hints: 1. As a gene, consider using the list of root values Use [Diophantine.ipynb](Diophantine.ipynb) as a starting point. - -*This assignment is inspired by [this post](https://habr.com/post/128704/).* - -> ✅ Todo: conclusion, challenge, reference.