遗传算法库

holland的Python项目详细描述


荷兰

python的遗传算法库

Computer programs that "evolve" in ways that resemble natural selection can solve complex problems even their creators do not fully understand

PyPIBuildCoverageDocumentation StatusLicense: MIT

说明

荷兰是Python中实现遗传算法的一个简单、灵活的程序包。该程序设计用于对群体中的个体进行任意编码的任意评估函数进行操作,这两个函数都由用户提供。

安装

Holland可通过Python Package Index (PyPI)获得,并可通过以下方式安装:

pip install holland

使用量

Full Documentation

hello世界!

fromhollandimportEvolverfromholland.libraryimportget_uniform_crossover_functionfromholland.utilsimportbound_valueimportrandom# Define a fitness functiondeffitness_function(genome):message=genome["message"]target="Hello World!"score=0foriinrange(len(message)):score+=abs(ord(target[i])-ord(message[i]))returnscoredefmutation_function(value):mutated_value=ord(value)*random.random()*2returnchr(bound_value(mutated_value,minimum=32,maximum=126,to_int=True))# Define genome parameters for individualsgenome_params={"message":{"type":"[str]","size":len("Hello World!"),"initial_distribution":lambda:chr(random.randint(32,126)),"crossover_function":get_uniform_crossover_function(),"mutation_function":mutation_function,"mutation_rate":0.15}}# Define how to select individuals for reproductionselection_strategy={"pool":{"top":10}}# Run Evolutionevolver=Evolver(fitness_function,genome_params,selection_strategy,should_maximize_fitness=False)final_population=evolver.evolve(stop_conditions={"target_fitness":0})

使用示例运行:

Generation: 0; Top Score: 201:     N~flx.JGcu-*

Generation: 1; Top Score: 98:       Xljlw);mj]f

Generation: 2; Top Score: 64:       =c}kk SmsYf

Generation: 3; Top Score: 37:       Kcjlk$Vms]f

Generation: 4; Top Score: 24:       Cdjkn Smshf

Generation: 5; Top Score: 16:       Idjln Vmshf

Generation: 6; Top Score: 14:       Idjln Voshf

Generation: 7; Top Score: 11:       Hdjln Vmslf

Generation: 8; Top Score: 9:         Hdjln Voslf

Generation: 9; Top Score: 8:         Hdjln Vosle

Generation: 10; Top Score: 7:       Hdmln Vosle

Generation: 11; Top Score: 6:       Hdlln Vosle

Generation: 12; Top Score: 5:       Hdllo Vosle

Generation: 13; Top Score: 4:       Hdllo Vosle!

Generation: 14; Top Score: 3:       Hello Vosle!

Generation: 15; Top Score: 2:       Hello Wosle!

Generation: 16; Top Score: 2:       Hello Wosle!

Generation: 17; Top Score: 1:       Hello Worle!

Generation: 18; Top Score: 1:       Hello Worle!

Generation: 19; Top Score: 1:       Hello Worle!

Generation: 20; Top Score: 0:       Hello World!

最佳基因组:

{'message':['H','e','l','l','o',' ','W','o','r','l','d','!']}

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

推荐PyPI第三方库


热门话题
java正确使用setCellValueFactory   java当使用flavor维度时,设置Android applicationId的正确方法是什么?   java为了在测试用例中并发执行某些步骤,可以克隆WebDriver实例   JAVA中的If语句给出错误   java在kindle上使用JavaFX   java如何在屏幕上显示多个视图时提高性能?   java“重命名”文件项   使用kafka运行Spark流媒体示例时出现java NoSuchMethodError   java如何在查询视图时返回实体列表   java在条件表达式中使用equals方法   java实现了一种回调机制,用于通知插入/更新   java我想用动态的方式把这个json做成表格式,我怎样才能用安卓来制作呢?   java在另一个字符串的特定点输入字符串时遇到问题   java如何在SeleniumWebDriver中选择xpath中具有动态值的对象   JavaJooq生成一个静态方法来调用函数,但没有方法将其作为字段   scala文件名包含斜杠标点符号,并在线程“main”java中给出异常。木卫一。FileNotFoundException:foo/boo/en_en。json(没有这样的文件或目录)   java使用Saxon和XSLT转换JDOM XML文档   使用Java数组   java从smb文件夹读取文件   java在where in子句中没有值时如何执行查询