|
| 1 | +.. _header-n0: |
| 2 | + |
| 3 | +Release History |
| 4 | +=============== |
| 5 | + |
| 6 | +.. _header-n2: |
| 7 | + |
| 8 | +PyGAD 1.0.17 |
| 9 | +------------ |
| 10 | + |
| 11 | +Release Date: 15 April 2020 |
| 12 | + |
| 13 | +1. The **pygad.GA** class accepts a new argument named ``fitness_func`` |
| 14 | + which accepts a function to be used for calculating the fitness |
| 15 | + values for the solutions. This allows the project to be customized to |
| 16 | + any problem by building the right fitness function. |
| 17 | + |
| 18 | +.. _header-n7: |
| 19 | + |
| 20 | +PyGAD 1.0.20 |
| 21 | +------------- |
| 22 | + |
| 23 | +Release Date: 4 May 2020 |
| 24 | + |
| 25 | +1. The **pygad.GA** attributes are moved from the class scope to the |
| 26 | + instance scope. |
| 27 | + |
| 28 | +2. Raising an exception for incorrect values of the passed parameters. |
| 29 | + |
| 30 | +3. Two new parameters are added to the **pygad.GA** class constructor |
| 31 | + (``init_range_low`` and ``init_range_high``) allowing the user to |
| 32 | + customize the range from which the genes values in the initial |
| 33 | + population are selected. |
| 34 | + |
| 35 | +4. The code object ``__code__`` of the passed fitness function is |
| 36 | + checked to ensure it has the right number of parameters. |
| 37 | + |
| 38 | +.. _header-n18: |
| 39 | + |
| 40 | +PyGAD 2.0.0 |
| 41 | +------------ |
| 42 | + |
| 43 | +Release Date: 13 May 2020 |
| 44 | + |
| 45 | +1. The fitness function accepts a new argument named ``sol_idx`` |
| 46 | + representing the index of the solution within the population. |
| 47 | + |
| 48 | +2. A new parameter to the **pygad.GA** class constructor named |
| 49 | + ``initial_population`` is supported to allow the user to use a custom |
| 50 | + initial population to be used by the genetic algorithm. If not None, |
| 51 | + then the passed population will be used. If ``None``, then the |
| 52 | + genetic algorithm will create the initial population using the |
| 53 | + ``sol_per_pop`` and ``num_genes`` parameters. |
| 54 | + |
| 55 | +3. The parameters ``sol_per_pop`` and ``num_genes`` are optional and set |
| 56 | + to ``None`` by default. |
| 57 | + |
| 58 | +4. A new parameter named ``callback_generation`` is introduced in the |
| 59 | + **pygad.GA** class constructor. It accepts a function with a single |
| 60 | + parameter representing the **pygad.GA** class instance. This function |
| 61 | + is called after each generation. This helps the user to do |
| 62 | + post-processing or debugging operations after each generation. |
| 63 | + |
| 64 | +.. _header-n29: |
| 65 | + |
| 66 | +PyGAD 2.1.0 |
| 67 | +----------- |
| 68 | + |
| 69 | +Release Date: 14 May 2020 |
| 70 | + |
| 71 | +1. The ``best_solution()`` method in the **pygad.GA** class returns a |
| 72 | + new output representing the index of the best solution within the |
| 73 | + population. Now, it returns a total of 3 outputs and their order is: |
| 74 | + best solution, best solution fitness, and best solution index. Here |
| 75 | + is an example: |
| 76 | + |
| 77 | +.. code:: python |
| 78 | +
|
| 79 | + solution, solution_fitness, solution_idx = ga_instance.best_solution() |
| 80 | + print("Parameters of the best solution :", solution) |
| 81 | + print("Fitness value of the best solution :", solution_fitness, "\n") |
| 82 | + print("Index of the best solution :", solution_idx, "\n") |
| 83 | +
|
| 84 | +1. | A new attribute named ``best_solution_generation`` is added to the |
| 85 | + instances of the **pygad.GA** class. it holds the generation number |
| 86 | + at which the best solution is reached. It is only assigned the |
| 87 | + generation number after the ``run()`` method completes. Otherwise, |
| 88 | + its value is -1. |
| 89 | + | Example: |
| 90 | +
|
| 91 | +.. code:: python |
| 92 | +
|
| 93 | + print("Best solution reached after {best_solution_generation} generations.".format(best_solution_generation=ga_instance.best_solution_generation)) |
| 94 | +
|
| 95 | +1. The ``best_solution_fitness`` attribute is renamed to |
| 96 | + ``best_solutions_fitness`` (plural solution). |
| 97 | + |
| 98 | +.. _header-n42: |
| 99 | + |
| 100 | +PyGAD Projects at GitHub |
| 101 | +======================== |
| 102 | + |
| 103 | +The PyGAD library is available at PyPI at this page |
| 104 | +https://pypi.org/project/pygad. PyGAD is built out of a number of |
| 105 | +open-source GitHub projects. A brief note about these projects is given |
| 106 | +in the next subsections. |
| 107 | + |
| 108 | +.. _header-n44: |
| 109 | + |
| 110 | +`GeneticAlgorithmPython <https://github.com/ahmedfgad/GeneticAlgorithmPython>`__ |
| 111 | +-------------------------------------------------------------------------------- |
| 112 | + |
| 113 | +GitHub Link: https://github.com/ahmedfgad/GeneticAlgorithmPython |
| 114 | + |
| 115 | +`GeneticAlgorithmPython <https://github.com/ahmedfgad/GeneticAlgorithmPython>`__ |
| 116 | +is the first project which is an open-source Python 3 project for |
| 117 | +implementing the genetic algorithm based on NumPy. |
| 118 | + |
| 119 | +.. _header-n47: |
| 120 | + |
| 121 | +`NumPyANN <https://github.com/ahmedfgad/NumPyANN>`__ |
| 122 | +---------------------------------------------------- |
| 123 | + |
| 124 | +GitHub Link: https://github.com/ahmedfgad/NumPyANN |
| 125 | + |
| 126 | +`NumPyANN <https://github.com/ahmedfgad/NumPyANN>`__ builds artificial |
| 127 | +neural networks in **Python 3** using **NumPy** from scratch. The |
| 128 | +purpose of this project is to only implement the **forward pass** of a |
| 129 | +neural network without using a training algorithm. Currently, it only |
| 130 | +supports classification and later regression will be also supported. |
| 131 | +Moreover, only one class is supported per sample. |
| 132 | + |
| 133 | +.. _header-n50: |
| 134 | + |
| 135 | +`NeuralGenetic <https://github.com/ahmedfgad/NeuralGenetic>`__ |
| 136 | +-------------------------------------------------------------- |
| 137 | + |
| 138 | +GitHub Link: https://github.com/ahmedfgad/NeuralGenetic |
| 139 | + |
| 140 | +`NeuralGenetic <https://github.com/ahmedfgad/NeuralGenetic>`__ trains |
| 141 | +neural networks using the genetic algorithm based on the previous 2 |
| 142 | +projects |
| 143 | +`GeneticAlgorithmPython <https://github.com/ahmedfgad/GeneticAlgorithmPython>`__ |
| 144 | +and `NumPyANN <https://github.com/ahmedfgad/NumPyANN>`__. |
| 145 | + |
| 146 | +.. _header-n53: |
| 147 | + |
| 148 | +Submitting Issues |
| 149 | +================= |
| 150 | + |
| 151 | +If there is an issue using PyGAD, then use any of your preferred option |
| 152 | +to discuss that issue. |
| 153 | + |
| 154 | +One way is `submitting an |
| 155 | +issue <https://github.com/ahmedfgad/GeneticAlgorithmPython/issues/new>`__ |
| 156 | +into this GitHub project |
| 157 | +(https://github.com/ahmedfgad/GeneticAlgorithmPython) in case something |
| 158 | +is not working properly or to ask for questions. |
| 159 | + |
| 160 | +If this is not a proper option for you, then check the **Contact Us** |
| 161 | +section for more contact details. |
| 162 | + |
| 163 | +.. _header-n57: |
| 164 | + |
| 165 | +Ask for Feature |
| 166 | +=============== |
| 167 | + |
| 168 | +PyGAD is actively developed with the goal of building a dynamic library |
| 169 | +for suporting a wide-range of problems to be optimized using the genetic |
| 170 | +algorithm. |
| 171 | + |
| 172 | +To ask for a new feature, either `submit an |
| 173 | +issue <https://github.com/ahmedfgad/GeneticAlgorithmPython/issues/new>`__ |
| 174 | +into this GitHub project |
| 175 | +(https://github.com/ahmedfgad/GeneticAlgorithmPython) or send an e-mail |
| 176 | +to ahmed.f.gad@gmail.com. |
| 177 | + |
| 178 | +Also check the **Contact Us** section for more contact details. |
| 179 | + |
| 180 | +.. _header-n61: |
| 181 | + |
| 182 | +Projects Built using PyGAD |
| 183 | +========================== |
| 184 | + |
| 185 | +If you created a project that uses PyGAD, then we can support you by |
| 186 | +mentioning this project here in PyGAD's documentation. |
| 187 | + |
| 188 | +To do that, please send a message at ahmed.f.gad@gmail.com or check the |
| 189 | +**Contact Us** section for more contact details. |
| 190 | + |
| 191 | +Within your message, please send the following details: |
| 192 | + |
| 193 | +- Project title |
| 194 | + |
| 195 | +- Brief description |
| 196 | + |
| 197 | +- Preferably, a link that directs the readers to your project |
| 198 | + |
| 199 | +.. _header-n72: |
| 200 | + |
| 201 | +For More Information |
| 202 | +==================== |
| 203 | + |
| 204 | +There are different resources that can be used to get started with the |
| 205 | +genetic algorithm and building it in Python. |
| 206 | + |
| 207 | +.. _header-n74: |
| 208 | + |
| 209 | +Tutorial: Implementing Genetic Algorithm in Python |
| 210 | +-------------------------------------------------- |
| 211 | + |
| 212 | +To start with coding the genetic algorithm, you can check the tutorial |
| 213 | +titled `Genetic Algorithm Implementation in |
| 214 | +Python <https://www.linkedin.com/pulse/genetic-algorithm-implementation-python-ahmed-gad>`__ |
| 215 | +available at these links: |
| 216 | + |
| 217 | +- `LinkedIn <https://www.linkedin.com/pulse/genetic-algorithm-implementation-python-ahmed-gad>`__ |
| 218 | + |
| 219 | +- `Towards Data |
| 220 | + Science <https://towardsdatascience.com/genetic-algorithm-implementation-in-python-5ab67bb124a6>`__ |
| 221 | + |
| 222 | +- `KDnuggets <https://www.kdnuggets.com/2018/07/genetic-algorithm-implementation-python.html>`__ |
| 223 | + |
| 224 | +`This |
| 225 | +tutorial <https://www.linkedin.com/pulse/genetic-algorithm-implementation-python-ahmed-gad>`__ |
| 226 | +is prepared based on a previous version of the project but it still a |
| 227 | +good resource to start with coding the genetic algorithm. |
| 228 | + |
| 229 | +|image0| |
| 230 | + |
| 231 | +.. _header-n85: |
| 232 | + |
| 233 | +Tutorial: Introduction to Genetic Algorithm |
| 234 | +------------------------------------------- |
| 235 | + |
| 236 | +Get started with the genetic algorithm by reading the tutorial titled |
| 237 | +`Introduction to Optimization with Genetic |
| 238 | +Algorithm <https://www.linkedin.com/pulse/introduction-optimization-genetic-algorithm-ahmed-gad>`__ |
| 239 | +which is available at these links: |
| 240 | + |
| 241 | +- `LinkedIn <https://www.linkedin.com/pulse/introduction-optimization-genetic-algorithm-ahmed-gad>`__ |
| 242 | + |
| 243 | +- `Towards Data |
| 244 | + Science <https://www.kdnuggets.com/2018/03/introduction-optimization-with-genetic-algorithm.html>`__ |
| 245 | + |
| 246 | +- `KDnuggets <https://towardsdatascience.com/introduction-to-optimization-with-genetic-algorithm-2f5001d9964b>`__ |
| 247 | + |
| 248 | +|image1| |
| 249 | + |
| 250 | +.. _header-n95: |
| 251 | + |
| 252 | +Tutorial: Build Neural Networks in Python |
| 253 | +----------------------------------------- |
| 254 | + |
| 255 | +Read about building neural networks in Python through the tutorial |
| 256 | +titled `Artificial Neural Network Implementation using NumPy and |
| 257 | +Classification of the Fruits360 Image |
| 258 | +Dataset <https://www.linkedin.com/pulse/artificial-neural-network-implementation-using-numpy-fruits360-gad>`__ |
| 259 | +available at these links: |
| 260 | + |
| 261 | +- `LinkedIn <https://www.linkedin.com/pulse/artificial-neural-network-implementation-using-numpy-fruits360-gad>`__ |
| 262 | + |
| 263 | +- `Towards Data |
| 264 | + Science <https://towardsdatascience.com/artificial-neural-network-implementation-using-numpy-and-classification-of-the-fruits360-image-3c56affa4491>`__ |
| 265 | + |
| 266 | +- `KDnuggets <https://www.kdnuggets.com/2019/02/artificial-neural-network-implementation-using-numpy-and-image-classification.html>`__ |
| 267 | + |
| 268 | +|image2| |
| 269 | + |
| 270 | +.. _header-n105: |
| 271 | + |
| 272 | +Tutorial: Optimize Neural Networks with Genetic Algorithm |
| 273 | +--------------------------------------------------------- |
| 274 | + |
| 275 | +Read about training neural networks using the genetic algorithm through |
| 276 | +the tutorial titled `Artificial Neural Networks Optimization using |
| 277 | +Genetic Algorithm with |
| 278 | +Python <https://www.linkedin.com/pulse/artificial-neural-networks-optimization-using-genetic-ahmed-gad>`__ |
| 279 | +available at these links: |
| 280 | + |
| 281 | +- `LinkedIn <https://www.linkedin.com/pulse/artificial-neural-networks-optimization-using-genetic-ahmed-gad>`__ |
| 282 | + |
| 283 | +- `Towards Data |
| 284 | + Science <https://towardsdatascience.com/artificial-neural-networks-optimization-using-genetic-algorithm-with-python-1fe8ed17733e>`__ |
| 285 | + |
| 286 | +- `KDnuggets <https://www.kdnuggets.com/2019/03/artificial-neural-networks-optimization-genetic-algorithm-python.html>`__ |
| 287 | + |
| 288 | +|image3| |
| 289 | + |
| 290 | +.. _header-n115: |
| 291 | + |
| 292 | +Book: Practical Computer Vision Applications Using Deep Learning with CNNs |
| 293 | +-------------------------------------------------------------------------- |
| 294 | + |
| 295 | +You can also check my book cited as `Ahmed Fawzy Gad 'Practical Computer |
| 296 | +Vision Applications Using Deep Learning with CNNs'. Dec. 2018, Apress, |
| 297 | +978-1-4842-4167-7 <https://www.amazon.com/Practical-Computer-Vision-Applications-Learning/dp/1484241665>`__ |
| 298 | +which discusses neural networks, convolutional neural networks, deep |
| 299 | +learning, genetic algorithm, and more. |
| 300 | + |
| 301 | +Find the book at these links: |
| 302 | + |
| 303 | +- `Amazon <https://www.amazon.com/Practical-Computer-Vision-Applications-Learning/dp/1484241665>`__ |
| 304 | + |
| 305 | +- `Springer <https://link.springer.com/book/10.1007/978-1-4842-4167-7>`__ |
| 306 | + |
| 307 | +- `Apress <https://www.apress.com/gp/book/9781484241660>`__ |
| 308 | + |
| 309 | +- `O'Reilly <https://www.oreilly.com/library/view/practical-computer-vision/9781484241677>`__ |
| 310 | + |
| 311 | +- `Google Books <https://books.google.com.eg/books?id=xLd9DwAAQBAJ>`__ |
| 312 | + |
| 313 | +.. figure:: https://user-images.githubusercontent.com/16560492/78830077-ae7c2800-79e7-11ea-980b-53b6bd879eeb.jpg |
| 314 | + :alt: |
| 315 | + |
| 316 | +.. _header-n130: |
| 317 | + |
| 318 | +Contact Us |
| 319 | +========== |
| 320 | + |
| 321 | +- E-mail: ahmed.f.gad@gmail.com |
| 322 | + |
| 323 | +- `LinkedIn <https://www.linkedin.com/in/ahmedfgad>`__ |
| 324 | + |
| 325 | +- `Amazon Author Page <https://amazon.com/author/ahmedgad>`__ |
| 326 | + |
| 327 | +- `Heartbeat <https://heartbeat.fritz.ai/@ahmedfgad>`__ |
| 328 | + |
| 329 | +- `Paperspace <https://blog.paperspace.com/author/ahmed>`__ |
| 330 | + |
| 331 | +- `KDnuggets <https://kdnuggets.com/author/ahmed-gad>`__ |
| 332 | + |
| 333 | +- `TowardsDataScience <https://towardsdatascience.com/@ahmedfgad>`__ |
| 334 | + |
| 335 | +- `GitHub <https://github.com/ahmedfgad>`__ |
| 336 | + |
| 337 | +.. |image0| image:: https://user-images.githubusercontent.com/16560492/78830052-a3c19300-79e7-11ea-8b9b-4b343ea4049c.png |
| 338 | + :target: https://www.linkedin.com/pulse/genetic-algorithm-implementation-python-ahmed-gad |
| 339 | +.. |image1| image:: https://user-images.githubusercontent.com/16560492/82078259-26252d00-96e1-11ea-9a02-52a99e1054b9.jpg |
| 340 | + :target: https://www.linkedin.com/pulse/introduction-optimization-genetic-algorithm-ahmed-gad |
| 341 | +.. |image2| image:: https://user-images.githubusercontent.com/16560492/82078281-30472b80-96e1-11ea-8017-6a1f4383d602.jpg |
| 342 | + :target: https://www.linkedin.com/pulse/artificial-neural-network-implementation-using-numpy-fruits360-gad |
| 343 | +.. |image3| image:: https://user-images.githubusercontent.com/16560492/82078300-376e3980-96e1-11ea-821c-aa6b8ceb44d4.jpg |
| 344 | + :target: https://www.linkedin.com/pulse/artificial-neural-networks-optimization-using-genetic-ahmed-gad |
0 commit comments