一种高效的python遗传算法api

pygenetic的Python项目详细描述


pygenetic:一个高效的通用、用户友好的python遗传算法api

Build StatusMIT Licencedocs

pygenetic是一个python遗传算法api,它在本质上既友好又通用,不像大多数ga api在两者之间进行权衡。

动机

alt text 尽管一些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拓扑查找器,请安装tensorflowkeras

测试

各种测试都存在于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教授

许可证:mit

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java组织。冬眠UnuniqueresultException:查询未返回唯一结果:462   java如何绘制普罗米修斯中计数器的增加   java从安卓保存csv。共享时文件未命名   java错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议   java从排序树映射中获取值   java如何为位于另一个实例内部的实例调用getter方法   java为什么ArrayBlockingQueue构造函数在JDK 8中需要锁   形成如何映射PlayFramework 2的复杂对象。x使用Java   swing Java:将JSON响应(逐行)添加到JTable   在Java中创建带零的int数组字段   如何使用java类?安卓工作室   java对我的代码有问题,线程“main”中出现异常?   java HTTP进入Android Studio API 23级+   java正在从Eclipse创建Oracle数据库连接,但面临一个问题,即找不到适合jdbc的驱动程序:Oracle:thin:@//hostname:1521/SERVICE\u NAME   thymeleafjava:如何将输入字段从html页面发送到控制器的请求参数   hh:mmaa格式的java解析简单时间   尝试用Eclipse编译Hello World时遇到的java问题   处理来自Java的跨平台exec系统调用   java在嵌入式数据库中为Spring批处理创建元数据表