遗传规划--初探

简介

遗传规划本身是一种最优化算法,以达尔文的进化论思想为基础,采用优胜劣汰,适者生存的策略。
不同于遗传算法的求解最优解,遗传规划一般用于求解最优的解结构,而解的结构一般用图或者树状的结构。

数学表达

定义{(xi, yi); xi∈X, yi∈Y, i∈I} 是给定的一对输入输出集合,其中X, Y均为有限维空间上的子集,I为指标集;C(X)是X上所有连续函数的全体,F是C(X)上的子集,ρ为乘积空间Π(i∈I)上的距离。
则遗传规划是求解f'∈F,使得任意f∈F,有:
GP 数学公式

算法步骤

  1. 初始化(Initialization)
    随机生成多个个体,初始化种群(population)

  2. 评价函数(Evaluation)
    确定适当的适应度函数(Fitness),并评价所有个体

  3. 选择(Selection)
    通过适应度函数和随机因子,在种群中选择下一代的个体

  4. 交换(Crossover)
    随机选中两个个体的子树,进行交换

  5. 突变(Mutation)
    随机选中个体的一个节点,将以节点为根的子树用随机生成的突变树替换

  6. 终止(Terminal Criterion)
    重复步骤2~5,直至满足终止条件
    终止条件,出现是适应度满足需求的个体或者达到循环次数

大致的算法流程图:
GP 流程图

关注点一:初始化种群

终止集

解结构中的叶子节点,一般可以是常量或者变量。以我自己的图像处理为例,一般是输入的图像

函数集

一般是解结构中的运算符,也就是函数。以图像处理为例,多为各种滤波器,一个或者两个输入的滤波器都可以。

解结构
解结构 节点 I 属于终止集,其他节点 f 属于函数集。

关注点二:适应度函数

图像处理过程中,适应度函数相对较为容易确定。一般取目标图像和输出图像的像素差的方差等即可。

关注点三:选择算法

选择算法很多。一般采用轮盘算法,可以在一定程度上平衡物种多样性和优胜劣汰,从而更快得到最优结构。

关注点四:遗传操作-交叉、突变

遗传操作也不局限于这么几种,但交叉(Crossover)和变异(Mutation)是最常见的两种遗传操作。

工具箱

  • C语言 DGPC(Dave’s Genetic Programming code in C)

    • 没有完善文档
    • 添加滤波器、处理图片不方便
  • Matlab GPLab ToolBox √

    • 英文文档
    • 可以通过函数添加滤波器
  • GPOLSV2

    • Matlab 工具箱

图像处理与GPLab

还没有完成程序,但是想法上是这样的: 1. 终止集应该是待处理图像。在GPLab中,个人觉得可以写一个没有参数的函数,返回值是image。 2. 函数集就是图像处理过程中需要的各种滤波器。应该单输入和双输入的滤波器都包含一些。 3. 适应度函数追求简单高效。

--- EOF --- 未完待续

转载于:https://my.oschina.net/gongshang/blog/272130

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值