遗传算法浅理解

1. 什么是遗传算法?

​ 遗传算法,又称为 Genetic algorithm(GA)Genetic algorithm(GA)。其主要思想就是模拟生物的遗传与变异。它的用途非常广泛,可以用于加速某些求最大或者最小值的算法(换句话说就是加速算法收敛,最主要的还是要有一个合适的目标函数,其实和现有的模型算法差不多,只不过现有的是通过不同的数据样本来进行学习收敛,而遗传算法是通过自己对样本进行变化,从而学习收敛)。

​ 遗传算法模拟了自然选择的过程。那些适应环境的个体能够存活下来并且繁殖后代。那些不适应环境的个体将被淘汰。换言之,如果我们对每个个体都有一个适应度评分(用来评价其是否适应环境),那么对于适应度高的物体来说,将具有更高的繁殖和生存的机会

2. 为什么叫做遗传算法?

​ 遗传算法之所以被称为“遗传”算法,是因为它模仿了生物进化过程中的遗传机制,包括选择(自然选择)、交叉(有性繁殖)和变异(基因突变)。这些机制在生物学中决定了物种的遗传特征如何在代际之间传递和变化。

主要是进行了自交或者交配的过程来筛选收敛更快的后代。

3. 遗传算法在实际中怎么应用?

  1. 密码破解:遗传算法可以用来尝试不同的密码组合,直到找到正确的密码。虽然这听起来有点黑客的感觉,但实际上,它更多用于帮助用户找回遗忘的密码。
  2. 游戏AI:在电子游戏中,遗传算法可以用来训练AI玩家,让它们学习如何在游戏中做出最优决策。
  3. 交通路线规划:如果你是一个出租车司机,遗传算法可以帮助你找到从一个地方到另一个地方的最短路线,尤其是在交通状况复杂多变的情况下。
  4. 网站优化:遗传算法可以用来优化网站的布局,比如广告的放置位置,以提高点击率和收益。
  5. 产品设计:在设计新产品时,遗传算法可以帮助设计师在众多设计方案中找到最优解,比如设计更省油的汽车或者更舒适的椅子。
  6. 艺术创作:甚至在艺术领域,遗传算法也被用来创作音乐和艺术作品,通过不断迭代生成新的设计。
  7. 农业种植:遗传算法可以帮助农民决定种植哪些作物,以及如何安排种植时间,以最大化产量。
  8. 电力系统调度:在电力供应中,遗传算法可以优化发电和供电计划,确保电力供应既经济又可靠。
  9. 体育训练:在体育训练中,遗传算法可以帮助教练制定训练计划,比如运动员的训练强度和频率。
  10. 个人理财:遗传算法还可以用来帮助个人进行投资组合的优化,找到风险和收益的最佳平衡点。

4. 遗传算法的例子

为更好地理解遗传算法的运算过程,下面用手工计算来简单地模拟遗传算法的各
个主要执行步骤。

例:求下述二元函数的最大值:

img

(1) 个体编码
遗传算法的运算对象是表示个体的符号串,所以必须把变量 x1, x2 编码为一种
符号串。本题中,用无符号二进制整数来表示。
因 x1, x2 为 0 ~ 7之间的整数,所以分别用3位无符号二进制整数来表示,将它
们连接在一起所组成的6位无符号二进制数就形成了个体的基因型,表示一个可
行解。
例如,基因型 X=101110 所对应的表现型是:x=[ 5,6 ]。
个体的表现型x和基因型X之间可通过编码和解码程序相互转换。

(2) 初始群体的产生
遗传算法是对群体进行的进化操作,需要给其淮备一些表示起始搜索点的初始
群体数据。
本例中,群体规模的大小取为4,即群体由4个个体组成,每个个体可通过随机
方法产生。
如:011101,101011,011100,111001

(3) 适应度汁算
遗传算法中以个体适应度的大小来评定各个个体的优劣程度,从而决定其遗传
机会的大小。
本例中,目标函数总取非负值,并且是以求函数最大值为优化目标,故可直接
利用目标函数值作为个体的适应度。

(4) 选择运算
选择运算(或称为复制运算)把当前群体中适应度较高的个体按某种规则或模型遗传到下一代群体中。一般要求适应度较高的个体将有更多的机会遗传到下一代
群体中。
本例中,我们采用与适应度成正比的概率来确定各个个体复制到下一代群体中
的数量。其具体操作过程是:
• 先计算出群体中所有个体的适应度的总和 fi ( i=1.2,…,M );
• 其次计算出每个个体的相对适应度的大小 fi / fi ,它即为每个个体被遗传
到下一代群体中的概率,
• 每个概率值组成一个区域,全部概率值之和为1;
• 最后再产生一个0到1之间的随机数,依据该随机数出现在上述哪一个概率区
域内来确定各个个体被选中的次数。

img

(5) 交叉运算
交叉运算是遗传算法中产生新个体的主要操作过程,它以某一概率相互交换某
两个个体之间的部分染色体。
本例采用单点交叉的方法,其具体操作过程是:
• 先对群体进行随机配对;
• 其次随机设置交叉点位置;
• 最后再相互交换配对染色体之间的部分基因。

img

(6) 变异运算
变异运算是对个体的某一个或某一些基因座上的基因值按某一较小的概率进
行改变,它也是产生新个体的一种操作方法。
本例中,我们采用基本位变异的方法来进行变异运算,其具体操作过程是:
• 首先确定出各个个体的基因变异位置,下表所示为随机产生的变异点位置,
其中的数字表示变异点设置在该基因座处;
• 然后依照某一概率将变异点的原有基因值取反。

img

对群体P(t)进行一轮选择、交叉、变异运算之后可得到新一代的群体p(t+1)。

img

从上表中可以看出,群体经过一代进化之后,其适应度的最大值、平均值都得
到了明显的改进。事实上,这里已经找到了最佳个体“111111”。
[注意]
需要说明的是,表中有些栏的数据是随机产生的。这里为了更好地说明问题,
我们特意选择了一些较好的数值以便能够得到较好的结果,而在实际运算过程中
有可能需要一定的循环次数才能达到这个最优结果。
img

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

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

相关文章

PV180R1K1T1NMMC派克通轴传动结构柱塞泵

PV180R1K1T1NMMC派克通轴传动结构柱塞泵 派克柱塞泵的结构组成部分:柱塞、手把、斜盘、压盘、滑履、泵体、配油盘、传送轴。其优点如下: 1、结构紧凑耐用,具有灵活的安装接口 2、安静的工作 3、效率高 4、降低功耗和减少发热 5、具有“…

升级到tomcat10和Java 21后,idea控制台system.out.println输出中文乱码问题

最近一次性从tomcat 9升级到tomcat 10,同时Java sdk也从1.8升级到21。 升级过程中,当然会遇到很多问题,但是控制台输出中文乱码问题,着实折腾了很久。 1、尝试各种方法 网上说的很多通用方法都试过了,就是不生效。包…

编码在网络安全中的应用和原理

前言:现在的网站架构复杂,大多都有多个应用互相配合,不同应用之间往往需要数据交互,应用之间的编码不统一,编码自身的特性等都很有可能会被利用来绕过或配合一些策略,造成一些重大的漏洞。 什么是编码,为什…

别再这么起号了!TikTok小白起号误区,你中招了吗?

看过不少Tiktok新手的起号失败案例,总结下来就是以下这几个问题,今天结合一些个人起号心得给大家分享怎么成功在TK起号,希望对大家有所帮助。 手机/网络环境 首先我们要确保手机环境和网络环境没有问题,如果被TK判断出是非海外用户…

【YOLOv8改进[注意力]】在YOLOv8中添加ECA高效通道注意力(2020.4)的实践 + 含全部代码和详细修改方式 + 手撕结构图

本文将进行在YOLOv8中添加ECA高效通道注意力的实践,助力YOLOv8目标检测效果的实践,文中含全部代码、详细修改方式以及手撕结构图。助您轻松理解改进的方法。 改进前和改进后的参数对比: 目录 一 ECA 二 在YOLOv8中添加ECA注意力

synchronized死锁

1、死锁案例 /*** descpription: 死锁案例* date 2024/6/17*/ public class DeadLockDemo {public static void main(String[] args) {Object objA new Object();Object objB new Object();new Thread(() ->{synchronized (objA){System.out.println(Thread.currentThrea…

【产品经理】ERP订单处理3-解密促销策略

由于订单到电商ERP系统中,订单金额已经不能支持改动,故电商前台端的优惠券活动、满减活动、支付优惠活动无法使用,故电商ERP只涉及赠品的活动。 一、订单金额阶梯送 顾名思义:订单金额在某个或者某几个金额范围内赠送商品。 字…

设备物联网关在实际生产中的作用解析-天拓四方

随着物联网技术的迅猛发展,设备物联网关作为连接物理世界与数字世界的核心组件,其应用已经渗透到工业、农业、医疗等多个领域。本案例将聚焦于设备物联网关在某制造企业中的应用,详细解析其在实际生产中的重要作用。 案例背景 某制造企业面…

Browserslist: caniuse-lite is outdated。浏览器列表:caniuse lite已经过时???

一、最近运行项目启动时提示 Browserslist: caniuse-lite is outdated. Please run: npx update-browserslist-dblatest Why you should do it regularly: https://github.com/browserslist/update-db#readme 这要是这一句,Browserslist: caniuse-lite is outdated.…

离散数学-代数系统证明题归类

什么是独异点? 运算 在B上封闭,运算 可结合,且存在幺元。 学会合理套用题目公式结合律 零元? 群中不可能有零元 几个结论要熟记: 1.当群的阶为1时,它的唯一元素视作幺元e 2.若群的阶大于1时,…

成都爱尔胡建斌院长提醒一张眼底照,眼病早知道

眼底藏在眼睛后方,平时没注意无察觉,其实非常重要。它包含的部位多掌控着视觉问题,稍不注意就是视觉受损,视觉缺失,严重的甚至失明致盲。 眼球前面的角膜、晶体等,被称为眼前段,后面则被称之为…

Springboot微服务整合缓存的时候报循环依赖的错误 两种解决方案

错误再现 Error starting ApplicationContext. To display the conditions report re-run your application with debug enabled. 2024-06-17 16:52:41.008 ERROR 20544 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLI…

如何通过改善团队合作来提高招聘效率

当招聘顶尖人才时,时间就是一切。招聘效率取决于团队快速响应和完成任务的能力,但招聘经理和面试官并不总是最关心重要的招聘任务。更重要的是,求职者的经历取决于准备好的面试官是否准时出现。有时候最好的候选人会接受另一份工作&#xff0…

gitlab仓库中用git bash生成不是默认路径的ssh秘钥

使用命令 ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 会在默认路径生成秘钥,(C:\Users\用户\.ssh\) 想要修改默认路径使用如下命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com"…

MyBatis 获取参数的两种方式

${paramName} 使用这种方式的结果是直接替换。底层是用 Statement 实现的。 优点 使用 ${sort} 可以实现排序查询,而使用 #{sort} 就不能实现排序查询了,因为当使⽤ #{sort} 查询时,如果传递的值为 String 则会加单引号,就会导致 …

知乎号开始运营了,宣传一波

知乎号开始发布一些小说、散文还有诗歌了,欢迎大家多来关注 知乎链接:姜亚轲 每篇小说都改编成网易云音乐,文章中也有链接,我做的词,Suno编曲和演唱,欢迎大家来听听

AutoCAD 2024 mac/win版:智绘未来,设计更精彩

AutoCAD 2024是一款由Autodesk开发的计算机辅助设计(CAD)软件,作为AutoCAD系列的最新版本,它在设计、绘图和制造领域展现出了卓越的性能和广泛的应用前景。 AutoCAD 2024 win/Mac版获取 AutoCAD 2024在功能方面进行了大量增强和改进。它引入了智能对象捕…

Chromium 开发指南2024 Mac篇-编译前的准备工作(一)

1.引言 Chromium 是一款开源的网页浏览器项目,作为 Google Chrome 浏览器的基础,其卓越的性能和广泛的应用使其成为众多开发者研究和学习的对象。对于希望深入了解浏览器内核,或是计划在 Chromium 基础上开发自定义浏览器的开发者来说&#…

白酒:茅台镇白酒的文化内涵与传承意义

茅台镇白酒,作为中国的酒文化的代表之一,具有丰富的文化内涵和传承意义。而云仓酒庄豪迈白酒作为茅台镇的品牌之一,更是承载了深厚的文化底蕴和历史积淀。 首先,茅台镇白酒是中国的酒文化的重要组成部分。白酒在中国有着悠久的历史…

flutter开发实战-创建一个微光加载效果

flutter开发实战-创建一个微光加载效果 当加载数据的时候,loading是必不可少的。从用户体验(UX)的角度来看,最重要的是向用户展示加载正在进行。向用户传达数据正在加载的一种流行方法是在与正在加载的内容类型近似的形状上显示带…