机器学习中四类进化算法的详解(遗传算法、差分进化算法、协同进化算法、分布估计算法)

1、遗传算法(Genetic Algorithm,GA)

GA算法原理

首先我们来介绍进化算法的先驱遗传算法,遗传算法(Genetic Algorithm,简称GA)是一种最基本的进化算法,它是模拟达尔文生物进化理论的一种优化模型,最早由J.Holland教授于1975年提出。遗传算法中种群分每个个体都是解空间上的一个可行解,通过模拟生物的进化过程,进行遗传、变异、交叉、复制从而在解空间内搜索最优解。

GA算法步骤

Step 1 种群初始化:根据问题特性设计合适的初始化操作(初始化操作应尽量简单,时间复杂度不易过高)对种群中的N个个体进行初始化操作;

Step 2 个体评价:根据优化的目标函数计算种群中个体的适应值(fitness value);

Step 3 迭代设置:设置种群最大迭代次数 ,并令当前迭代次数 =1 ;

Step 4 个体选择:设计合适的选择算子来对种群 P(g) 个体进行选择,被选择的个体将进入交配池中组成父代种群 FP(g) ,用于交叉变换以产生新的个体。选择策略要基于个体适应值来进行,假如要优化的问题为最小化问题,那么具有较小适应值的个体被选择的概率相应应该大一些。常用的选择策略有轮盘赌选择,锦标赛选择等。

Step 5 交叉算子:根据交叉概率 pm (预先指定,一般为0.9)来判断父代个体是否需要进行交叉操作。交叉算子要根据被优化问题的特性来设计,它是整个遗传算法的核心,它被设计的好坏将直接决定整个算法性能的优劣。

Step 6 变异算子:根据变异概率 pc (预先指定,一般为0.1)来判断父代个体是否需要进行变异操作。变异算子的主要作用是保持种群的多样性,防止种群陷入局部最优,所以其一般被设计为一种随机变换。

通过交叉变异操作以后父代种群 生成了新的子代种群 ,令种群迭代次数+1 ,进行下一轮的迭代操作(跳转到Step 4),直至迭代次数达到最大的迭代次数。

通过交叉操作,原始的两个个体组合生成了两个新的个体组合,这就相当于在解空间进行搜索,每个个体都是解空间的一个可行解。

在进行完一轮「遗传变异」之后,我们用适应度函数对这些新的后代进行验证,如果函数判定它们适应度足够,那么就会用它们从总体中替代掉那些适应度不够的染色体。

当达到如下几个条件,则终止循环 1. 在进行 X 次迭代之后,总体没有什么太大改变。 2. 我们事先为算法定义好了进化的次数。 3. 当我们的适应度函数已经达到了预先定义的值。

2、差分进化算法(Differential Evolution,DE)

DE算法原理

差分进化算法(Differential Evolution,DE)于1997年由Rainer Storn和Kenneth Price在遗传算法等进化思想的基础上提出的,本质是一种多目标(连续变量)优化算法(MOEAs),用于求解多维空间中整体最优解。DE算法也属于智能优化算法,与启发式算法,如ABC,PSO等类似,都属于启发式的优化算法。差分进化思想来源即是早期提出的遗传算法(GeneticAlgorithm,GA),模拟遗传学中的杂交(crossover)、变异(mutation)、复制(reproduction)来设计遗传算子。

差分进化算法相对于遗传算法而言,相同点都是通过随机生成初始种群,以种群中每个个体的适应度值为选择标准,主要过程也都包括变异、交叉和选择三个步骤。不同之处在于遗传算法是根据适应度值来控制父代杂交,变异后产生的子代被选择的概率值,在最大化问题中适应值大的个体被选择的概率相应也会大一些。而差分进化算法变异向量是由父代差分向量生成,并与父代个体向量交叉生成新个体向量,直接与其父代个体进行选择【也就是变异和选择操作与差分向量有关系,而差分向量是与随机选择的三个个体有关系】。显然差分进化算法相对遗传算法的逼近效果更加显著。

DE算法步骤

 看详解:差分向量(Differential Vector)【差分进化算法】_HealthScience的博客-CSDN博客

DE的群体由突变和选择过程驱动。突变过程,包括突变和交叉操作,这两步操作被设计用于利用或探索搜索空间,而选择过程被用于确保有希望的个体的信息可以进一步利用。

3、合作协同进化算法(Cooperative Co-Evolution Algorithm,CCEAs)

合作协同进化算法”思想来自于“协同进化”:两方在不断影响和发展的过程

分组思想 和 小生境共享(Niche Sharing)有异曲同工之妙(【IEEE CIM 2023】基于多目标进化算法的抗菌肽设计方法_HealthScience的博客-CSDN博客)

分组中的多个个体合作 与“6、共同进化:在合作与竞争中共同成长”是一样的思想(【NMI 2021】从生物学角度看进化计算(6个生物进化特征)_HealthScience的博客-CSDN博客)

CCEAs算法原理

CCEAs(合作协同进化算法)是一个求解大规模优化问题的算法,该算法采取“分而治之”的策略。对于一个优化问题,依变量分解成若干组问题,分组优化,且各分组间进行合作协同,共同完成整个问题的优化。该算法是一种在传统遗传算法基础上,对其进行改进优化,提出的保留优异群体的协同进化遗传算法。

复杂问题分解为子问题,子问题在进化的子种群中解决,个体的评估依赖于子种群间的合作,由各子种群的代表性个体组合而得完整的解决方案。个体在子种群的适应度由其在完整解决方案的参与来评估。

CCEAs的优点:

  1. 问题分解后可通过并行计算提速,提高优化效率;
  2. 子问题在子种群独立解决,方法多样;
  3. 分解成子模块,增加对模块错误的鲁棒性;
  4. 正确的分解能够减缓决策变量的迅速增加。

CCEAs算法步骤:

  1. 初始化:随机生成n个初始父代子群体,并创建一个空的外部集合 A ,把各子群体随机组合产生的解中的非支配解(人工智能中的一些术语_HealthScience的博客-CSDN博客加入A;设A的最大容量=M,子群体规模=N,交叉概率 =Pc,变异概率 =Pm;
  2. 繁殖操作:依次对每个父代子群体进行交叉和变异操作,生成n个子代子群体;
  3. 子群体间的合作:依次让子代子群体中的每个个体与父代子群体合作生成 一 个完整解,计算目标向量,并判断 该解是否应对外部集合A进行更新或是舍弃,直至处理完所 有子代子群体中的所有个体;
  4. 外部集合的裁减:若 |A|>M(|·|表示集合中元素 的个数 ),则对A进行裁减操作,移除那些具有最近邻居的解,使得A的大小变为 M,否则,若 |A|≤ M,则进入第 5 步;
  5. 新一代父代子群体的生成:若 |A|≤ N,则分别从每 个子代子群体中随机选取 N -|A|个个体,把其与A中所有解的相应分量合并构成下一代的父代子群体,否则,若 |A |>N,则从A中随机挑选 N个解,把其各分量合并作为下一 代父代子群体;
  6. 终止判断:若满足终止条件,则把外部集合A作为最终求得的非支配解集 (近似 Pareto 最优解集 )输出,算法 终止,否则, 转至第 2 步进入新一代的进化。

4、分布估计算法(Estimation of Distribution Algorithm,EDA)

EDA算法原理

遗传算法是对于个体进行遗传操作(交叉、变异等),“微观”层面模拟生物的进化。

分布估计算法是对于整个群体的分布建立一个概率模型,通过这个概率模型来描述进化的方向,是“宏观”层面的模拟。
在这里插入图片描述

 分布估计算法的概念最初在1996年由H. Muhlenbein提出,主要思想就是把自然进化算法和构造性数学分析方法相结合,以指导对问题空间的有效搜索

分布估计算法本质上是一种基于概率模型的新型进化算法,遗传算法与统计学习相结合,是自然计算的又一典型实现模式。它通过对当前找到的较优个体集合建立概率模型来引导算法下一步的搜索范围,并从所获得的较优解的概率分布函数中抽样产生出新的个体。打个比方,我每天不知到吃啥,第一周我在后街随便吃了10家店,觉得ABCD这四家店很好吃,那么第二周的时候我更可能选择ABCD这四家店及其旁边的店,这这周发现ABE这几家好吃,然后下周我更可能去这几家店及其旁边的店,周而复返最后得出B家最好吃。

EDA算法流程

  1. 初始群体,并对每一个个体进行估值(适应度值计算);
  2. 根据个体估值,按照一定的选择策略从群体中选择较优的个 体;
  3. 根据选择的个体估计概率分布,建立相应的概率模型;
  4. 根据上一步估计得出的概率分布,采样产生新一代个体,并重新对每一个新个体进行适应度估值;
  5. 如果某准则满足,则算法停止;否则,返回步骤2.

在这里插入图片描述

以上四类算法是进化类的优化算法,基本原理和思想都是在遗传算法的基础上引入不同的机制(多种群、概率分布等)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/22766.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企业级WordPress开发 – 创建企业级网站的优秀提示

目录 “企业级”是什么意思? 使用WordPress创建企业级网站有什么好处? 使用 WordPress 进行企业开发的主要好处 WordPress 可扩展、灵活且价格合理 WordPress 提供响应式 Web 开发 WordPress 提供了巨大的可扩展性 不断更新使 WordPress 万无一…

Nodejs模块化

介绍 将一个复杂的程序文件按照一定规则拆分成多个文件。 拆分出的每个文件就是一个模块,模块的内容数据是私有的,不过模块可以暴露内部数据使得其他模块使用。 模块化好处:防止命名冲突、高复用性、高维护性。 模块化的使用 初体验 两…

云计算基础——云计算与移动互联网、物联网

8.1 云计算与移动互联网 8.1.1 移动互联网的发展概况 移动互联网的发展概况 移动互联网是指以宽带IP为技术核心,可同时提供语音、数据、多媒体等业务服务的开什么是移动互联网?放式基础电信网络,从用户行为角度来看,移动互联网广义上是指用…

Linux下的用户分类与su/sudo 命令,Linux下的文件类型/用户文件权限身份/文件权限属性/权限与文件权限/ls-l文件属性详解

Tips 下载就是把我们的文件拷贝到系统的某个特定路径之下,普通用户是不允许你往系统里面去拷的。 Linux下的用户分类 root用户,管理员级别的用户身份,他的话基本上不受权限的约束。普通用户,普通用户的添加与每个普通用户密码的…

8.防火墙-SNAT和DNAT

文章目录 SNAT-内网客户访问外网服务原理操作实验 DNAT-外网客户访问内网服务原理操作实验 tcpdump SNAT-内网客户访问外网服务 原理 由内网到外网:从内网发到外网的数据包的源IP由私网IP转换成公网IP 由外网到内网:从外网发到内网的数据包的目的IP由公…

学系统集成项目管理工程师(中项)系列24a_信息系统集成专业技术知识(上)

1. 信息系统的生命周期 1.1. 【19下选10】 1.2. 立项 1.2.1. 形成《需求规格说明书》并确定立项 1.2.1.1. 【21上选11】 1.3. 开发 1.3.1. 【22下选10】 1.3.2. 以立项阶段所做的需求分析为基础,进行总体规划。之后,通过系统分析、系统设计、系统…

若依框架在未登录的情况下访问swagger3.0页面,出现弹窗的解决方法

若依框架在未登录的情况下访问swagger3.0页面,出现弹窗的解决方法 效果展示: 解决方法:在ShiorConfig.java类中找到shiroFilterFactoryBean方法,然后在filterChainDefinitionMap里面put你要过滤的地址,如下&#xff…

【机器学习】集成学习(理论)

集成学习(理论) 目录 一、何为集成学习二、集成学习最简单的模型:投票策略三、弱学习器的组合算法:自助聚合(Bagging模型)1、数据划分方法:自助法(Bootstrap Method)2、B…

浅谈人工智能

人工智能的概念和现状 人工智能(Artificial Intelligence,简称AI)是指通过计算机程序和算法来模拟人类智能,包括学习、推理、感知、语言理解、图像识别等方面。自20世纪50年代以来,人工智能领域的研究取得了巨大的进展…

C语言递归算法实现经典例题

一.递归 1.什么是递归 递归是一种编程技术,它通过在函数内部反复调用自身来解决问题。当一个程序调用自己时,这就称为递归调用。递归可以有助于简化某些算法的实现和理解。在递归过程中,每个调用都会将一些数据保存在栈上,直到递…

《Java并发编程实战》课程笔记(一)

并发领域的全景图 并发编程的三个核心问题 并发编程可以总结为三个核心问题:分工、同步、互斥。 分工指的是如何高效地拆解任务并分配给线程; Java SDK 并发包里的 Executor、Fork/Join、Future 本质上都是⼀种分工方法。除此之外,并发编程…

rsync远程同步

rsync介绍 rsync简介 rsync(Remote Sync,远程同步) 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前…

阿里拆了中台,中台还有未来吗?

hi,我是熵减,见字如面。 近日,阿里在继年初3月份的16N的战略变革的基础上,对持续建设和运营8年的中台的调整终于落地了。 阿里对中台的这一举措,引发了外界对于中台战略是否还有意义的大量质疑和讨论。 甚至有人将中台…

ov2640子设备视频操作详细分析

ov2640子设备视频操作详细分析 文章目录 ov2640子设备视频操作详细分析ov2640_subdev_video_ops视频操作ov2640_s_stream开始流ov2640_g_fmt 获取格式ov2640_s_fmt设置格式ov2640_try_fmt尝试格式ov2640_cropcap裁剪能力ov2640_g_crop获取裁剪ov2640_enum_fmt枚举格式ov2640_g_…

六级备考26天|CET-6|仔细阅读|考研英语2023年英语(一)|8:20~10:00

text1 4/5 text2 3/5 text3 2/5 text4 3/5 12/20 目录 text 1 1. 重点词汇 2. 原文 3. 题目 text 1 1. 重点词汇 sympathise / ˈsɪmpəθaɪz / vi.同情;吊唁;共鸣 (等于 sympathize) ener…

黑客入门教程从零基础入门到精通,看完这一篇就够了

学前感言: 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可以先放放,以后再来解决…

Scrum的执行过程及产品Backlog梳理的目的、时间、内容

Scrum的迭代运行过程 产品Backlog梳理 目的: •对下个Sprint的需求进行需求细节梳理和精化,识别技术风险和依赖,完成估算和优先级排序。 时间: •本Sprint开始后第6天,2小时以内 。 内容: •理解需求…

手把手教你用Python调用彩云机器翻译API

一、引言 彩云这个小而美的机器翻译一直很低调,它让人眼前一亮的是之前我们分享的网页翻译插件,可以把外文网站翻译成英中对照的样式,便于我们学习。之前我们也写过文章介绍过: PythonFan:如何用Google翻译英文网页成…

PyTorch RNN的原理及其手写复现。

PyTorch RNN的原理及其手写复现。 0、前言代码实现记忆单元(考虑过去的信息)分类包括:1.RNN 2.GRU 3.LSTM模型类别:1.单向循环(左到右) 2.双向循环(考虑未来信息) 3.多层单向或双向循环优缺点应用场景具体公式 0、前言 先给出代码…

单位、家庭建筑物电气、电子设备防雷举措

前 言 在现实的学习、工作、生活中,有时会面对自然灾害、重特大事故、环境公害及人为破坏等突发事件,为了控制事故的发展,就不得不需要事先制定应急预案。那要怎么制定科学的应急预案呢﹖下面是小编为大家整理的单位、住宅建筑物、电子电气防…