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

news2024/11/24 14:09:24

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.

在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牛牛截图控件与利洽远程控制产品升级-支持证书自动升级

今天我们来聊一聊浏览器控件的一个痛点!看看我们是如何解决他的。 背景信息 目前市面上存在多种浏览器,IE、Chrome、Firefox、Edge以及一众国产浏览器,这些浏览器中,IE支持ActiveX,部分国产浏览器支持npapi&#xff…

vscode开发小程序项目并在微信开发者工具运行

需求:vscode开发uniapp之后在微信开发者工具运行,更改的时候微信开发者也同步更改 1.创建小程序命令 这里的uniapp-vue是项目名称,不能大写 vue create -p dcloudio/uni-preset-vue uniapp-vue 2.选择uni-app模版 有几种模版选择&#x…

Ubuntu TDengine 集成 EMQX 通过规则引擎实现设备数据直接入库

背景 曾使用过 IoTDB 自带的 MQTT Broker 实现了设备数据入库,那么使用 TDengine 时,我们可以借助 EMQX (一款优秀的国产开源 MQTT Broker )的规则引擎结合 TDengine 的 RESTful API 完成设备数据的路由与入库。 用到的工具 TD…

PAI-Diffusion中文模型全面升级,海量高清艺术大图一键生成

作者:段忠杰(终劫)、刘冰雁(伍拾)、汪诚愚(熊兮)、黄俊(临在) 背景 以Stable Diffusion模型为代表,AI生成内容(AI Generated Content&#xff…

鸿蒙Hi3861问题解决-[OHOS ERROR] clang not found, install it please

一、简介 在使用DevEco进行编译时出现[OHOS ERROR] clang not found, install it please问题,导致编译失败,这里做个问题记录。 二、解决 这种问题其实还是工具链安装不全造成的。 安装gn 这里用的是VSCode DevEco组件,里边包含了gn组件的安…

error while loading shared libraries: libc.so.6 误删除libc.so.6急救办法,

故障原因: 在高版本的环境中编译了一个软件,然而在低版本系统中无法使用,缺少libc.so支持,然而在编译过程中误删除了 libc.so.6的软连接,rm /lib64/libc.so.6 删除后发现系统好多命令都无法使用了,悲催&#xff01…

国际最高级别认可!赛宁网安荣获CMMI5国际认证

​​近日,经国际权威机构评估,南京赛宁信息技术有限公司(简称:赛宁网安)顺利通过国际软件领域最高级别的CMMI五级(简称CMMI5)认证。荣获CMMI5证书,标志着赛宁网安在软件研发、软件成…

Axure教程—动态单散点图(中继器)

本文将教大家如何用AXURE制作单散点图 一、效果介绍 如图: 预览地址:https://q79has.axshare.com 下载地址:https://download.csdn.net/download/weixin_43516258/87817717 二、功能介绍 简单填写中继器内容即可生成动态单散点图样式颜色等…

前端微服务无界实践 | 京东云技术团队

一、前言 随着项目的发展,前端SPA应用的规模不断加大、业务代码耦合、编译慢,导致日常的维护难度日益增加。同时前端技术的发展迅猛,导致功能扩展吃力,重构成本高,稳定性低。因此前端微服务应运而生。 前端微服务优势…

【源码篇】基于SSM+EasyUI开发的学生后台管理系统

系统介绍 一个基于SSM的学生管理系统:代码注释详细,逻辑结构清晰,对于初学 SSM 的同学非常具有参考,及学习价值哟! 数据库中默认的管理员身份信息 账户名:admin,密码:admin 用户权限介绍: 管理员:具有所有管理模块的操控权限。学生:仅具有学生信息管理模块的查…

智能AI抢了元宇宙的风头?

前几天,微博突然出现这么一条热搜。 #ChatGPT官方APP登录美国苹果应用商店 这绝对是一条相当火爆的新闻,因为这意味着智能聊天机器人ChatGPT终于有自己的App了。值得一提的是,ChatGPT不仅仅登录了美国苹果应用商店,而且下载量迅…

80个10倍提升Excel技能的ChatGPT提示

你是否厌倦了在使用Excel时感觉像个新手?你是否想将你的技能提升到更高的水平,成为真正的Excel大师?嗯,如果你正在使用ChatGPT,那么成为Excel专家简直易如反掌。 你只需要了解一些最有用的Excel提示,就能在…

打造高效互联网医院系统源码:解读其核心功能及应用

随着互联网的不断普及和发展,互联网医院系统已经成为了现代医疗服务的一个重要组成部分。本文将介绍互联网医院系统的核心功能以及其应用,并提供一些互联网医院系统开发代码。 互联网医院系统是一种基于互联网技术的医疗服务平台,可以通过网…

Springboot +spring security,实现session并发控制及实现原理分析

一.简介 在SpringSecurity中实现会话并发控制,只需要配置一个会话数量就可以了,先介绍下如何配置会话并发控制,然后再。介绍下SpringSecurity 如何实现会话并发控制。 二.创建项目 如何创建一个SpringSecurity项目,前面文章已经…

Hive ---- 函数

Hive ---- 函数 1. 函数简介2. 单行函数1. 算术运算函数2. 数值函数3. 字符串函数4. 日期函数5. 流程控制函数6. 集合函数7. 案例演示 3. 高级聚合函数案例演示 4. 炸裂函数1. 概述2. 案例演示 5. 窗口函数1. 概述2. 常用窗口函数3. 案例演示 6. 自定义函数7. 自定义UDF函数 1.…

Unity - 记一次非正规变体优化带来的兼容性导致部分手机卡死的问题

文章目录 问题但是我咨询过 公司中台TA大佬 - 2023.4.6然后咨询 unity 技术官方 - 2023.4.6再次遇到卡死 - 2023.5.24 解决方法具体华为真机上的 DEBUG 问题 在 2023.4.6 我们的 角色展示界面 就遇到了 华为手机,red mi note 11 的测试手机上的 后 2023.5.24 再次遇…

SSM框架学习之spring

Spring 以下是关于Spring Boot学习的一些文档和资源,希望对你有帮助: Spring Boot官方文档:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ Spring Boot中文文档:https://www.springcloud.cc/spring-bo…

Server - 高性能的 PyTorch 训练环境配置 (PyTorch3D 和 FairScale)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/130863537 PyTorch3D 是基于 PyTorch 的 3D 数据深度学习库,提供了高效、模块化和可微分的组件,以简化 3D 深度学…

龙讯旷腾作为首批单位入驻北京昇腾人工智能计算中心

2023中关村论坛系列活动—北京人工智能产业创新发展大会圆满落幕,围绕北京AI产业发展,政产学研用各界大咖汇聚京城,中国科协副主席束为、北京市副市长于英杰、中国工程院院士廖湘科出席大会。会上,北京市门头沟区政府联合中关村发…

Kubernetes基础操作

K8S基础操作 ✨✨✨✨✨✨✨✨✨这个基础操作一切都基于各位把k8s搭建好哦,搭建的时候请一定一定一定(很重要),选定一个版本,能避免很多错,然后本章节就给大家介绍了k8s最基础的操作,有一些复杂…