一种高效的python遗传算法api
pygenetic的Python项目详细描述
pygenetic:一个高效的通用、用户友好的python遗传算法api
pygenetic是一个python遗传算法api,它在本质上既友好又通用,不像大多数ga api在两者之间进行权衡。
动机
尽管一些api(如deap)和许多更新的api(非常高效且通用)在本质上不太友好,但其他api(如遗传学)和其他较小的api(在用户友好性方面最好)在本质上不太通用。这个api打算在用户友好性和通用性方面取得平衡。
功能
- 同时存在高级(
SimpleGA
)和低级api(GAEngine
),用户可以根据需要使用它们。 - 非常通用的API-用户可以自定义GA的不同部分,包括进化、统计、不同的处理程序、染色体表示。
- 使用apache spark支持高效的演进执行。这是高度可扩展的,因为可以部署更多的工人。适应度评估、选择、交叉和突变的并行化被考虑。
- 支持基于种群多样性的自适应突变率。
- 支持名人堂(有史以来最好的染色体)注射,这样最好的染色体不会因为使用的选择方法而在后代中丢失。
- 支持高效的迭代暂停
- 支持统计数据的可视化,如最大值、最小值、平均值、适应度多样性、突变率。用户还可以定义自定义统计信息
- 支持在一次GA执行中使用多个交叉和突变以增强多样性
- 支持人口控制(控制人口规模或允许人口增长/缩小),用户可以在各种研究目的中加以利用
- 提供一系列标准选择、交叉、突变和适应度函数
- 提供继续演进功能,以便用户可以从以前的演进继续,而不是重新开始。
- 使用ga功能提供ann最佳拓扑查找器
安装
pygenetic发布在pypi(https://pypi.org/project/pygenetic/)上,可以通过以下方式轻松安装:
$ pip3 install pygenetic
要使用pyspark功能,请安装pyspark
、apache spark、scala和jvm。
要使用ann拓扑查找器,请安装tensorflow
和keras
测试
各种测试都存在于tests/
目录中。主要的api测试可以通过以下方式进行测试:
$ pytest tests/modules
用法
高级api基本用法
from pygenetic import SimpleGA
ga = SimpleGA.SimpleGA(minValue=1,maxValue=120,
noOfGenes=20,fitness_func=lambda x:sum(x),
duplicates=False,population_size=1000,
fitness_type='max')
ga.evolve(100)
print(ga.best_fitness)
低级API基本用法
from pygenetic import ChromosomeFactory, GAEngine, Utils
factory = ChromosomeFactory.ChromosomeRangeFactory(
noOfGenes=8,minValue=1,maxValue=8)
ga = GAEngine.GAEngine(factory,100,fitness_type=('equal',8)
,mut_prob = 0.3)
ga.addCrossoverHandler(Utils.CrossoverHandlers.distinct)
ga.addMutationHandler(Utils.MutationHandlers.swap)
ga.setSelectionHandler(Utils.SelectionHandlers.best)
ga.setFitnessHandler(Utils.Fitness.addition)
ga.evolve(10)
print(ga.best_fitness)
更高级的用法和教程
我们的python包在ReadTheDocs上有大量的文档。此外,请参阅this了解分步教程。
有关使用pygenetic解决不同气体的示例,请参阅examples
。
GA在线执行
安装pythonflask
并运行
$ python3 flask/views.py
输入遗传算法所需的所有字段。你可以在线运行遗传算法,得到每一代最好的5条染色体,然后进行统计。您还可以根据表单中的所有用户输入下载等效的pygenic代码
作者
特别提及
- 特别感谢Ganesh K、Rahul Bhardwaj和Hardik Surana,他们将为他们的设计模式项目(https://github.com/ganesh-k13/GOF-Templates)制作的UI作为我们的Web GUI的初始模板。
- 特别感谢我们的项目指南Chitra G M教授