用python3编写的灵活的遗传算法库。
Optivolution的Python项目详细描述
optivolutionpy
一个Python 3中编写的灵活的遗传算法库。
安装
对于python3,只需运行:
$ pip3 install OptivolutionPy
或者克隆此存储库并从项目目录中运行python3 setup.py install。例如:
$ git clone https://github.com/Mhmd-Hisham/OptivolutionPy.git
$ cd OptivolutionPy
$ python3 setup.py install
高级示例
使用光学进化的智能蚂蚁查看此repo了解更多详细信息。
简单示例
求解一维knapsack problem:
#!/usr/bin/env python3importrandomfromoptivolution.populationimportPopulationfromoptivolution.chromosomeimportChromosomeclassOneDimensinalKnapsack(Chromosome):""" Inidividual knapsack object. """maximum_weight=15knapsack_data=[{'name':'box1','value':4,'weight':12},{'name':'box2','value':2,'weight':1},{'name':'box3','value':10,'weight':4},{'name':'box4','value':1,'weight':1},{'name':'box5','value':2,'weight':2}]def__init__(self,genes_length=len(knapsack_data),genes=[]):super().__init__(genes_length,genes)@Chromosome.fitness_propertydeffitness(self):""" Defining the fitness function. """# Use the knapsack value as the fitness valuetotal_value=0total_weight=0foriinrange(self.genes_length):if(self.genes[i]==True):total_value+=self.knapsack_data[i]['value']total_weight+=self.knapsack_data[i]['weight']iftotal_weight>self.maximum_weight:total_value=0returntotal_valuedefrandom_gene(self):""" Defining the random gene. """returnrandom.choice((0,1))classKnapscakPopulation(Population):tournament_sample_percentage=10defrandom_individual(self):""" Defining the random individual in the population. """returnOneDimensinalKnapsack()defmain():population=KnapscakPopulation(population_size=20)population.run(20)print(f"Generation {population.generation_number}")best=population.get_best_individual()# The optimal answer for this test case is# (15, [0, 1, 1, 1, 1])print((best.fitness,best.genes))if__name__=="__main__":main()
输出:
(15, [0, 1, 1, 1, 1])
元
此项目是在gnu gplv3许可下授权的-请检查LICENSE以了解更多详细信息。