Tags: DiegoReategui/GeneticAlgorithmPython
Tags
PyGAD 3.0.1 Fix an issue with passing user-defined function/method for parent selection. ahmedfgad#179
PyGAD 3.0.0 Release PyGAD 3.0.0 Release Notes 1. The structure of the library is changed and some methods defined in the `pygad.py` module are moved to the `pygad.utils`, `pygad.helper`, and `pygad.visualize` submodules. 2. The `pygad.utils.parent_selection` module has a class named `ParentSelection` where all the parent selection operators exist. The `pygad.GA` class extends this class. 3. The `pygad.utils.crossover` module has a class named `Crossover` where all the crossover operators exist. The `pygad.GA` class extends this class. 4. The `pygad.utils.mutation` module has a class named `Mutation` where all the mutation operators exist. The `pygad.GA` class extends this class. 5. The `pygad.helper.unique` module has a class named `Unique` some helper methods exist to solve duplicate genes and make sure every gene is unique. The `pygad.GA` class extends this class. 6. The `pygad.visualize.plot` module has a class named `Plot` where all the methods that create plots exist. The `pygad.GA` class extends this class. ```python ... class GA(utils.parent_selection.ParentSelection, utils.crossover.Crossover, utils.mutation.Mutation, helper.unique.Unique, visualize.plot.Plot): ... ``` 2. Support of using the `logging` module to log the outputs to both the console and text file instead of using the `print()` function. This is by assigning the `logging.Logger` to the new `logger` parameter. Check the [Logging Outputs](https://pygad.readthedocs.io/en/latest/README_pygad_ReadTheDocs.html#logging-outputs) for more information. 3. A new instance attribute called `logger` to save the logger. 4. The function/method passed to the `fitness_func` parameter accepts a new parameter that refers to the instance of the `pygad.GA` class. Check this for an example: [Use Functions and Methods to Build Fitness Function and Callbacks](https://pygad.readthedocs.io/en/latest/README_pygad_ReadTheDocs.html#use-functions-and-methods-to-build-fitness-and-callbacks). ahmedfgad#163 5. Update the documentation to include an example of using functions and methods to calculate the fitness and build callbacks. Check this for more details: [Use Functions and Methods to Build Fitness Function and Callbacks](https://pygad.readthedocs.io/en/latest/README_pygad_ReadTheDocs.html#use-functions-and-methods-to-build-fitness-and-callbacks). ahmedfgad#92 (comment) 6. Validate the value passed to the `initial_population` parameter. 7. Validate the type and length of the `pop_fitness` parameter of the `best_solution()` method. 8. Some edits in the documentation. ahmedfgad#106 9. Fix an issue when building the initial population as (some) genes have their value taken from the mutation range (defined by the parameters `random_mutation_min_val` and `random_mutation_max_val`) instead of using the parameters `init_range_low` and `init_range_high`. 10. The `summary()` method returns the summary as a single-line string. Just log/print the returned string it to see it properly. 11. The `callback_generation` parameter is removed. Use the `on_generation` parameter instead. 12. There was an issue when using the `parallel_processing` parameter with Keras and PyTorch. As Keras/PyTorch are not thread-safe, the `predict()` method gives incorrect and weird results when more than 1 thread is used. ahmedfgad#145 ahmedfgad/TorchGA#5 ahmedfgad/KerasGA#6. Thanks to this [StackOverflow answer](https://stackoverflow.com/a/75606666/5426539). 13. Replace `numpy.float` by `float` in the 2 parent selection operators roulette wheel and stochastic universal. ahmedfgad#168
PyGAD 2.19.2 Release PyGAD 2.19.2 Release Notes 1. Fix an issue when paralell processing was used where the elitism solutions' fitness values are not re-used. ahmedfgad#160 (comment)
PyGAD 2.19.1 Release PyGAD 2.19.1 Release Notes 1. Add the [cloudpickle](https://github.com/cloudpipe/cloudpickle) library as a dependency.
PyGAD 2.18.0 Documentation 1. Raise an exception if the sum of fitness values is zero while either roulette wheel or stochastic universal parent selection is used. ahmedfgad#129 2. Initialize the value of the `run_completed` property to `False`. ahmedfgad#122 3. The values of these properties are no longer reset with each call to the `run()` method `self.best_solutions, self.best_solutions_fitness, self.solutions, self.solutions_fitness`: ahmedfgad#123. Now, the user can have the flexibility of calling the `run()` method more than once while extending the data collected after each generation. Another advantage happens when the instance is loaded and the `run()` method is called, as the old fitness value are shown on the graph alongside with the new fitness values. Read more in this section: [Continue without Loosing Progress](https://pygad.readthedocs.io/en/latest/README_pygad_ReadTheDocs.html#continue-without-loosing-progress) 4. Thanks [Prof. Fernando Jiménez Barrionuevo](http://webs.um.es/fernan) (Dept. of Information and Communications Engineering, University of Murcia, Murcia, Spain) for editing this [comment](https://github.com/ahmedfgad/GeneticAlgorithmPython/blob/5315bbec02777df96ce1ec665c94dece81c440f4/pygad.py#L73) in the code. ahmedfgad@5315bbe 5. A bug fixed when `crossover_type=None`. 6. Support of elitism selection through a new parameter named `keep_elitism`. It defaults to 1 which means for each generation keep only the best solution in the next generation. If assigned 0, then it has no effect. Read more in this section: [Elitism Selection](https://pygad.readthedocs.io/en/latest/README_pygad_ReadTheDocs.html#elitism-selection). ahmedfgad#74 7. A new instance attribute named `last_generation_elitism` added to hold the elitism in the last generation. 8. A new parameter called `random_seed` added to accept a seed for the random function generators. Credit to this issue ahmedfgad#70 and [Prof. Fernando Jiménez Barrionuevo](http://webs.um.es/fernan). Read more in this section: [Random Seed](https://pygad.readthedocs.io/en/latest/README_pygad_ReadTheDocs.html#random-seed). 9. Editing the `pygad.TorchGA` module to make sure the tensor data is moved from GPU to CPU. Thanks to Rasmus Johansson for opening this pull request: ahmedfgad/TorchGA#2
PreviousNext