【遗传编程/基因规划】python DEAP框架学习笔记

本文介绍了Python DEAP框架,用于实现遗传编程。DEAP提供了核心模块如base、creator和tools,以及gp模块用于遗传编程。文章回顾了遗传编程的基本过程,包括初始化族群、适应度评估、选择和遗传操作,并通过DEAP提供的一个符号回归问题的例子详细讲解了如何使用DEAP创建Primitive Set、个体类,以及如何使用Toolbox进行操作注册。最后,文章提到了算法的运行和统计数据的收集。
摘要由CSDN通过智能技术生成

python DEAP框架

DEAP: 一个Python进化算法框架
DEAP 图标

Core核心模块:

  1. base: 基本结构。包含Toolbox(存储自定的EA运行所需的对象和操作), Fitness(个体的适应度的基类)等。
  2. creator: 允许通过动态添加属性或函数来创建符合问题需求的类,常用来创建个体。
  3. tools: 包含多种选择(selection)操作函数,遗传算子操作函数(多种crossover, mutation)等。

还会用到的模块:

  • algorithms (包含常用进化算法),
  • gp (提供了DEAP框架上实行genetic programming的类与方法,如创建GP树的类)
DEAP框架结构示意图 (semanticscholar.org)
DEAP结构示意图

Genetic Programming基本过程回顾

  1. Initialization of Population
    初始化族群:设定 primitive set——设定包含所用函数、操作的函数集(function set),设定包含变量、常量和无参函数的终止集(terminal set)。给定参数,随机生成初始族群。
    * 族群生成方法:grow, full, ramped half and half
  2. Fitness Evaluation
    适应度评估:根据具体问题设计适应度函数(fitness function),评估各个个体的适应度。
  3. Selection
    选择父系:(绝大部分情况)根据适应度,随机选出相对优秀的个体。
    * 选择方法:锦标赛选择法、轮盘赌选择法等
  4. Genetic Operation
    遗传操作:父体通过交叉、变异、复制生成下一代个体。
    * 遗传算子:subtree crossover, one-point crossover, subtree mutation, reproduction
  5. Termination or Iteration
    判断终止或继续迭代

DEAP 举例讲解

DEAP官方文档给出的一个简单GP例子 (符号回归问题): Symbolic Regression Problem: Introduction to GP

在这里令我们的期望曲线为
( x 4 + x 3 + x 2 + x ) (x^4+x^3+x^2+x) (x4+x3+x2+x)
并在[-1, 1]区间设置20个等分点来评估适应度(fitness),来寻找一个GP生成的最拟合的表达式。

以下是对它的讲解,代码部分的comment当中也加入了对代码过程和操作的解读。

0. 导入模块

import math
import random
import operator  # python内部操作符,包含对象比较、逻辑比较、算术运算和序列操作
import numpy
# deap的常用五个模块齐了
from deap import base    # core
from deap import creator # core
from deap import tools	 # core
from deap import gp 
from deap import algorithms

1. Primitive Set的创建

* 注:Primitive set 为function set和terminal set的并集。primitives不是指functions + terminals,primitives仅仅指functions

def protectedDiv(left, right):  # 保护性除法,防崩
    try:
        return left / right
    except ZeroDivisionError:
        
  • 27
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值