遗传算法(Genetic Algorithm,GA)由霍兰德教授在20世纪70年代提出,是以自然选择和遗传变异为理论依据的全局性概率搜索优化算法模型。采用遗传算法寻优时需要将问题的候选解进行编码,即一个候选解对应一个编码,编码通常采用二进制,用“0”、“1”表示,为“1”则表示该候选解被选中,所有候选解组合在一起定义为染色体;在迭代进化的过程中,通过构造适应度函数,计算每个个体的适应度,适应度值越大,该个体被保留的可能性越大。

遗传算法主要操作包括选择、交叉、变异。选择是指依据适应度值优胜劣汰的过程;交叉是指两个父代个体的结构按照一定的概率Pc(交叉概率,也称交叉率)相互交换产生新个体的过程;变异是以一个很小的概率Pm(变异概率,也称变异率)随机将个体的基因值从“0”变成“1”或“1”变成“0”的过程. Pc和Pm的大小对于算法的优化效率影响很大,Pc越大表示当前父代的染色体结构复制到下一代的比例较少,与另一个父代染色体结构交换的比例越大,而这样,父代的染色体的结构破坏较大;当Pm较大时,则代表父代染色体的结构在下一次迭代优化时会发生较大概率的突变。因此,为了提高算法的优化效率,在迭代优化的早期,较大的Pc和Pm,在迭代优化后期较小的Pc和Pm有利于算法效率的提高。普通的遗传算法将上述两个概率值设置为固定值,限制了算法的优化效率,而自适应遗传算法(Adaptive Genetic Algorithm)将上述Pc和Pm的值依据适应度值在迭代优化时动态调整,提高了算法的优化效率(下面只列举一种Pc和Pm的自适应算法)。

1:交叉(多点交叉),其他种类的交叉算法详见https://blog.csdn.net/u012750702/article/details/54563515/

2:变异

3:自适应遗传算法的举例(其他的自适应算法读者可搜索文献)

式中,fmax代表种群中最佳适应度值;favg代表每代种群的平均适应度值;'代表要交叉的两个个体中较大的适应度值;f代表要变异的个体的适应度值;k1=k2=0.6;k3=k4=0.1。

4:适应度函数的设置

适应度函数的设置对于遗传算法的优化系哦啊绿至关重要,而在不同的优化问题中,适应度函数的设置需要根据具体的优化问题而言,就常见的机器学习分类问题而言,fitness=w1×f1+w2×accuracy;其中 w1和w2分别代表权重系数,两者之和为1,f1代表用到的建模变量个数,accuracy代表分类的精度(比如OA,kappa等)。对于机器学习的回归问题,fitness=.R2表示决定系数,RMSE表示均方根误差(文章 DOI: 10.1080/01431161.2020.1718239.)。对于适应度值得设置,应当尽量放大体间的差异。

5:迭代结束的设置

可以依据适应度值在保持多少代不变或者设定一个阈值,当适应度值相邻两代的差值低于该阈值时,就停止进化迭代,或者设置最大的遗传迭代次数。

6: 遗传算法的具体使用流程

(1).编码、随机产生初始群体;

(2)个体评价、选择、确定是否输出;

(3)随机交叉运算;

(4)随机变异运算;

(5)转向个体评价,开始新循环

遗传算法原理,交叉、变异、适应度函数的设置相关推荐

  1. 遗传算法的交叉变异详解

    转载:OMEGAXYZ 注:仅作学习笔记用,版权归OMEGAXYZ所有,侵权请删 文章目录 交叉 二进制编码交叉 单点交叉 两点交叉 多点交叉 均匀交叉 均匀两点交叉 适合浮点数编码的交叉算子 离散交 ...

  2. 遗传算法的交叉变异操作杂记

    100个个体,交叉概率为0.1,并不代表交叉个体数为10个.这是一个概率问题. 另外,交叉概率一般会取0.5-1这个范围内,0.1未免有点小. 自适应的遗传算法,一般在迭代初期会有较大的交叉概率,越往 ...

  3. 【Android 逆向】Android 进程代码注入原理 ( 进程注入原理 | 远程调用流程 | 获取函数地址 | 设置 IP 寄存器 | mmap 申请内存 | 设置 SP 寄存器 )

    文章目录 一.进程注入原理 二.远程调用流程 ( 获取 so 动态库地址 | 获取函数地址 | 设置 IP 寄存器 | mmap 申请内存 | 设置 SP 寄存器 ) 一.进程注入原理 调试进程 At ...

  4. 遗传算法中的变异和交叉

    遗传算法中的变异和交叉 一.交叉方法 1.部分匹配交叉(PMX) 由于一次只能去一个城市,所以一条染色体中的编码是不能重复的 比如我们随机产生两个父代:A=762150483,B=416307582, ...

  5. Matlab 基于遗传算法优化的VMD信号去噪算法 创新点:基于样本熵作为适应度函数

    Matlab 基于遗传算法优化的VMD信号去噪算法 创新点:基于样本熵作为适应度函数 创新点2:基于信噪比作为适应度函数 提高信噪比 本人研究方向信号处理特征提取与故障诊断算法 ID:34506686 ...

  6. 量子遗传算法原理与MATLAB仿真程序

    写在前面: 1.其实这些智能算法的思想都差不多,只不过是各自搜寻方式.编码方式.种群更新方式等不一样而已. 量子遗传算法是在遗传算法的基础上使用了一种新的编码方式. 2.直接看前面介绍可能会觉得较难, ...

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

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

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

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

  9. 模拟退火算法和遗传算法原理简述

    文章目录 目录 两者概览 两者的主要应用 GA遗传算法简介 SA模拟退火算法简介 GA 编码 适应度函数 进化方式(交叉,变异) SA ~~个人感想~~ 目录 两者概览 两者的主要应用 可以主要应用于 ...

  10. 【数据挖掘】遗传算法原理浅析:什么是遗传算法?遗传算法的工作原理是什么?

    文章目录 1.基础知识 1.1 生物学背景 1.2 进化算法 1.2.1 概念 1.2.2 进化计算关键概念 1.2.3 进化计算的求解过程 1.2.4 应用举例 2.遗传算法是什么 2.1 定义 2 ...

最新文章

  1. 自己编写的excel操作过程
  2. STM32初识——中断初始化过程(by woody)
  3. windows 下win+r无效
  4. linux sed i 大文件,sed -i   修改链接文件注意事项   破坏了原文件
  5. UI Personalization persistent DB database table
  6. 小米 pegasus_使用Google的Pegasus库生成摘要
  7. IntelliJ IDEA 怎么知道项目信息_如何重新打开已经移除的项目_如何关闭和删除项目
  8. 人人都能学会的python编程教程1:第一行代码
  9. 随想录(十年嵌入式总结)
  10. Mysql中default分区,MySQL中的分区(六)KEY分区
  11. 委托(delegate)的三种调用方式:同步调用,异步调用,异步回调
  12. 谷歌云实现Google Drive无限空间离线下载(完美版)
  13. 云台测试软件,三轴云台校准工具
  14. python用户登录界面设计_python如何做一个登录注册界面
  15. 三菱Q系列PLC基本指令讲解
  16. 将数组升序排列后,插入一个数,仍然保持升序排列。
  17. Prometheus+Grafana监控
  18. xlsx无法导入MySQL?
  19. 如何在微信上直接打开淘宝,解决微信屏蔽淘宝链接的方法
  20. 微信小程序:各种Tab栏

热门文章

  1. 1208_MISRA_C规范学习笔记_Rule 10.3 Rule 10.5
  2. BSOD分析之空指针引用
  3. pos机属于计算机系统吗,什么是POS系统
  4. Java初级程序员面试中应该如何准备?一般公司对Java开发的要求有哪些?
  5. 隧道场景人员车辆定位系统-帮助隧道施工实现智能化管理
  6. python任意进制转换_python 十进制转换成任意进制
  7. JAVA面向对象之对象和类
  8. 【竖排日语OCR识别】如何识别图片上竖排的日语 ?如何识别图片上横排的日语?如何将竖排日语转横排日语,下面说清楚方法
  9. 扫雷可以用计算机,接龙扫雷Windows经典游戏原来还有这些用处啊
  10. 删除下拉框只找23火星软件_下拉框软件找28火星下拉