PyGAD - Python Genetic Algorithm!

PyGAD is anopen-source Python library for building the genetic algorithm andoptimizing machine learning algorithms. It works withKeras andPyTorch.

Try theOptimization Gadget, a freecloud-based tool powered by PyGAD. It simplifies optimization byreducing or eliminating the need for coding while providinginsightful visualizations.

PyGAD supportsdifferent types of crossover, mutation, and parent selection operators.PyGAD allowsdifferent types of problems to be optimized using the genetic algorithmby customizing the fitness function. It works with both single-objectiveand multi-objective optimization problems.

Logo designed byAsmaaKabil

Besides building the genetic algorithm, it builds and optimizes machinelearning algorithms. Currently,PyGAD supports building andtraining (using genetic algorithm) artificial neural networks forclassification problems.

The library is under active development and more features addedregularly. Please contact us if you want a feature to be supported.

Donation & Support

You can donate to PyGAD via:

Installation

To installPyGAD, simply use pip todownload and install the library fromPyPI (Python Package Index). Thelibrary lives a PyPI at this pagehttps://pypi.org/project/pygad.

Install PyGAD with the following command:

pip3installpygad

Quick Start

To get started withPyGAD, simplyimport it.

importpygad

UsingPyGAD, a wide range ofproblems can be optimized. A quick and simple problem to be optimizedusing thePyGAD is finding the bestset of weights that satisfy the following function:

y=f(w1:w6)=w1x1+w2x2+w3x3+w4x4+w5x5+w6x6where(x1,x2,x3,x4,x5,x6)=(4,-2,3.5,5,-11,-4.7)andy=44

The first step is to prepare the inputs and the outputs of thisequation.

function_inputs=[4,-2,3.5,5,-11,-4.7]desired_output=44

A very important step is to implement the fitness function that will beused for calculating the fitness value for each solution. Here is one.

If the fitness function returns a number, then the problem issingle-objective. If alist,tuple, ornumpy.ndarray isreturned, then it is a multi-objective problem (applicable even if asingle element exists).

deffitness_func(ga_instance,solution,solution_idx):output=numpy.sum(solution*function_inputs)fitness=1.0/numpy.abs(output-desired_output)returnfitness

Next is to prepare the parameters ofPyGAD. Here is an example for a setof parameters.

fitness_function=fitness_funcnum_generations=50num_parents_mating=4sol_per_pop=8num_genes=len(function_inputs)init_range_low=-2init_range_high=5parent_selection_type="sss"keep_parents=1crossover_type="single_point"mutation_type="random"mutation_percent_genes=10

After the parameters are prepared, an instance of thepygad.GA classis created.

ga_instance=pygad.GA(num_generations=num_generations,num_parents_mating=num_parents_mating,fitness_func=fitness_function,sol_per_pop=sol_per_pop,num_genes=num_genes,init_range_low=init_range_low,init_range_high=init_range_high,parent_selection_type=parent_selection_type,keep_parents=keep_parents,crossover_type=crossover_type,mutation_type=mutation_type,mutation_percent_genes=mutation_percent_genes)

After creating the instance, therun() method is called to start theoptimization.

ga_instance.run()

After therun() method completes, information about the bestsolution found by PyGAD can be accessed.

solution,solution_fitness,solution_idx=ga_instance.best_solution()print("Parameters of the best solution :{solution}".format(solution=solution))print("Fitness value of the best solution ={solution_fitness}".format(solution_fitness=solution_fitness))prediction=numpy.sum(numpy.array(function_inputs)*solution)print("Predicted output based on the best solution :{prediction}".format(prediction=prediction))
Parametersofthebestsolution:[3.92692328-0.115549462.398733813.29579039-0.740914761.05468517]Fitnessvalueofthebestsolution=157.37320042925006Predictedoutputbasedonthebestsolution:44.00635432206546

There is more to do using PyGAD. Read its documentation to explore thefeatures of PyGAD.

PyGAD’s Modules

PyGAD has the following modules:

  1. The main module has the same name as the librarypygad which isthe main interface to build the genetic algorithm.

  2. Thenn module builds artificial neural networks.

  3. Thegann module optimizes neural networks (for classificationand regression) using the genetic algorithm.

  4. Thecnn module builds convolutional neural networks.

  5. Thegacnn module optimizes convolutional neural networks usingthe genetic algorithm.

  6. Thekerasga module to trainKeras modelsusing the genetic algorithm.

  7. Thetorchga module to trainPyTorchmodels using the genetic algorithm.

  8. Thevisualize module to visualize the results.

  9. Theutils module contains the operators (crossover, mutation,and parent selection) and the NSGA-II code.

  10. Thehelper module has some helper functions.

The documentation discusses these modules.

PyGAD Citation - Bibtex Formatted

If you used PyGAD, please consider citing its paper with the followingdetails:

@article{gad2023pygad,title={Pygad:Anintuitivegeneticalgorithmpythonlibrary},author={Gad,AhmedFawzy},journal={MultimediaToolsandApplications},pages={1--14},year={2023},publisher={Springer}}

pygad Module

pygad Module TOC

More About pygad Module

More About pygad Module TOC

utils Module

visualize Module

helper Module

pygad.nn Module

pygad.gann Module

pygad.gann Module TOC

pygad.cnn Module

pygad.gacnn Module

pygad.gacnn Module TOC

pygad.kerasga Module

pygad.torchga Module

Releases

Releases

Indices and tables