Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PyGAD 3.4.0 #312

Merged
merged 1 commit into from
Jan 7, 2025
Merged

PyGAD 3.4.0 #312

merged 1 commit into from
Jan 7, 2025

Conversation

ahmedfgad
Copy link
Owner

  1. The delay_after_gen parameter is removed from the pygad.GA class constructor. As a result, it is no longer an attribute of the pygad.GA class instances. To add a delay after each generation, apply it inside the on_generation callback. delay_after_gen warning #283
  2. In the single_point_crossover() method of the pygad.utils.crossover.Crossover class, all the random crossover points are returned before the for loop. This is by calling the numpy.random.randint() function only once before the loop to generate all the K points (where K is the offspring size). This is compared to calling the numpy.random.randint() function inside the for loop K times, once for each individual offspring.
  3. Bug fix in the examples/example_custom_operators.py script. Fix a typo in example_custom_operators #285
  4. While making prediction using the pygad.torchga.predict() function, no gradients are calculated.
  5. The gene_type parameter of the pygad.helper.unique.Unique.unique_int_gene_from_range() method accepts the type of the current gene only instead of the full gene_type list.
  6. Created a new method called unique_float_gene_from_range() inside the pygad.helper.unique.Unique class to find a unique floating-point number from a range.
  7. Fix a bug in the pygad.helper.unique.Unique.unique_gene_by_space() method to return the numeric value only instead of a NumPy array.
  8. Refactoring the pygad/helper/unique.py script to remove duplicate codes and reformatting the docstrings.
  9. The plot_pareto_front_curve() method added to the pygad.visualize.plot.Plot class to visualize the Pareto front for multi-objective problems. It only supports 2 objectives. initial_population not effectively used/retained for multiobjective problems? #279
  10. Fix a bug converting a nested NumPy array to a nested list. For multi-objective optimization, Lists of Saved Best Solution Causes Error When Loadedd #300
  11. The Matplotlib library is only imported when a method inside the pygad/visualize/plot.py script is used. This is more efficient than using import matplotlib.pyplot at the module level as this causes it to be imported when pygad is imported even when it is not needed. Matplotlib imported by pyGAD #292
  12. Fix a bug when minus sign (-) is used inside the stop_criteria parameter (e.g. stop_criteria=["saturate_10", "reach_-0.5"]). "reach" stop criteria with negative valued fitness function #296
  13. Make sure self.best_solutions is a list of lists inside the cal_pop_fitness method. 'numpy.ndarray' object has no attribute 'index' #293
  14. Fix a bug where the cal_pop_fitness() method was using the previous_generation_fitness attribute to return the parents fitness. This instance attribute was not using the fitness of the latest population, instead the fitness of the population before the last one. The issue is solved by updating the previous_generation_fitness attribute to the latest population fitness before the GA completes. ga_instance.best_solution() only returning best parameters and fitness of previous Generation  #291

1. The `delay_after_gen` parameter is removed from the `pygad.GA` class constructor. As a result, it is no longer an attribute of the `pygad.GA` class instances. To add a delay after each generation, apply it inside the `on_generation` callback. #283
2. In the `single_point_crossover()` method of the `pygad.utils.crossover.Crossover` class, all the random crossover points are returned before the `for` loop. This is by calling the `numpy.random.randint()` function only once before the loop to generate all the K points (where K is the offspring size). This is compared to calling the `numpy.random.randint()` function inside the `for` loop K times, once for each individual offspring.
3. Bug fix in the `examples/example_custom_operators.py` script. #285
4. While making prediction using the `pygad.torchga.predict()` function, no gradients are calculated.
5. The `gene_type` parameter of the `pygad.helper.unique.Unique.unique_int_gene_from_range()` method accepts the type of the current gene only instead of the full gene_type list.
6. Created a new method called `unique_float_gene_from_range()` inside the `pygad.helper.unique.Unique` class to find a unique floating-point number from a range.
7. Fix a bug in the `pygad.helper.unique.Unique.unique_gene_by_space()` method to return the numeric value only instead of a NumPy array.
8. Refactoring the `pygad/helper/unique.py` script to remove duplicate codes and reformatting the docstrings.
9. The plot_pareto_front_curve() method added to the pygad.visualize.plot.Plot class to visualize the Pareto front for multi-objective problems. It only supports 2 objectives. #279
10. Fix a bug converting a nested NumPy array to a nested list. #300
11. The `Matplotlib` library is only imported when a method inside the `pygad/visualize/plot.py` script is used. This is more efficient than using `import matplotlib.pyplot` at the module level as this causes it to be imported when `pygad` is imported even when it is not needed. #292
12. Fix a bug when minus sign (-) is used inside the `stop_criteria` parameter (e.g. `stop_criteria=["saturate_10", "reach_-0.5"]`). #296
13. Make sure `self.best_solutions` is a list of lists inside the `cal_pop_fitness` method. #293
14. Fix a bug where the `cal_pop_fitness()` method was using the `previous_generation_fitness` attribute to return the parents fitness. This instance attribute was not using the fitness of the latest population, instead the fitness of the population before the last one. The issue is solved by updating the `previous_generation_fitness` attribute to the latest population fitness before the GA completes. #291
@ahmedfgad ahmedfgad merged commit e97b18b into master Jan 7, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant