Merged
Conversation
1. Support passing a class to the fitness, crossover, and mutation. #342 2. A new class called `Validation` is created in the new `pygad/utils/validation.py` script. It has a method called `validate_parameters()` to validate all the parameters passed while instantiating the `pygad.GA` class. 3. Refactoring the `pygad.py` script by moving a lot of functions and methods to other classes in other scripts. 4. The `summary()` method was moved to `Helper` class in the `pygad/helper/misc.py` script. 5. The validation code in the `__init__()` method of the `pygad.GA` class is moved to the new `validate_parameters()` method in the new `Validation` class in the new `pygad/utils/validation.py` script. Moreover, the `validate_multi_stop_criteria()` method is also moved to the same class. 6. The GA main workflow is moved into the new `GAEngine` class in the new `pygad/utils/engine.py` script. Specifically, these methods are moved from the `pygad.GA` class to the new `GAEngine` class: 1. `run()` 1. `run_loop_head()` 2. `run_select_parents()` 3. `run_crossover()` 4. `run_mutation()` 5. `run_update_population()` 2. `initialize_population()` 3. `cal_pop_fitness()` 4. `best_solution()` 5. `round_genes()` 7. The `pygad.GA` class now extends the two new classes `utils.validation.Validation` and `utils.engine.GAEngine`. 8. The version of the `pygad.utils` submodule is upgraded from `1.3.0` to `1.4.0`. 9. The version of the `pygad.helper` submodule is upgraded from `1.2.0` to `1.3.0`. 10. The version of the `pygad.visualize` submodule is upgraded from `1.1.0` to `1.1.1`. 11. The version of the `pygad.nn` submodule is upgraded from `1.2.1` to `1.2.2`. 12. The version of the `pygad.cnn` submodule is upgraded from `1.1.0` to `1.1.1`. 13. The version of the `pygad.torchga` submodule is upgraded from `1.4.0` to `1.4.1`. 14. The version of the `pygad.kerasga` submodule is upgraded from `1.3.0` to `1.3.1`. 15. Update the elitism after the evolution ends to fix issue where the best solution returned by the `best_solution()` method is not correct. #337 16. Fix a bug in calling the `numpy.reshape()` function. The parameter `newshape` is removed since it is no longer supported started from NumPy `2.4.0`. https://numpy.org/doc/stable/release/2.4.0-notes.html#removed-newshape-parameter-from-numpy-reshape 17. A minor change in the documentation is made to replace the `newshape` parameter when calling `numpy.reshape()`. 18. Fix a bug in the `visualize/plot.py` script that causes a warning to be given when the plot leged is used with single-objective problems. 19. A new method called `initialize_parents_array()` is added to the `Helper` class in the `pygad/helper/misc.py` script. It is usually called from the methods in the `ParentSelection` class in the `pygad/utils/parent_selection.py` script to initialize the parents array. 20. Add more tests about: 1. Operators (crossover, mutation, and parent selection). 2. The `best_solution()` method. 3. Parallel processing. 4. The `GANN` module. 5. The plots created by the `visualize`. 21. Instead of using repeated code for converting the data type and rounding the genes during crossover and mutation, the `change_gene_dtype_and_round()` method is called from the `pygad.helper.misc.Helper` class. 22. Fix some documentation issues. #336 23. Update the documentation to reflect the recent additions and changes to the library structure.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PyGAD 3.6.0
Support passing a class to the fitness, crossover, and mutation. Accepting classes with __call__ methods implemented, not only functions #342
A new class called
Validationis created in the newpygad/utils/validation.pyscript. It has a method calledvalidate_parameters()to validate all the parameters passed while instantiating thepygad.GAclass.Refactoring the
pygad.pyscript by moving a lot of functions and methods to other classes in other scripts.The
summary()method was moved toHelperclass in thepygad/helper/misc.pyscript.The validation code in the
__init__()method of thepygad.GAclass is moved to the newvalidate_parameters()method in the newValidationclass in the newpygad/utils/validation.pyscript. Moreover, thevalidate_multi_stop_criteria()method is also moved to the same class.The GA main workflow is moved into the new
GAEngineclass in the newpygad/utils/engine.pyscript. Specifically, these methods are moved from thepygad.GAclass to the newGAEngineclass:1.
run()1.
run_loop_head()2.
run_select_parents()3.
run_crossover()4.
run_mutation()5.
run_update_population()2.
initialize_population()3.
cal_pop_fitness()4.
best_solution()5.
round_genes()The
pygad.GAclass now extends the two new classesutils.validation.Validationandutils.engine.GAEngine.The version of the
pygad.utilssubmodule is upgraded from1.3.0to1.4.0.The version of the
pygad.helpersubmodule is upgraded from1.2.0to1.3.0.The version of the
pygad.visualizesubmodule is upgraded from1.1.0to1.1.1.The version of the
pygad.nnsubmodule is upgraded from1.2.1to1.2.2.The version of the
pygad.cnnsubmodule is upgraded from1.1.0to1.1.1.The version of the
pygad.torchgasubmodule is upgraded from1.4.0to1.4.1.The version of the
pygad.kerasgasubmodule is upgraded from1.3.0to1.3.1.Update the elitism after the evolution ends to fix issue where the best solution returned by the
best_solution()method is not correct. Calling best_solution() after a run with elitism doesn't return best solution #337Fix a bug in calling the
numpy.reshape()function. The parameternewshapeis removed since it is no longer supported started from NumPy2.4.0. https://numpy.org/doc/stable/release/2.4.0-notes.html#removed-newshape-parameter-from-numpy-reshapeA minor change in the documentation is made to replace the
newshapeparameter when callingnumpy.reshape().Fix a bug in the
visualize/plot.pyscript that causes a warning to be given when the plot leged is used with single-objective problems.A new method called
initialize_parents_array()is added to theHelperclass in thepygad/helper/misc.pyscript. It is usually called from the methods in theParentSelectionclass in thepygad/utils/parent_selection.pyscript to initialize the parents array.Add more tests about:
1. Operators (crossover, mutation, and parent selection).
2. The
best_solution()method.3. Parallel processing.
4. The
GANNmodule.5. The plots created by the
visualize.Instead of using repeated code for converting the data type and rounding the genes during crossover and mutation, the
change_gene_dtype_and_round()method is called from thepygad.helper.misc.Helperclass.Fix some documentation issues. Fix documentation errors in 'Other Attributes' #336
Update the documentation to reflect the recent additions and changes to the library structure.