问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

优化算法 | 遗传算法(附Python代码)

发布网友 发布时间:2024-09-29 08:16

我来回答

1个回答

热心网友 时间:2024-10-20 10:07

遗传算法(GA)是今天要讲述的主题,相信大家对它并不陌生。过去我们已经发布过多篇关于GA的教程:

过去的教程主要是使用GA来解决离散优化问题,而很少涉及到连续优化问题。因此,今天我们将重点讲解如何使用GA来解决连续优化问题。

首先,我们需要确定要解决的问题,即求解以下函数的最小值:

(公式)

以下是遗传算法求解步骤的详细说明:

01 | 种群初始化:由于求解问题的变量数量为5,因此染色体的长度为5。假设种群数量为npop,则随机生成npop个长度为5的个体,且每个个体在每个维度上的取值范围应在-100至100之间。种群初始化的代码如下:

假设npop=5,则初始化种群的结果如下,其中position表示个体位置,cost表示个体目标函数值:

02 | 适应度值计算:这里的适应度值即是目标函数值,具体代码如下:

03 | 选择操作:选择操作就是从当前种群中选择出若干个个体,本例中使用的是轮盘赌选择策略,即适应度值高的个体有更大的概率被选中,具体代码如下:

假设输入参数p=[1,2,3,4,5],下面我们来分析每一行代码的含义。

cumsum函数是累加函数,因此c=[1,3,6,10,15]。sum函数是求和函数,sum(p)=15,np.random.rand()函数返回一个[0,1)之间的随机数,不包括1,因此r的取值范围为[0,15)之间的一个数,不包括15,假设此时r=5。

np.argwhere(a)函数返回非0元素的索引,其中a是要索引数组的条件,并且该函数输出的是一列元素。因此,np.argwhere(r <= c)返回的是r <= c的索引,输出结果为:

最终返回ind[0][0]=2,说明r=5落在3~6之间,即落在p=3所属的区间,轮盘赌示意图如下。

04 | 交叉操作:交叉操作是对选择出的两个个体进行处理,使它们能够互相继承彼此良好的基因片段,具体代码如下:

np.random.uniform(low,high,size)函数返回size相同维度且取值范围在[low,high)之间的随机数,如返回4个[0,1)之间的随机数,具体返回结果如下。

下面这两行代码实际上表示产生两个新个体的计算公式。

05 | 变异操作:变异操作是对某一个个体进行处理,更新该个体的位置,具体代码如下,其中mu是变异概率:

flag = np.random.rand(*x.position.shape) <= mu这行代码的含义是判断随机生成的与个体长度相等的数字中是否小于等于变异概率mu,返回结果示例为[False True False False False]。

ind = np.argwhere(flag)表示找出flag为True的索引,即找出待变异的基因位,返回结果为ind=[[1]]。

y.position[ind] += sigma*np.random.randn(*ind.shape)表示更新待变异的基因位。

以下是遗传算法流程图的展示:

以下是遗传算法实例验证的代码及结果:

(公式)

ga.py代码如下:

app.py代码如下:

求解结果如下:

参考资料:

[1]Mostapha Kalami Heris, Practical Genetic Algorithms in Python and MATLAB – Video Tutorial (URL: yarpiz.com/632/ypga1912...), Yarpiz, 2020.

下期再见。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 女孩子去澳洲留学适合学什么专业? 去澳洲留学学什么专业容易毕业? 澳洲热门留学专业排行榜:哪些专业就业前景最好 20分悬赏,请问中国有哪些民族乡(镇),比如安徽云梯畲族自治乡…_百度... 我现在无锡市新区新安镇到无锡飞机场怎么走,最好乘坐公交车。 办工商卡要什么 076983330443打114只查到是私人电话,有谁可以告诉我是东莞哪个镇的谢谢... 梦见床边有坟 然后丈夫移坟 电子秤报警怎么解决 梦见想睡觉跟前有坟 ...炸蘑菇用淀粉、面粉都不对!大厨教你正确方法,焦香可口不回软_百度知... 来日方短、暗目张胆、旧陈代谢、中流砥梁、天利人和各组中哪个字错了... 天空哨兵多功能相控阵雷达研制背景与计划 ...与B区的分界线大致沿___-___一线分布,与我国一月__ 什么证件能办银行卡 办理银行卡除了身份证还能用别的证件么 办卡证件都有什么 ...每次她都不拒绝、不接受,并且转移话题,怎么办? 我的细胞污染了,谁能帮我看看呀,有录像 支原体污染的认识、检测、防治 [1] 遗传算法--附Python代码 山东方言中 xiai 是什么意思 一个易用、易部署的Python遗传算法库 python:遗传算法(Genetic Algorithm,GA)求解23个测试函数 用python写个云顶之弈阵容助手,助你今晚“吃鸡”(遗传算法) 药物熏蒸电热管多少钱 带手的成语都有什么 有哪些含“手”字的成语 请问带手的成语有什么 马桶堵塞有什么办法解决谁清楚 如何要回女儿的抚养权 女儿的抚养权在他爸爸那里能要回来吗 ...个女儿,现在我们不在一起了,我能要回孩子的抚养权吗? 我自己抚养着两个孩子了,二女儿抚养权在他爸爸那,他爸爸管不上孩子,我... 2022年一级建造师考试如何安排四个科目的复习顺序 一建建筑实务怎么没有涂后面几页的? 丫T4708541051311货到边度? 我离婚了小孩抚养权给我了 几个月后小孩妈妈又要来要孩子她违法吗? ...2 ),B(3,5) ,将向量AB按向量a=(-1,-1)平移后得向量A'B'为?? 向量AB=(3,4)按向量a=(1,2)平移后为___ 按向量a=(1,2)平移