算法框架入门DEAPPython(模组框架方程算法将在)「框架 模型 算法」

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 ToolboxToolbox主要用来封装方程,其用法如下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 FitnessFitness主要和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官网):其中初始化(Initialization)方程可以让我们快速构建个体与种群:例: 用initRepeat创建长度为4的列表,每一个列表上的元素为0或1import 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框架的应用
算法框架入门DEAPPython(模组框架方程算法将在)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息