智能优化算法——遗传算法(GA)(纯理论,不包含代码)

news2025/7/19 5:47:16

今天接着PSO,记录一下遗传算法的实现原理。(若有错误,请大佬帮忙指正!)(同样,主要参考b站视频学习加入自己的一些理解,如果想要看视频学习,可以直接移步最后参考链接)
遗传算法概述:遗传算法(Genetic Algorithm,GA)是一种基于遗传进化思想的优化算法,被广泛应用于寻找复杂问题的最优解。它是模拟生物进化过程中的自然选择、交叉和变异等基本遗传操作的一种方法。遗传算法将优化问题看作是在候选解的空间中进行搜索,通过不断进化得到更优的解。与其他优化算法相比,遗传算法具有并行性、全局搜索能力强、对目标函数的要求低等优点,因此在许多领域得到了广泛的应用。
遗传算法通常包含以下几个基本步骤:

  1. 初始化种群:首先生成一个随机的种群,其中包含若干个个体,每个个体表示问题的一种解决方案。
  2. 评估适应度:为了评估每个个体的优劣程度,需要定义一个适应度函数,用于计算每个个体的适应度值。
  3. 选择操作:根据适应度值,选取若干个个体作为“父代”,用于产生下一代。
  4. 交叉操作:将选出的父代个体进行交叉,生成新的个体作为下一代。
  5. 变异操作:对新一代中的某些个体进行变异操作,引入新的变化,增加解空间的探索能力。
  6. 重复步骤2-5,直到达到预定的停止条件。
    输出结果:从最终的种群中选出适应度最高的个体,作为问题的最优解。
    遗传算法中,适应度函数的设计是关键,它需要合理地反映出问题的性质和要求,以便能够对个体进行正确的评估。同时,选择、交叉和变异操作的具体实现也需要根据问题的性质进行调整,以达到更好的优化效果。

算法背景:模拟生物在自然环境中的遗传和金华的过程而形成的自适应全局搜索算法。

基本原理:基于——交叉、变异、复制三大方法

以下是交叉和变异的图解:这一列一列的都是一个个的编码。对每个个体(编码)进行交叉和编译,然后择优录取。
在这里插入图片描述

编码(十分重要):

因为生活中的问题可能是一个具体问题,无法像上述的交叉和变异一样的操作,所以在GA算法之前,我们需要将问题可行解化,将问题转化为抽象编码,适用于GA算法的形式。还有,GA算法能处理那一种一串串的数字,即一串数字代表一个信息,所以才需要进行编码。生活中有可能是具体某个数值代表信息,无法使用GA,所以需要编码成一串数字才可应用。

  • 常见的几种编码方式:
    (1):二进制编码(常用),将某一个数值转化成为一个二进制串,以适用于GA算法。
    (2):TSP问题,将自定义数字含义组成一串数,以解决问题。例如:某十个城市的某个解可以表示为[3, 2,1,4, 5,6, 7,8, 9,0]
    (3):根据不同的情况进行不同的抽象编码。
    总之,就是将解能表示成为可以交叉、变异等操作的解。
    常规方法,利用二进制编码步骤:
    1、用一个二进制串表示这个十进制的数值
    2、给定数值解的区间范围:[1, 10]
    3、给定精度:1e^-5,两个数值解的间隔
    4、编码:为每个数值分配一个独一无二的二进制串
    注意:不一定就是一个十进制数的二进制编码就直接就是将这个十进制数转化成为二进制数,这是不一定的,只是他们之间存在着一种映射关系。那么在二进制编码中,想要实现每个数值都能分配到一个独一无二的串,那么串的个数就要大于等于数值解的个数,一个长度为n的二进制串,一共能表示2^n个数值解。

解码:有编码肯定有解码(略)

基本原理之——复制、交叉、变异

  • 复制:每个个体会进行复制操作,常规的复制方法有:
    (1):将个体的适应度大小映射为概率进行复制,适应度高的个体会有更大的概率复制,且复制的份数也会越多——轮盘赌法
    (2):对适应度高的N/4的个体进行复制,然后用这些个体把N/4的个体替换掉——精英产生精英
    (3):用当前个体的复制体替换掉下一个个体,反之也行,也可以随机替换。
    (4):根据不同标准把“好的个体”替换掉“坏的个体”,同样把“坏解”替换“好解”也可以。
    总之复制的方法非常多,要自己根据需求选择。

  • 交叉:交叉的方法也非常多,不是某个一定好,一定要按照某种交叉方法来,常用的交叉方法如下:
    (1):按照顺序交叉、两两个体之间按照一定概率进行交叉。例如1和2,2和3,或者1和2,2和4等等
    (2):也可以三三个体,五五个体进行交叉,均可以。
    (3):对适应度高的前N/2个个体或者适应度高的前N/4个个体之间互相交叉。
    (4):或者不按顺序,随机从前N/2个中选一个交叉
    (5):或者多段交叉,不是一段交叉也可以。

  • 变异:同理,变异的方法也非常多,要灵活使用,但是注意变异率不宜设置过高。
    (1):对每一个个体均进行变异
    (2):只对适应度低的后N/4个个体或者N/2个个体进行变异
    (3):也可以按照每个个体的适应度,将适应度映射成为变异的概率然后进行变异
    (4):也不一定就是单个位点变异,也可以多个位点一起变异。
    注意:因为编码之后,解就变成了一串串的编码了,所以交叉指的是两个个体之间的相互交换相同的位置,如下图所示。并且变异是针对某个个体自己单独的变异,同样是编码之后的变异,所以变异指的是某一串编码中的一个或者多个位点中的数变成了别的数,从而变成了新的一串编码的过程。如下图所示:
    交叉变异示意图

算法实现:选好复制、交叉、变异三个方法的实现策略,然后去根据自己的需求编写程序实现。

算法优缺点:

  • 优点:(1)参数少,理论优势强、(2):变异机制赋予了群体跳出局部极值的能力

  • 缺点:虽然都有变异机制,但是在进化的后期,大家都差不多了,也就容易陷入局部最优,并且算法实现比较繁琐。

算法拓展:无论是蚁群、免疫、鱼群、蝙蝠等算法,这类启发式的算法背后的思想都是一样的,即:择优进化,“好的”根据一定的策略变得更好,“差的”根据一定策略向“好的”方向发展,如果下一次不好,就不更新即可,如果“好”的话再更新,这样就会形成一个保底机制——即下一次的一定不会比现在更差,只会更好。

程序实现思路:通过一定的策略,生成一个解,每次循环生成的解比上一次的好,则更新这个解,否则就不更新,那么一直迭代下去也能得到一个比较好的结果。

对比PSO与GA算法:

  • PSO算法是大家一起找,然后有人找到了,大家再慢慢向最优靠拢,是个连续的收敛至最优,但是PSO收敛比较慢,且有可能会有个别个体因为种种原因无法收敛至全局最优

    - GA算法很大的特点就是有交叉、变异的存在,即解会“瞬移”,就会出现解的跳变,有可能一下子就找到了最优解,而不同于PSO的慢慢向最优解靠拢。且GA算法的交叉变异机制会让解不容易收敛致局部最优,且GA算法收敛速度较快。

参考:

通俗易懂讲算法-最优化之遗传算法(GA)
感谢知识分享!

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

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

相关文章

深度学习引言

动手学深度学习pytorch版-笔记原文链接日常生活中的机器学习机器学习中的关键组件数据模型目标函数优化算法各种机器学习问题监督学习回归分类标记问题搜索推荐系统序列学习无监督学习与环境互动强化学习特点小结原文链接 动手学深度学习pytorch中文版 日常生活中的机器学习 …

可怕,chatGPT用3小时教会我数据分析

chatGPT这玩意真的是我的救星,用它作为我的Python教练,我用三个小时学会了数据处理(Pandas)和绘图(matplotlib)。 这两个库的学习,在之前已经困扰了我7个月。之前卡壳的原因,是我一直没有耐心从零开始,按照教材设置的教程去学习Python——我擅长在项目中学习,一点一点…

Android实现炫酷跳动的闪屏LOGO

前言:在日常开发中,经常会遇到各种视觉效果,有的效果可能一眼看去会让人觉得很复杂,但是我们必须明确一点:所有复杂动效都是可以分解成单一的基础动作,比如缩放,平移,旋转这些基础单…

最新BlackArch发布,提供1400款渗透测试工具

近日,BlackArch Linux新版本发布,此版本为白帽子和安全研究人员提供了大约1400款渗透测试工具,如果你是一位白帽子或者安全研究人员,这个消息无疑会让你很感兴趣。BlackArch Linux是一款基于Arch Linux的发行版,主要面…

luckysheet的使用——07.二次开发自动插入批注功能

在单元格编辑完成后,需要自动在这个单元格上新增批注,此时需要改造旧代码,首先找到路径为 src/controllers/postil.js的文件,找到新增批注时触发的方法,如下: 2.对方法进行改造,新增传入变量co…

深入探讨下,IPC产品与智能家居融合的无限开创性

IPC还有哪些新玩法?随着摄像头的应用场景增加,IPC作为一种能力,正在融入到越来越多的智能设备中,形成了一批富有创意的智能 IPC 融合类产品。 比如,扫地机结合智能 IPC 后,能实现可视化精准识别障碍物&…

C++实现日期类

文章目录前言1.日期类的功能分析1.大致分析2.接口设计2.具体实现1.日期类的成员函数和成员变量2.初始化(构造函数)3.对日期进行天数推算4.比较相关的运算符重载5.前置后置自增或自减6.日期相减与流插入流提取1.日期相减2.重载流插入和流提取3.总结前言 之前介绍了C…

数据结构与算法—链表list

目录 链表 链表类型 链表插入 链表删除 写程序注意点 与数组区别 链表应用 LRU 实现思想 链表 链表,一种提高数据读取性能的技术,在硬件设计、软件开发中有广泛应用。常见CPU缓存,数据库缓存,浏览器缓存等。缓存满时&#…

mongoDB5以上实现单机事务

原理就是因为目前mongodb只有副本,分片支持事务。我们就让单机变成单节点副本,同时又是主节点,可以读写一、修改bin目录下的mongod.cfg新增配置replication:replSetName: rs0二、重启mongodb服务、初始化(这是windows下的启动命令…

2月24日作业

题目:通过操作Cortex-A7核,串口输入相应的命令,控制LED灯进行工作--->上传CSDN 1.例如在串口输入led1on,开饭led1灯点亮 2.例如在串口输入led1off,开饭led1灯熄灭 3.例如在串口输入led2on,开饭led2灯点亮 4.例如在串口输入led2off,开饭led…

day20_Map

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、比较器排序 三、Collections 四、Map 五、HashMap 六、TreeMap 零、 复习昨日 HashSet 不允许重复元素,无序 HashSet去重原理: 先比较hashco…

Java知识复习(二)Java集合

1、List、Set和Map的区别 List:存储的顺序是有序的、可重复的Set:存储的顺序是无序的、不可重复的Map:使用键值对存储,Key和Value都是无序的,其中Key不可重复,而Value可重复 2、ArrayList和LinkedList的区…

node报错

记录bug:运行 npx -p storybook/cli sb init 时报错gyp info spawn C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exegyp info spawn args [gyp info spawn args build/binding.sln,gyp info spawn args /nologo,gyp info spawn args…

OpenCV只含基本图像模块编译

编译OpenCV4.5.5只含基本图像模块,环境为Windows10 x64CMake3.23.3VS2019。默认编译选项编译得到的OpenCV库往往大几百MB甚至上GB,本文配置下编译得到的库压缩后得到的zip包大小仅6.25MB,适合使用OpenCV基本图像功能模块的项目移植而不牵涉其…

电子技术——伯德图与反馈

电子技术——伯德图与反馈 增益和相位边距 从上两节我们知道环路增益 AβA\betaAβ 可以决定一个系统的稳定性,一个更加简单和有效的方法是我们可以绘制 AβA\betaAβ 的伯德图(因为相位可以达到360度,因此这是一个四阶响应系统)…

行锁、表锁、主键外键、表之间的关联关系

Java知识点总结:想看的可以从这里进入 目录2.4、行锁、表锁2.5、主键、外键2.5.1、主键2.5.2、外键2.6、表的关联关系2.4、行锁、表锁 MyISAM默认采用表级锁,InnoDB默认采用行级锁。 表锁:开销小,加锁快,不会出现死锁…

KTV「消亡史」:辉煌、挫折与新生

【潮汐商业评论/原创】这是Ina工作的第五年,疫情之后,第一场大学同学聚会就定在了周末。同学群里大家热烈地讨论着聚会的地点,“要不咱们去KTV吧,哈哈哈哈哈哈”,突然有人提议到。“谁还去KTV啊”“多没意思啊”……随…

按字典序排列的最小的等价字符串[拆解并查集]

并查集前言一、按字典序排列的最小的等价字符串二、并查集总结参考文献前言 并查集有什么用?并查集是什么?搞懂这两个问题,相关的并查集问题就变得非常easy! 一、按字典序排列的最小的等价字符串 二、并查集 有一种方法&#x…

工单模型的理解与应用

工单(任务单)模型的定义 工单模型是一种分派任务的方法,可以用来跟踪、评估和报告任务的完成情况。它通常用于针对特定目标的重复性任务或项目,以确保任务能够按时完成并符合期望的标准。   工单模型的基本流程为:提…

GroupDocs.Merger for Java

GroupDocs.Merger for Java GroupDocs.Merger for Java是一个文档操作API,可帮助您合并、拆分、交换或删除文档页面。API通过启用或禁用密码提供保护,并允许开发人员加入PDF、Microsoft Word、Excel和Powerpoint文档。 支持的文件格式 Microsoft Office格…