进化计算-遗传算法之史上最全选择策略

2023-11-15

在这里插入图片描述

获取更多资讯,赶快关注上面的公众号吧!

第十九章 遗传算法-史上最全选择策略

从群体中选择优胜的个体,淘汰劣质个体的操作叫选择。选择算子有时又称为再生算子(reproduction operator)。选择的目的是把优化的个体(或解)直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的,目前常用的选择算子有以下几种:轮盘赌、锦标赛、截断选择、蒙特卡洛选择、概率选择、线性排序、指数排序、玻尔兹曼、随机遍历、精英选择等,接下来作详细介绍。

19.1 轮盘赌选择(Roulette-wheel selection)

轮盘赌选择法是依据个体的适应度值计算每个个体在子代中出现的概率,并按照此概率随机选择个体构成子代种群,因此该方法也被称为适应度比例法。轮盘赌选择策略的出发点是适应度值越好的个体被选择的概率越大。因此,在求解最大化问题的时候,我们可以直接采用适应度值来进行选择。但是在求解最小化问题的时候,我们必须首先将问题的适应度函数进行转换(如采用倒数或相反数),以将问题转化为最大化问题。
在这里插入图片描述
为了计算选择概率P(i),需要用到每个个体i的适应度值fi:
P ( i ) = f i ∑ j = 0 N − 1 f j (1) P\left( i \right) = \frac{{{f_i}}}{{\sum\nolimits_{j = 0}^{N - 1} {{f_j}} }}\tag 1 P(i)=j=0N1fjfi(1)

从给定种群中选出M个个体就等价于旋转M次轮盘,在选择个体前实际上不必对种群中的个体进行排序。注意式(1)中默认假定所有适应度值为正值,且适应度值之和不为0。为了能够处理负的适应度值,可以采用一种改进的公式来计算选择概率。

P ′ ( i ) = f i − f min ⁡ ∑ j = 0 N − 1 ( f j − f min ⁡ ) (2) P^{\prime}(i)=\frac{f_{i}-f_{\min }}{\sum_{j=0}^{N-1}\left(f_{j}-f_{\min }\right)}\tag 2 P(i)=j=0N1(fjfmin)fifmin(2)

其中 f min ⁡ = min ⁡ i ∈ [ 0 , N ) { f i , 0 } f_{\min }=\min _{i \in[0, N)}\left\{f_{i}, 0\right\} fmin=mini[0,N){fi,0}

设最差的适应度值为fmin,如果其为负值,那么选择概率为0(因为分子为0)。而对于校正后的适应度之和(即分母)为0的情况,可以将所有个体的选择概率设为 1 N \frac{1}{N} N1

19.2 锦标赛选择(Tournament selection)

在锦标赛选择中,从种群中随机采样s个个体(注意:采样是有放回的),然后选择最优的个体进入下一代,只有个体的适应度值优于其他s-1个竞争者时才能赢得锦标赛。注意最差的个体永远不会幸存,而最优的个体在其参与的所有锦标赛中都能获胜。
在这里插入图片描述

选择压力可以通过改变锦标赛的大小s来改变,对于较大的s值,弱者被选中的机会较小,常见的有二元锦标赛和三元锦标赛等。与适应度值比例选择相比,锦标赛选择由于缺乏随机噪声,在实际应用中经常被使用,同时锦标赛选择也和遗传算法适应度函数的尺度无关,因为只需要比较绝对值大小,不用考虑正负的问题。

19.3 截断选择(Truncation selection)

在截断选择中,根据适应度值对种群中的个体按照从优到劣的顺序进行排序,只有前n个最好的个体被选择进入下一代。截断选择是一种非常基础的选择算法,尽管它的优势在于能够快速地在大量种群中选择个体,但是在实际中并不常用。截断选择是在动植物育种方面的标准方法,按照表现型价值排序,只有最好的动物才会被选择繁殖。
在这里插入图片描述

19.4 蒙特卡洛选择(Monte Carlo selection)

蒙特卡洛选择方法从给定的种群中随机选择个体,因此蒙特卡洛选择执行的是随机搜索而不是定向搜索。一般情况下,蒙特卡洛选择用于度量其他选择器的性能。通常选择器的性能要优于蒙特卡洛选择的性能。

19.5 概率选择(Probability selection)

概率选择是适应度比例选择的一种变体,基于选择概率P(i)从给定的种群中选择个体。适应度比例选择工作原理如图1所示。均匀分布的随机数r∈[0,F)通过下面的参数最小化指定了选择哪个个体:

i ← argmin ⁡ n ∈ [ 0 , N ) { r < ∑ i = 0 n f i } (3) i \leftarrow \underset{n \in[0, N)}{\operatorname{argmin}}\left\{r<\sum_{i=0}^{n} f_{i}\right\}\tag 3 in[0,N)argmin{r<i=0nfi}(3)

其中N是个体数量,fi为第i个个体的适应度值。
在这里插入图片描述

图1 适应度比例选择

概率选择也遵循同样的工作原理,只不过使用个体的选择概率P(i)代表适应度值fi。概率选择不需要对种群进行排序,个体i的选择概率服从二项分布:
P ( i , k ) = ( n k ) P ( i ) k ( 1 − P ( i ) ) n − k P(i, k)=\left(\begin{array}{c}{n} \\ {k}\end{array}\right) P(i)^{k}(1-P(i))^{n-k} P(i,k)=(nk)P(i)k(1P(i))nk

其中n为种群大小,k为需要从种群中选出的个体的数量。实现的概率选择器的运行复杂度为O(n+log(n)),而不是O(n2),由于朴素法:对求和概率数组执行二进制(索引)搜索。

19.6 线性排序选择(Linear-rank selection)

当适应度值差别很大时,轮盘赌选择将会出现问题。如果最优染色体的适应度值占适应度值总和的90%,即其占据了轮盘上90%的周长,那么其他染色体被选择到的概率就很低。在线性排序选择中,首先按照适应度值对个体进行排序,最差个体排在第1位,最优个体排在第N位,根据排位先后,线性地分派给染色体i的选择概率P(i):

P ( i ) = 1 N ( n − + ( n + − n − ) i − 1 N − 1 ) (4) P(i)=\frac{1}{N}\left(n^{-}+\left(n^{+}-n^{-}\right) \frac{i-1}{N-1}\right)\tag {4} P(i)=N1(n+(n+n)N1i1)(4)

这里 n − N \frac{{{n^ - }}}{N} Nn是最劣染色体的选择概率, n + N \frac{{{n^ + }}}{N} Nn+是最优染色体的选择概率。值得注意的是,所有的个体得到不同的排名,分别得到不同的选择概率,即使它们拥有相同的适应度值。

19.7 指数排序选择(Exponential-rank selection)

弱线性选择的另一种方案是使用指数函数为排序后的个体分配生存概率:

P ( i ) = ( c − 1 ) c i − 1 c N − 1 (5) P(i)=(c-1) \frac{c^{i-1}}{c^{N}-1}\tag 5 P(i)=(c1)cN1ci1(5)

其中c必须位于区间[0,1)内,c越小最优个体被选择的概率就越大,如果c=0,则设置最优个体被选择的概率为1,而其他所有个体的选择概率为0。c越接近于1,个体间的选择概率越接近。注意,在计算选择概率前,需要对种群按照适应度值进行降序排序

19.8 玻尔兹曼选择(Boltzmann selection)

玻尔兹曼选择器的选择概率定义如下:

P ( i ) = e b ⋅ f i Z (6) P(i)=\frac{\mathrm{e}^{b \cdot f_{i}}}{Z}\tag 6 P(i)=Zebfi(6)

其中b是控制选择强度的参数,Z的定义如下:

Z = ∑ i = 1 n e f i (7) Z=\sum_{i=1}^{n} \mathrm{e}^{f_{i}}\tag 7 Z=i=1nefi(7)

b>0时,增大了具有高适应度值的个体被选择的概率;b<0时,则降低概率;b=0时,所有个体的选择概率均为 1 N \frac{1}{N} N1

19.9 随机遍历选择(Stochastic-universal selection)

随机遍历选择(SUS)是一种根据给定概率以最小化波动概率的方式选择个体的方法。可以将其认为是一种轮盘赌游戏,在轮盘上有p个等间距的点进行旋转。SUS使用一个随机值在等间隔的空间间隔内选择来选择个体。相比较于适应度比例选择法,该方法中较劣个体也有很好的机会被选择,从而奖励了不公平性。该选择方法是由James Baker提出的,展示了其原理,其中n为要选择的个体数量。随机遍历采样保证了选出的子代,比轮盘赌法更加接近希望得到的结果。
在这里插入图片描述

图2 随机遍历选择

19.10 精英选择(Elite selection)

精英选择将一小部分最优的候选解,原封不动的复制到下一代中,这会对性能产生巨大的影响,因为这保证了GA不会浪费时间重新发现以前拒绝的部分解。通过精英主义被保留下来的个体仍然有资格被选为下一代的父代。精英主义也与记忆有关:记住目前找到的最优解。不过精英主义的问题在于会导致GA收敛到局部最优,所以纯粹的精英主义是一场通向最近局部最优的竞争。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进化计算-遗传算法之史上最全选择策略 的相关文章

  • 10分钟搞懂遗传算法

    大自然有种神奇的力量 它能够将优良的基因保留下来 从而进化出更加强大 更加适合生存的基因 遗传算法便基于达尔文的进化论 模拟了自然选择 物竞天择 适者生存 通过N代的遗传 变异 交叉 复制 进化出问题的最优解 遗传算法看似神奇 但实现思路却
  • 【模拟集成电路】电荷泵(CP)设计

    电荷泵 CP 设计 前言 一 电荷泵 CP 原理 1 电流失配问题 2 开关管的时钟馈通问题 3 电荷注入问题 二 电荷泵 CP 电路 三 电荷泵性能测试 测试原理图 充电测试 放电测试 参考文献 各部分链接链接 前言 本文主要内容是对电荷
  • 模型选择、欠拟合和过拟合

    训练误差 training error 模型在训练数据集上表现出的误差 泛化误差 generalization error 模型在任意一个测试数据样本上表现出的误差的期望 常常通过测试数据集上的误差来近似 机器学习模型应该关注泛化误差 模型
  • Spring学习总结

    Spring学习总结 文章目录 Spring学习总结 toc 一 Spring介绍 1 概念 2 下载路径 二 IOC容器 1 IOC概念和原理 什么是IOC IOC底层原理 2 IOC接口 3 IOC操作 Bean管理 什么是Bean管理
  • php 随机生成指定金额范围内的随机数

    function random bag money total personal num min money money total 20 personal num 19 min money 1 money right money tota
  • ZYNQ 库函数学习之SPI

    SPI是串行外设接口 Serial Peripheral Interface 的缩写 是一种高速的 全双工 同步的通信总线 并且在芯片的管脚上只占用四根线 节约了芯片的管脚 同时为PCB的布局上节省空间 提供方便 正是出于这种简单易用的特性
  • 指针作函数返回值

    include
  • 《Python 黑帽子》学习笔记 - 准备 - Day 1

    信息安全是一个有意思的方向 也是自己的爱好 从零开始 想在工作之余把这个爱好培养为自己的技术能力 而 web 安全相对来说容易入门些 于是选择 web 渗透测试作为学习的起点 并选择同样是容易入门的 Python 作为编程工具 潜心学习 持
  • 大神之路-起始篇

    欢迎关注 WeiyiGeek 公众号 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 全栈实践 再到 放弃学习 涉及 网络安全运维 应用开发 物联网IOT 学习路径 个人感悟 等知识 花开堪折直须折 莫待无花空折枝 本章目
  • 浏览器有哪些进程?浏览器进程,渲染进程,网络进程,渲染进程有哪些线程?

    浏览器进程 渲染进程有哪些线程 在浏览器中打开两个页面 会开启几个进程 1个浏览器进程 1个网络进程 一个GPU进程 通常一个Tab页对应一个渲染进程 但有其它情况 1 如果页面中有iframe的话 iframe也会运行在单独的进程中 2
  • Object.setPrototypeOf()

    Object setPrototypeOf 子对象 父对象 运行结束后 子对象 proto 指向 父对象 setPrototypeOf就是更换对象的 原型对象
  • C++ STL概述

    STL就是封装好的一些数据结构以及一些算法 C STL 标准模板库 是一套功能强大的 C 模板类 提供了通用的模板类和函数 这些模板类和函数可以实现多种流行和常用的算法和数据结构 如向量 链表 队列 栈 Standard Template
  • 图像识别小车(电机部分)——电赛学习笔记(2)

    图片来源 B站唐老师讲电赛 目录 一 电机部分结构 二 步进电机示例 三 伺服电机示例 四 我们的方案 一 电机部分结构 二 步进电机示例 1 驱动器 L298N CSDN搜索使用方法 控制器 stm32 电源暂时用12V直流源 2 控制
  • Flutter 安装 填坑记录

    Flutter 安装过程中遇到的问题 安装参考文档 https flutterchina club Add the flutter tool to your path 不知如何在mac中添加环境变量的解决方法参照https jingyan
  • 空谱结合多标准的主动学习用于高光谱分类

    摘要 阶段1首先使用PCA降维 然后使用形态学的腐蚀膨胀方法获取一系列图像 阶段2引入了一种新的基于uncertainty diversity和聚类假设的query function 使用主动学习 介绍 降维解决了维度灾难的问题 解决样本数
  • centos7 Jumpserver堡垒机部署以及使用详情

    一 跳板机 堡垒机的概念 1 跳板机 跳板机就是一台服务器 运维人员在使用管理服务器的时候 必须先连接上跳板机 然后才能去操控内网中的服务器 才能登录到目标设备上进行维护和操作 跳板机的缺点 仅仅实现服务器登录安全 但是没有实现对于运维人员
  • 【9.19】正则表达式——sed、awk

    9 19 正则表达式 sed awk 9 4 9 5 sed 1 sed 匹配 2 sed打印具体行数 3 sed 替换功能 9 6 9 7 awk 1 awk 匹配 2 awk 数学运算表达式 3 两个字段比较大小 4 内置变量 OFS
  • C 库函数 - gmtime()

    描述 C 库函数 struct tm gmtime const time t timer 使用 timer 的值来填充 tm 结构 并用协调世界时 UTC 也被称为格林尼治标准时间 GMT 表示 声明 下面是 gmtime 函数的声明 st
  • C 库函数 - mktime()

    描述 C 库函数 time t mktime struct tm timeptr 把 timeptr 所指向的结构转换为自 1970 年 1 月 1 日以来持续时间的秒数 发生错误时返回 1 声明 下面是 mktime 函数的声明 time
  • C 库函数 - gmtime()

    描述 C 库函数 struct tm gmtime const time t timer 使用 timer 的值来填充 tm 结构 并用协调世界时 UTC 也被称为格林尼治标准时间 GMT 表示 声明 下面是 gmtime 函数的声明 st

随机推荐

  • web使用js调用摄像头扫码、拍照、录像

    又是好一阵忙碌 终于迎来短暂的闲暇 忙里偷闲写了这篇文章 最近项目中使用到了摄像头扫码 拍照 因为是web项目 不能直接使用java调用摄像头 更不能写个插件让客户去安装 唯一的方法只能使用js去调用摄像头 由此记录下自己的实现 开始准备使
  • 简历制作-技术栈和项目经历如何写?

    1 一 技术栈写法 1 把所有的技术要点全部梳理出来 然后再根据简历去复习 不熟悉或者怕问到的 再做减法 2 不要复制 可以借鉴 结合自己的情况梳理出来属于自己的技术栈 3 分文别类 4 关键字使用 熟练 熟悉 掌握 了解 怎么去写 第一阶
  • ML --Softmax Function (Multiclass Classification) --Andrew Ng ---- Optional Lab

    Optional Lab Softmax Function In this lab we will explore the softmax function This function is used in both Softmax Reg
  • mongodb时间差8小时,原因及解决方案

    只要涉及到mongo的增删改查 他都会默认将时间 8 进行操作 不需要我们在代码中再进行时区设置 或者是为时间增加8小时 具体解析如下 PS 下面时区设置不起作用 该少8小时 还是少8小时 1 传参数 2017 06 28 14 13 28
  • js基础之Promise(全面+手写实现)

    1 是什么 Promise是一种异步编程的解决方案 用于处理异步操作并返回结果 主要作用是解决回调函数嵌套 回调地狱 的问题 使异步操作更加清晰 易于理解和维护 2 怎么用 Promise有三种状态 pending 进行中 fulfille
  • 算法题目:目标移动

    算法题目 目标移动 题目描述 给定一个数组 nums 以及一个整数 target 你需要把数组中等于target的元素移动到数组的最前面 并且其余的元素相对顺序不变 你的所有移动操作都应该在原数组上面操作 示例 1 输入 nums 5 1
  • 基于Prometheus的node_exporter源码编译和二次开发

    首先从GitHub上拉取node exporter源码 go get github com prometheus node exporter 在拉取过程中一般会出错 主要是由于golang官网被墙导致golang的有些工具库拉取不下来 如果
  • 【IntelliJ IDEA】编码设置终极版

    近期 团队多个小伙伴咨询 IntelliJ IDEA 乱码问题 记录一下IDEA常用的4种编码设置 一 IDEA配置文件范围 IDEA的配置有两个范围 如下图 Settings 设置当前工程配置 New Projects Settings
  • Docker安装redis并以配置文件方式启动

    关于docker安装redis 网上有各种教程 大家可自行安装 写这篇文章的目的是关于以配置文件挂载的方式启动失败的总结 一 Docker安装Redis redis版本 Redis 6 2 6 安装过程中所使用的redis版本 请自行确认
  • 标志位寄存器与CF、OF标志位的区分

    8086CPU的flag寄存器 16位 各标志位如下 这是32位EFLAG的低十六位图 但是32位与16位是一样的 只不过32位多了16位且高16位没有使用到 标志位寄存器中保存的是当前指令运算的信息状态 比如进位信息保存在CF标志位 注意
  • 微信小程序调试过程中页面加载不出来

    实习进入公司微信小程序第一个项目在调试过程中发现页面加载不出来 问题显示 module components form box date miniprogram computed js is not defined 百度搜索了一下 看到社区
  • Mongodb数据库初识

    Mongodb数据库初识 一 什么是数据库 1 标准定义 2 数据库的概念 3 数据库的简单理解 4 使用数据库的原因 普通文件系统存储大量数据的问题 数据库的高效性 二 数据库的分类 1 关系型数据库 关系型数据库定义 关系型数据库的软件
  • 1030 完美数列 (25 分)

    题目 题目链接 题解 思维 从小到大排序后 从左开始选取一个数作为 m m m 二分选取右边的数作为 M M M 时间复杂度 O
  • 计算方法——C语言实现——全主元高斯消元法求解非线性方程

    最近在上计算方法这门课 要求是用MATLAB做练习题 但是我觉得C语言也很棒棒啊 题目 高斯消元法是线性方程组的直接解法 可能会造成很大的失真 尤其是高斯顺序消元法 对方法进行改进 使每次都选取绝对值最大的元素为主元 使其为乘数的分母 控制
  • MySQL安装配置教程-win10

    一 下载MySQL Mysql官网下载地址 https downloads mysql com archives installer 选择想要安装的版本进行下载 我这是使用的是5 6 21 二 安装MySQL 选择设置类型 双击运行mysq
  • 使用flask开启一个简单的应用

    Flask是非常流行的 Python Web框架 它能如此流行 原因主要有如下几点 有非常齐全的官方文档 上手非常方便 有非常好的扩展机制和第三方扩展环境 工作中常见的软件都会有对应的扩展 自己动手实现扩展也很容易 社区活跃度非常高 微框架
  • 数据分析 —— 数据挖掘是什么、能干嘛、怎么做

    数据分析 数据挖掘 什么是数据挖掘 数据挖掘 用于寻找数据中隐含的知识 并用于产生商业价值的一种手段 为什么要做数据挖掘 技术和商业就像一对双生子 在互相促进中不断演进发展 随之而来的就是个大公司的业务的突飞猛进 也涌现出很多的新模式 使得
  • MSYS2 如何切换镜像源(附带脚本自动修改)

    这篇文章将总结 如何切换MSYS2镜像 其实比较简单 但还是记录一下吧 下面示例中附带一个脚本 这样你就不用一个个手动修改了 1 镜像服务配置文件 MSYS2 的所有镜像服务配置 都在其安装路径下的etc pacman d目录下 可以看到
  • SpringBoot设置和读取配置文件(1)

    SpringBoot配置文件是用来保存SpringBoot项目当中所有重要的数据的 比如说数据库连接信息 数据库的启动端口 如果端口被占用了 那么就可以随时修改 1 比如说我们之前再写JDBC的代码的时候 要去写链接字符串 用户名密码 之前
  • 进化计算-遗传算法之史上最全选择策略

    获取更多资讯 赶快关注上面的公众号吧 文章目录 第十九章 遗传算法 史上最全选择策略 19 1 轮盘赌选择 Roulette wheel selection 19 2 锦标赛选择 Tournament selection 19 3 截断选择