# basicGA **Repository Path**: hnytzy/basicGA ## Basic Information - **Project Name**: basicGA - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-13 - **Last Updated**: 2024-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Practise Genetic Algorithm in Python [![Build Status](https://travis-ci.com/dothinking/basicGA.svg?branch=master)](https://travis-ci.com/dothinking/basicGA) - single-objective minimization - built-in Individual and Operators for mathematical functions, travelling salesman problem - user-defined Individuals and Operators - based on Numpy An example for solving the minimum solution of common test function `schaffer N4` is shown below. ## Import modules ```python from GA.GAPopulation.DecimalIndividual import DecimalFloatIndividual from GA.GAPopulation.Population import Population from GA.GAOperators.Selection import RouletteWheelSelection from GA.GAOperators.Crossover import DecimalCrossover from GA.GAOperators.Mutation import DecimalMutation from GA.GAProcess import GA import numpy as np ``` ## Initialize GA ```python # individual dimension = 2 ranges = [(-10, 10)] * dimension I = DecimalFloatIndividual(ranges) # population P = Population(I, 50) # operators S = RouletteWheelSelection() C = DecimalCrossover([0.5, 0.9], 0.5) # adaptive crossover rate # C = DecimalCrossover(0.9, 0.5) # constant crossover rate M = DecimalMutation(0.12) # GA g = GA(P, S, C, M) ``` ## Solve ```python # schaffer-N4 # sol: x=[0,1.25313], min=0.292579 schaffer_n4 = lambda x: 0.5 + (np.cos(np.sin(abs(x[0]**2-x[1]**2)))**2-0.5) / (1.0+0.001*(x[0]**2+x[1]**2))**2 res = g.run(schaffer_n4, gen=800) x = [0,1.25313] print('{0} : {1}'.format(res.evaluation, res.solution)) # 0.29257882535592317 : [1.25339239e+00 6.28576519e-05] print('error: {:<3f} %'.format((res.evaluation/schaffer_n4(x)-1.0)*100)) # error: 0.000066 % ```