ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【备战美赛】遗传算法

2022-01-19 11:31:34  阅读:212  来源: 互联网

标签:编码 遗传 备战 适应度 遗传算法 最优 美赛 模拟


和模拟退火算法类似,遗传算法的本质也是通过一定地策略去寻找最优解。模拟退火运用了动力学原理,遗传算法则是运用了生物学自然选择的原理,思路巧妙。遗传算法是一种随机全局搜索优化,通过模拟自然选择和遗传中的复制、交叉、变异来实现“优胜劣汰”,最终找到最优解。

遗传算法步骤

1 染色体编码

对于每一个状态,要进行相应的编码来完成对数据的处理。这一点和状态压缩的处理方法有相似之处。一个状态对应一个编码,反之,一个编码也能解码出一个唯一的状态。好的编码可以使得后续模拟遗传中的复制、交叉、变异时更加方便。一般采用的编码方法有二进制编码、格雷码等。

2 生成初始群体

要初始化的变量包括

T 遗传代数(终止条件)

M 初始种群个体数量

Pc与Pm 代表交叉和变异的概率(生物知识告诉我们变异的概率一般都不大)这里Pc一般取0.4~0.99,Pm一般取小于0.1

3 个体适应度评价

如何进行“优胜劣汰”这个过程呢?也就是说怎样去量化一个个体的适应度呢?这里我们需要根据实际情况来自定义一个个体适应度评价的标准。例如NP旅行商问题里,某一个方案的路程之和便是该方案的适应度,通过比较多种方案的路程的大小筛选出较小的继续“繁衍”,淘汰路程较大的状态。

4 遗传算子

也就是模拟选择、交叉、变异的过程,因为生物中的遗传变异是随机的,所以模拟的时候也是随机化的。我们会根据设置的概率参数,随机选择交叉的个体和变异的个体,从而生成一个新的问题的解。之后重复“优胜劣汰”的过程,淘汰不好的解。每进行一次后,遗传代数+1。

5 终止判断条件

当模拟的遗传代数达到预设的最大遗传代数T时,我们认为已经获得了最优解,便终止进程,获取该最优解。由于遗传算法仍旧没有对全局进行遍历,所得到的解仍可能是一个局部最优解,但是相比模拟退火和爬山算法,获得全局最优解的概率已经大大提高。

 

(NP)旅行商问题

简而言之,旅行商问题要求找到一条最短的恰好经过了n个城市的路径(每个城市只能经过一次且城市两两相连)。旅行商问题是经典的NP完全问题,目前除了暴力地遍历(时间复杂度为O(n!))还没有一个完美的解法,但是我们可以通过遗传算法来获取一个近似解(实际上很可能是最优解)。

参照遗传算法的定义,这里的编码可设置为城市的顺序(一个一维数组),适应度设置为沿着该顺序需要走的总路程,路程越短适应度越好。遗传的过程便是通过模拟这个一维数组的排列变换来实现。通过T代的循环模拟之后,以最终得出的最优解作为结果。

标签:编码,遗传,备战,适应度,遗传算法,最优,美赛,模拟
来源: https://blog.csdn.net/Fellyhosn/article/details/122576246

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有