8000 More details about the project. · rifat17/GeneticAlgorithmPython@96ea4ee · GitHub
[go: up one dir, main page]

Skip to content

Commit 96ea4ee

Browse files
authored
More details about the project.
The steps for running the project are discussed.
1 parent 48ac5a5 commit 96ea4ee

File tree

1 file changed

+120
-5
lines changed

1 file changed

+120
-5
lines changed

README.md

Lines changed: 120 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,127 @@
11
# GeneticAlgorithmPython
2-
Genetic algorithm implementation in Python
2+
This project implements the genetic algorithm (GA) in Python mainly using NumPy.
33

4-
The tutorial discussing the code is available here:
4+
The project has 2 main files which are:
55

6-
https://www.linkedin.com/pulse/genetic-algorithm-implementation-python-ahmed-gad/
6+
1. `ga.py`: Holds all necessary methods for implementing the GA.
77

8-
https://towardsdatascience.com/genetic-algorithm-implementation-in-python-5ab67bb124a6
8+
2. `example.py`: Just gives an example of how to use the project by calling the methods in the `ga.py` file.
99

10-
The GA.py file holds the implementation of the GA operations such as muration and crossover. The other file gives an example of using the GA.py file.
10+
To test the project, you can simply run the `example.py` file.
11+
12+
```
13+
python example.py
14+
```
15+
16+
## How to Use the Project?
17+
18+
To use the project, here is the summary of the minimum required steps:
19+
20+
1. Prepare the required parameters.
21+
2. Import the `ga.py` module.
22+
3. Create an instance of the `GA` class.
23+
4. Train the genetic algorithm.
24+
25+
Let's discuss how to do each of these steps.
26+
27+
### Preparing the Parameters
28+
29+
Before running the GA, some parameters are required such as:
30+
31+
- `equation_inputs` : Inputs of the function to be optimized.
32+
- `equation_output`: Function output.
33+
- `sol_per_pop` : Number of solutions in the population.
34+
`num_parents_mating` : Number of solutions to be selected as parents in the mating pool.
35+
`num_generations` : Number of generations.
36+
- `mutation_percent_genes` : Percentage of genes to mutate.
37+
- `mutation_num_genes` : Number of genes to mutate. If only the `mutation_percent_genes` argument is specified, then the value of `mutation_num_genes` will be implicitly calculated.
38+
39+
Here is the code for preparing such parameters:
40+
41+
```python
42+
function_inputs = [4,-2,3.5,5,-11,-4.7]
43+
function_output = 44
44+
45+
sol_per_pop = 8
46+
num_parents_mating = 4
47+
num_generations = 50
48+
49+
mutation_percent_genes=10
50+
```
51+
52+
### Import the `ga.py` Module
53+
54+
The next step is to import the `ga` module as follows:
55+
56+
```python
57+
import ga
58+
```
59+
60+
This module has a class named `GA` which holds the implementation of all methods for running the genetic algorithm.
61+
62+
### Create an Instance of the `GA` Class.
63+
64+
The `GA` class is instantiated where the previously prepared parameters are fed to its constructor. The constructor is responsible for creating the initial population.
65+
66+
```python
67+
ga_instance = ga.GA(num_generations=num_generations,
68+
sol_per_pop=sol_per_pop,
69+
num_parents_mating=num_parents_mating,
70+
function_inputs=function_inputs,
71+
function_output=function_output,
72+
mutation_percent_genes=10)
73+
```
74+
75+
### Train the Genetic Algorithm
76+
77+
After an instance of the `GA` class is created, the next step is to call the `train()` method as follows:
78+
79+
```python
80+
ga_instance.train()
81+
```
82+
83+
Inside this method, the genetic algorithm evolves over a number of generations by doing the following tasks:
84+
85+
1. Calculating the fitness values of the solutions within the current population.
86+
2. Select the best solutions as parents in the mating pool.
87+
3. Apply the crossover & mutation operation
88+
4. Repeat the process for the specified number of generations.
89+
90+
### Plotting Results
91+
92+
There is a method named `plot_result()` which creates 2 figures summarizing the results.
93+
94+
```python
95+
ga_instance.plot_result()
96+
```
97+
98+
The first figure shows how the solutions' outputs change with the generations.
99+
100+
![Fig01](https://user-images.githubusercontent.com/16560492/78829951-8391d400-79e7-11ea-8edf-e46932dc76da.png)
101+
102+
The second figure shows how the fitness values of the solutions change with the generations.
103+
104+
![Fig02](https://user-images.githubusercontent.com/16560492/78830005-93111d00-79e7-11ea-9d8e-a8d8325a6101.png)
105+
106+
## For More Information
107+
108+
To start with coding the genetic algorithm, you can check the tutorial titled [**Genetic Algorithm Implementation in Python**](https://www.linkedin.com/pulse/genetic-algorithm-implementation-python-ahmed-gad) available at these links:
109+
110+
- https://www.linkedin.com/pulse/genetic-algorithm-implementation-python-ahmed-gad
111+
112+
- https://towardsdatascience.com/genetic-algorithm-implementation-in-python-5ab67bb124a6
113+
114+
[This tutorial](https://www.linkedin.com/pulse/genetic-algorithm-implementation-python-ahmed-gad) is prepared based on a previous version of the project but it still a good resource to start with coding the genetic algorithm.
115+
116+
![Fig03](https://user-images.githubusercontent.com/16560492/78830052-a3c19300-79e7-11ea-8b9b-4b343ea4049c.png)
117+
118+
You can also check my book cited as [**Ahmed Fawzy Gad 'Practical Computer Vision Applications Using Deep Learning with CNNs'. Dec. 2018, Apress, 978-1-4842-4167-7**](https://www.amazon.com/Practical-Computer-Vision-Applications-Learning/dp/1484241665).
119+
120+
![Fig04](https://user-images.githubusercontent.com/16560492/78830077-ae7c2800-79e7-11ea-980b-53b6bd879eeb.jpg)
121+
122+
---
123+
124+
**Important Note**
11125

12126
It is important to note that this project does not implement everything in GA and there are a wide number of variations to be applied. For example, this project uses decimal representation for the chromosome and the binary representations might be preferred for other problems.
13127

@@ -16,6 +130,7 @@ It is important to note that this project does not implement everything in GA an
16130
* [LinkedIn](https://www.linkedin.com/in/ahmedfgad)
17131
* [Amazon Author Page](https://amazon.com/author/ahmedgad)
18132
* [Hearbeat](https://heartbeat.fritz.ai/@ahmedfgad)
133+
* [Paperspace](https://blog.paperspace.com/author/ahmed)
19134
* [KDnuggets](https://kdnuggets.com/author/ahmed-gad)
20135
* [TowardsDataScience](https://towardsdatascience.com/@ahmedfgad)
21136
* [GitHub](https://github.com/ahmedfgad)

0 commit comments

Comments
 (0)
0