文章目录

  • 遗传算法的原理
    • 交叉
    • 变异
    • 计算适应度
    • 选择操作
  • 遗传算法的案例
    • 初始化种群
    • 计算自适应度
    • 选择操作
    • 交叉操作
    • 变异操作
  • MATLAB

遗传算法的原理

  遗传算法的科学严谨的原理都在百度百科(遗传算法地址)中由详细解释,在这里我只表达我所理解的遗传算法原理。
 之所以叫遗传算法,原因是该算法是根据大自然中生物体进化规律而设计提出的,通过计算机的方法模拟自然进化过程搜索最优解。
 遗传在百度百科中的解释:是指亲代表达相应性状的基因通过无性繁殖或有性繁殖传递给后代,从而使后代获得其父母遗传信息的现象。基因就是染色体,计算机方法也就是通过模拟染色体的行为来求得最优解。遗传算法对染色体的模拟主要是交叉和变异。

交叉

  在染色体中就是染色体片段的互换,可能是与其他个体交叉,也可能是本身的染色体交叉互换,每次交叉互换就会得到两个新的个体,从而得到两个个新的群体。

变异

在这里的变异并不是缺失、重复、倒位、易位,而是在群体中的个体串的某些基因座上的基因值作变动,如下图所示:


 将原群体进行变异操作,又得到一个新的群体。

计算适应度

  完成以上染色体的行为的步骤后,就产生了新的三个群体。然后进行发育,就是用获得的基因,通过一定的计算得到相对应的结果,在生物的角度看,就是从受精卵发育成一个完整个体。在遗传算法中也就是计算适应度。

选择操作

 现在我们就有四个群体,交叉得到的两个群体,变异得到的一个群体,和原来的群体。计算适应度后,择优选择。
 不断重复以上操作,最终得到最优秀的群体。

遗传算法的案例

  以f(x)=xsin⁡(x)cos⁡(x)f(x)=x\sin(x)\cos(x)f(x)=xsin(x)cos(x)为例,下图就是f(x),(x∈[0,2π])f(x),(x\in[0,2\pi])f(x),(x∈[0,2π])的图例:

 我们最终的目标是得到的该段函数的最大值,由图可以很容易看出来这个最大值的横坐标就是x=4x=4x=4附近,如下图所示:

 虽然我们可以直观的看出来最大值,可是是用一般算法可能会陷入局部最优,也就是最后的结果可能是横坐标x=1x=1x=1的点取值。因此,我们使用遗传算法来求解这个问题。

初始化种群

 如上图所示我们需要先初始化种群,也就是产生第一代个体,第一代个体的产生是随机的,在这里,我使用的是十进制编码去模拟基因,也可以用二进制编码,但是二进制编码的精度感觉没有十进制高。模拟的基因长度是5,随机产生多个基因,如下表随机产生的基因:

第一代的个体 9 3 4 6 8 7 6 9 0 7 3 0 8 2 6

 现在可能有的同学有些疑问,为啥这一串数字就是基因呢?
 从基因的角度上说基因其实就是由携带了一定信息的DNA构成的,而这串数字也携带了一些信息。但是这个可能还是有点抽象,这是因为就算直接看真正的基因也是看不出什么东西来的,只有长成个体后,才知道这段基因决定了那些性状,就像高中课本中果蝇的不同表现型一样。现在我们就需要让这串基因“长大”,看看这串基因代表什么。
 由于我们使用的是十进制编码,所以,我们需要用到十进制编码器[10000;1000;100;10;1][10000; 1000; 100; 10 ;1][10000;1000;100;10;1],以第一个个体基因9 3 4 6 8为例:

计算自适应度

 首先需要解码,就是将9 3 4 6 8与解码器[10000;1000;100;10;1][10000; 1000; 100; 10 ;1][10000;1000;100;10;1]相乘相加,再相除对应的数:
9×10000+3×1000+4×100+6×10+8×1=934689\times10000+3\times1000+4\times100+6\times10+8\times1=93468 9×10000+3×1000+4×100+6×10+8×1=93468
x1=93468÷(9999×2×π)=5.8728x_1= 93468\div(9999\times2\times\pi)=5.8728 x1​=93468÷(9999×2×π)=5.8728
 之所以除9999,是因为十位编码范围为[0,9999][0,9999][0,9999],再除2π2\pi2π,是因为这是xxx的取值范围。再将x1=5.8728x_1=5.8728x1​=5.8728带入f(x)f(x)f(x),得f(x1)=−2.1484f(x_1)=-2.1484f(x1​)=−2.1484,也就是说9 3 4 6 8这串基因最后的表现型是−2.1484-2.1484−2.1484。如下图所示:

 我们生成20个个体,如下图所示:

 以上的步骤实际上就是计算自适应度(我也不知道为啥叫自适应度,可能还是知识浅薄

遗传算法原理案例及MATLAB代码相关推荐

  1. 【红外技术】非均匀校正之两点校正(原理标定方法MATLAB代码效果)

    创作时间:2022-05-06 非均匀校正之两点校正(原理&MATLAB代码&效果) 目录: 1.原理&标定方法 2.代码 3.效果 正文: 先看下效果 1.原理 红外焦平面的 ...

  2. 遗传算法之路径规划matlab代码(栅格地图)含详细注释

    遗传算法本人在另一篇博文中已经有记载,本次将遗传算法用于路径规划的代码记录于此,用于大家一起学习 一起进步,如果有用,欢迎点赞. 1.基于遗传算法的栅格法机器人路径规划main.m % 基于遗传算法的 ...

  3. 遗传算法介绍并附上Matlab代码

    摘自http://www.cnblogs.com/hxsyl/p/5240905.html 该文中后面的代码是我在学校里面编写的,当时应该是可以用的,里面的图确实是我画出来的,但是我现在不确定是否正确 ...

  4. 遗传算法原理简介及其MATLAB实践

    目录 遗传算法简介 遗传算法的深入理解: 遗传算法的MATLAB实现 [例]BP神经网络初始权值和阈值优化 遗传算法简介 遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理 ...

  5. 暗原色原理去雾matlab代码(Matlab)

    简要说明: 推荐学习暗原色去雾的原理两篇: 第一篇为pdf格式 900k可以下载: https://zkxb.jsu.edu.cn/CN/article/downloadArticleFile.do? ...

  6. 比较研究测井预测:遗传算法与神经网络(Matlab代码实现)

     

  7. 拉格朗日插值和牛顿插值原理及使用(代码环境:matlab)

    题目一: 1.用表1-1中的世界人口统计数值估计1980年的人口 表 1-1: 年 人口 1960 3 039 585 530 1970 3 707 475 887 1990 5 281 653 82 ...

  8. 数学建模常用方法 | matlab代码 | 二十三种数学建模方法 |2022赛前突击 |模型代码 |比赛比用、简单高效| 分享

    为是赛前突击,所以就不过多的介绍理论知识了,直接上案例,matlab代码 更加详细例题解析: 公众h:露露IT 目录 1.类比法 2.二分法 3.量纲分析法 4.图论法 5.差分法 6.变分法 7.数 ...

  9. 超松弛迭代法求解二维电磁场有限差分方程(附Matlab代码)

    二维电磁场泊松方程差分格式 由泰勒公式: 以及: 两式做和,截断于项,得到二阶差商: 二维场域内泊松方程为: ​​​​​​​        ​​​​​​​        ​​​​​​​         ...

  10. 【GA算法】遗传算法原理及其Matlab代码

    翻阅几篇遗传算法的文章,这篇通俗易懂,且逻辑清楚,最适合入门,不用担心遗漏关键点. 遗传算法,先选择,交叉和变异顺序可更换. 轮盘赌部分,参考了另外一篇文章的解释. 此外,还有一些有价值的文献: 选择 ...

最新文章

  1. Java项目: 基于SSM实现教务管理系统
  2. Node.js 体验-在Windows Azure工作者角色上托管Node.js
  3. python3 库pandas写入csv格式文件出现中文乱码问题解决方法
  4. android 源码下载编译
  5. 【MOSS】Sharepoint大附件上传
  6. SQL注入 ——sql数据库操作基础(一)
  7. .NET Core 使用 Consul 服务注册发现
  8. Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
  9. Cesium Terrain Builder 非压缩瓦片
  10. sdio stm32理解 205 sdio调试 stm32f205
  11. 网络安全学习相关网站
  12. 11210怎么等于24_巧算24点
  13. FontForge 修改,删除,设计字体
  14. 简单是王道《九、讲故事》
  15. 实现了一个简单的以图搜图功能(带代码)
  16. python删除excel指定行_python实现Excel删除特定行、拷贝指定行操作
  17. LoRa vs LTE-M vs Sigfox
  18. Windows下cmd命令无法切换盘符
  19. 四位数中有几个七C语言,用4、0和7可以组成(    )个不同的三位数,其中最大的数是(    ),最小的数是(     )。——青夏教育精英家教网——...
  20. unity3D之简单的碰撞检测 .

热门文章

  1. 如何配置RadASM
  2. Python安装pycryptodome密码库
  3. bigemap地图下载器优势分析
  4. Web安全攻防渗透测试实战指南笔记 三
  5. 游戏出海,技术先行 ——UCloud助力出海业务最佳实践直播公开课
  6. 线性代数 --- 带有置换矩阵P的LU分解
  7. Winform 定时器
  8. php多图片打包下载
  9. Polycom高清视频会议桌面系统HDX 4000
  10. 2020年考研准考证打印下载及注意事项