pyevolve中文帮助文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Pyevolve的用户手册中文版
1.1.6基本概念
Raw score:表示由适应度函数返回的还未进行比例换算的适应值。
Fitness score :对Raw score进行比例换算后的适应值,如果你使用线性的比例换算(Scaling.LinearScaling()),fitness score将会使用线性方法进行换算,fitness score代表个体与种群的相关程度。
Sample genome : 是所有genome进行复制的基础
1.2.3对pyevolve进行扩展
对pyevolve进行扩展首先要查看GenomeBase.GenomeBase类的源码。
扩展的基本步骤
1)创建染色体类
2)创建染色体的初始化函数
3)创建遗传算子:选择算子,交叉算子,和变异算子等。
1.3模块
1.3.2基本模块
a) Consts :常量模块
Pyevolve 提供了所有的默认遗传算子,这是为了帮助用户方便的使用API,在常量模块中,你可以找到这些默认的设置,最好的情况是查看常量模块,但是不改变常量模块中的内容。
b)Util :公用模块
公用模块中提供了一些公用的函数,比如列表项的交换,随机功能等。
list2DSwapElement(lst, indexa, indexb):交换矩阵中的元素项。
listSwapElement(lst, indexa, indexb):交换列表中的元素项。
c)FunctionSlot :函数分片模块
Pyevolve中广泛使用函数分片的概念;这个想法是很简单的,每个遗传操作或者说是任何遗传操作能够被分配到一个片,按照这种想法,我们能够添加不止一种的遗传操作,比如说同时进行两种或者更多的变异操作,或者两种或更多的计算操作等,函数分片模块是以FunctionSlot.FunctionSlot类来实现的。
例子:
Def fit_fun(genome):
….
Def fit_fun2(genome):
….
Genome.evaluator.set(fit_fun)
Genome.evaluator.add(fit_fun2)
Print Genome.evaluator #the result is “slot [evaluator] (count:2)”
Print Genome.evaluator[0] # the result is “function fit_fun at <....>”
Print Genome.evaluator[1] # the result is “function fit_fun2 at <...>”
从这个例子可以看出所谓的函数分片:其实是将多个函数(操作)应用与同一个遗传算子。这有益于简化一个函数的代码结构。
Class FunctionSlot的结构
Class FunctionSlot(name='anonymous function',rand_apply=false):
#name:分片的名字
#rand_apply:如果为真,在分片中则只有一个函数将会被应用。
add(func):添加一个函数到分片
apply(index,obj,**args):应用索引函数,index:函数的索引,obj传递给函数的参数,args参数字典传递给函数
applyFunctions(obj,**args):在obj上应用所有的函数分片
set(func): 清除原有的函数分片,添加func为新的函数分片
1.3.3 Genetic Algorithm Core Modules:遗传算法的核心模块
d.1) GSimpleGA:遗传算法引擎
这个模块包括遗传算法引擎(GA engine),所谓遗传引擎代表的是自我的所有遗
传过程。遗传算法引擎包括实现遗传过程的相关函数,包括收敛准则函数等。
GsimpleGA中包括的函数
d.f.1) def ConvergenceCriteria(ga_engine):当种群收敛后,停止进化。
d.f.2) def FitnessStatsCriteria(ga_engine):根据适应值的状态来终止进化
d.f.3) class GSimpleGA(genome, seed=None, interactiveMode=True):遗传算法引擎类,遗传算法的核心,genome 为the sample genome也即使初始种群,当然进化以后上一次的结果为下一次的初始种群。
d.f.4) bestIndividual():返回种群中的最优个体
d.f.5) evolve(frep_stats=0):执行所有的进化代数直到种群收敛,frep_stats为每隔freq_stats代则输出统计信息。
d.f.6) getCurrentGeneration():获取当前代(?是返回当前代数还是返回当前代中的染色体)
d.f.7) getPopulation():返回当前遗传算法引擎内部存在的种群
d.f.8)initialize():初始化遗传算法引擎,创建和初始化种群
d.f.9)printTimeElapsed():返回从开始进化所用时间
d.f.10) selector:这个函数分片表示如果你想更改默认的选择算子。
d.f.11)setCrossoverRate(rate):设置交叉概率p c
d.f.12)setElitism(flag):设置使用杰出选择方法,flag=True时表示使用
d.f.13)setGenerations(num_gens):设置进化代数
d.f.14)setMutationRate(rate):设置变异概率p m
d.f.15)setPopulationSize(size):设置种群规模
d.f.16)terminationCriteria:这个函数分片,用来更换默认的收敛准则。