python return用法_遗传算法(Python) #4 DEAP框架入门

1. DEAP框架简介

DEAP(Distributed Evolutionary Algorithms in Python)是一个热门的Python进化算法框架,我们可以用这个框架在Python内实现遗传算法的应用,本文将介绍DEAP中主要模块的定义与用法,而下一期我们将用DEAP框架解决OneMax问题。

2. base 模组

base模组内有Toolbox和Fitness两个类,一般我们用Toolbox来创建方程,将所有遗传算法的方程都储存于Toolbox内有利于编程的封装;Fitness类用来储存个体适应度,如果要完整使用DEAP框架,必须同时使用Toolbox和Fitness。

2.1 Toolbox

Toolbox主要用来封装方程,其用法如下

from deap import basedef get_abc(a,b,c):     print(f"a:{a}; b:{b}; c:{c}")tools = base.Toolbox()tools.register("get", get_abc, 1,c=3) # register functiontools.get(2) # once registered, functions can be used directly in tools>>> a:1; b:2; c:3

由上例可见,register的参数分别为:原函数的别名;原函数;原函数的参数(可为关键或非关键参数)。使用Toolbox可以大大减少代码量,并通过将其他函数封装进Toolbox使代码简单明了。

2.2 Fitness

Fitness主要和creator模组一起使用来初始化个体的适应度,具体内容将在下一期介绍。

3. creator 模组

我们一般使用creator.create来创建个体与种群。create方程可以拓展其他的类,并同时添加特性(attribute),示例如下:

from deap import creatorcreator.create("styledText",str,size=9,style=dict)# creator.styledText is almost equivalent toclass styledText(str):    size = 9    def __init__(self):        self.style = dict()

4. tools 模组

tools模组包含一系列已定义好的方程,具体内容如下(来源:DEAP官网):

12481f2cfb304e818541c664b6b6007f.png

其中初始化(Initialization)方程可以让我们快速构建个体与种群:

例: 用initRepeat创建长度为4的列表,每一个列表上的元素为0或1

import randomfrom deap import toolsrandom.seed(39)def randomZeroOne():    return(random.randint(0,1))individual = tools.initRepeat(list,randomZeroOne,4)print(individual)>>> [0, 1, 1, 0]

例:用initIterate创建长度为4的列表,列表内容为0-3顺序随机的整数

import randomfrom deap import toolsrandom.seed(39)def random4():    return(random.sample(range(4),4))individual = tools.initIterate(list,random4)print(individual)>>> [1, 3, 2, 0]

交叉(Crossover),突变(Mutate),选择(Selection)为具体的遗传算法方法,脱离了具体例子很难解释,这些方法的应用将在今后的文章中逐一介绍,若对这些概念不了解的,可以查看本系列第二期:遗传算法(Python) #2 基本运算方法详解。

5. 其他模组

DEAP框架内还有algorithms模组,和用以统计每一代数据的tools.Statistics和tools.Logbook,这些内容将在以后的文章中注意介绍。

6.小结

本期文章介绍了DEAP框架内的主要模组/方程,下一期将使用DEAP框架解决OneMax问题,并进一步展示DEAP框架的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值