IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 遗传编程(Genetic Programming)学习笔记(三):利用DEAP框架创建一个GP表达式 -> 正文阅读

[Python知识库]遗传编程(Genetic Programming)学习笔记(三):利用DEAP框架创建一个GP表达式

DEAP框架

??Python 的 DEAP库是一个进化算法框架,可以帮助我们快速实现各种进化算法,例如遗传算法(GA)、粒子群算法(PSO)、遗传编程(GP)、分布估计算法(EDA)、多目标优化算法等。
??利用DEAP库实现进化算法的基本流程如下:
??- 创建优化问题
??- 定义个体、种群
??- 定义算子(以GP为例,包括选择、交叉、变异)
??- 定义评价函数(评价函数必须要自己定义)
??- 种群迭代

利用DEAP库创建一个GP表达式

??(1)首先创建 primitive set

import operator
from deap import gp

# 创建一个 primitive set: primitiveset(名称,变量个数)  
pset = gp.PrimitiveSet('main111',2)
# 变量默认叫ARG0,ARG1...可以自己改名字,这里的输入参数可以作为terminal
pset.renameArguments(ARG0 = 'x')
pset.renameArguments(ARG1 = 'y')

# 定义function set:addPrimitive(函数名,参数个数)  不同的函数需要的参数个数不一样
# 函数可以是已有的
pset.addPrimitive(operator.add,2)
pset.addPrimitive(operator.mul,2)
pset.addPrimitive(operator.neg,1)  # 取负值
pset.addPrimitive(math.sin,1)
# 函数也可以自己定义
def if_then_else(constraint, output1,output2):
    if constraint:
        return output1
    else:
        return output2
pset.addPrimitive(if_then_else,3)

# 定义terminal set
pset.addTerminal(3)  # 常数
pset.addEphemeralConstant('num',lambda:random.randint(-5,5))  # 随机数:(name,随机数函数)

??(2)根据上述 primitive set 创建表达式

# 三种生成方法,full,grow,half(primitive set,min_depth,max_depth)
# python中树的最大深度是91,最小深度是0(只有一个叶子节点)
expr1 = gp.genFull(pset,0,2)    # list
expr2 = gp.genGrow(pset,1,3)
expr3 = gp.genHalfAndHalf(pset,1,3)
tree = gp.PrimitiveTree(expr1)  # 将表达式形式转换成树形结构

# 编译表达式:必须经过编译才能进行运算
function1 = gp.compile(tree,pset)  
function2 = gp.compile(expr2,pset)  
result = function1(1,2)   # 输入变量值能够得到该表达式的结果
print('result:',result)

注意:步骤(2)只是创建一个gp表达式、编译表达式的示例,实际使用deap库时,直接进行步骤(3)即可。

??(3)创建个体(individual)

from deap import creator,tools,base

# create(类名,继承的类,参数)
creator.create('FitnessMin',base.Fitness,weights=(-1.0,))
creator.create('Individual',gp.PrimitiveTree,fitness = creator.FitnessMin,pset = pset) 
# Individual继承的类是"gp.PrimitiveTree",生成tree-based individual

# 向toolbox注册函数
toolbox = base.Toolbox()   # 实例
# register(函数别名,函数,函数需要的参数)
toolbox.register('expr',gp.genHalfAndHalf,pset = pset,min_ = 3,max_ = 3)  
# 也可以根据需要用genFull、genGrow
toolbox.register('individual',tools.initIterate,creator.Individual,toolbox.expr)

# 生成一个个体
one_individual = toolbox.individual()
# print('individual:',one_individual)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:42:11  更:2021-09-09 11:44:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 13:30:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计