解析遗传算法-组合优化问题新方案及与经典算法比较

本文分析了遗传算法解决组合优化问题的可行性,以旅行商问题为例,详细介绍了算法设计,包括编码、适应度评价、选择、交叉和变异操作。通过调整种群个数、迭代次数、交叉概率和变异概率,测试了算法性能。同时,将遗传算法与贪心算法、动态规划、回溯法和分支限界法进行了对比,探讨了各种算法在解决TSP问题时的特点和适用场景。文章最后提出了引入精英策略的算法改进,并总结了实践收获。
摘要由CSDN通过智能技术生成
  • 第一章 问题分析

1.1研究背景

遗传算法是一种模拟自然选择和遗传学机制的计算模型。该算法的产生及发展主要来自于对生物进化过程的深入研究,尤其是达尔文的自然选择理论和门德尔的遗传学理论。美国的 John holland于20世纪70年代最早提出了遗传算法,它依据的是达尔文生物进化论“物 竞天择,适者生存”以及生物遗传机制:

地球上的生物通过自然选择、染色体交叉、基因变异不断进化,以适应环境的改变。遗传算法模拟了生物进化的这一过程,把待求解问题的初始解映射为 “染色体”,使其经过选择、交叉、变异的过程从而进化为最优解。遗传算法包括初始化种群、个体评价、选择运算、交叉运算、变异运算以及终止条件判断六个过程。

表1生物学和遗传算法概念对照

生物学

遗传算法

外界环境

约束条件

个体

问题的一个可行解

个体对环境适应度

可行解的质量

种群

一定数量可行解的集合

生物的繁衍

算法的迭代

种群的进化过程

可行解的优化过程

 2006年,何燕对遗传算法进行改进,将其应用到车间调度领域。2010年,蒋波将遗传算法应用于车辆路径优化问题,指出遗传算法求解该问题的优越性,并对其做出了改进。2013年,乔阳将遗传算法和Ostu图像分割法进行改进后结合在一起进行图像分割实验,得到了满意的结果。

90f2912022dd439cbe4ab67fe09e7a11.png

图 1 遗传算法基本流程图

1.2现状分析

当前,遗传算法已经被广泛应用于各种领域,包括组合优化问题、机器学习、信号处理、自适应控制、生物信息学、经济学等。在这些领域中,遗传算法被用来解决一些传统优化算法难以处理的问题,例如,NP难问题、多目标优化问题、动态优化问题等;遗传算法的研究现状主要体现在以下几个方面:

1)算法改进:为了提高遗传算法的搜索效率和解的质量,研究者们提出了许多改进的遗传算法,如并行遗传算法、多目标遗传算法、混沌遗传算法等。

2)理论分析:研究者们对遗传算法的收敛性、稳定性、复杂性等进行了深入的理论分析。

3)应用研究:遗传算法被广泛应用于各种实际问题的求解,研究者们不断探索遗传算法在新的应用领域中的可能性。

4)融合其他优化技术:遗传算法与神经网络、模糊系统、粒子群优化、蚁群优化等其他优化技术的融合也是当前的研究热点。

总的来说,遗传算法作为一种有效的优化工具,其研究和应用仍具有广阔的前景。

1.3 遗传算法解决组合优化问题可行性分析

1.3.1组合优化问题

1.3.2遗传算法

1.3.3遗传算法解决组合优化问题

1.4实例选择

经过前面的研究学习,较为系统的掌握了遗传算法的核心思想。下面结合该算法应用场景和学期课程学习,选择组合优化问题中的经典TSP旅行商问题进行深入实践并尝试改进遗传算法。

TSP旅行商问题:一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地。应如何选择行进路线,以使总的行程最短;用图论描述即为:已知带权完全图G,求一条使得路径总和最小、且经过所有顶点的回路。

下图是本人用MATLAB画的我国20个主要城市的地理位置,作为本次实践推销员所要去的若干城市,问题也就转化为在图上找出一条经过所有城市且不重复能回到出发地的最短路径。

1662aa340c0248bfa074b16508f1fbc8.png

图 2推销所经城市地理图

注:介于MATLAB强大的数据可视化功能和科学计算能力,为了更加专注于算法实现和优化分析,本次实践代码全部用MATLAB实现。

第二章 算法设计

2.1流程框架

78c9e62a99234b4f9301713f85b132e7.png

图 3算法设计流程图

2.2 详细设计

2.2.1 编码及种群初始化

。。。

2.2.2 适应度评价

。。。

2.2.3选择操作

。。。。。。

2.2.4交叉操作

交叉操作用于产生新的个体,实现种群的更新,其主要目的是为了实现解的质量和多样性。常见的交叉算法有单点交叉、多点交叉、部分匹配交叉(PMX)、顺序交叉(OX)、循环交叉(CX)等。

我采用的是部分匹配交叉方法,即采用随机方式在父体中确定2个位置的交叉段进行交换,选择这种方式主要考虑的是它保证了每个染色体中的基因仅出现一次,通过该交叉策略在一个染色体中不会出现重复的基因。

设计一个函数接收两个染色体编码A和B,返回交叉操作后染色体编码A和B。

在函数内部,首先计算染色体的长度L,然后根据L决定交叉的长度W(即交叉的基因数)。接着,它选择一个随机位置P作为交叉点,通过循环进行交叉操作:在每次迭代中交换两个染色体在交叉点之后的W个基因。 

1d2f89f647014b97841c8dfbd9ac0aa8.png

2.2.5变异操作

。。。。

第三章 算法分析

3.1 操作算法分析

3.1.1适应度函数

采用的适应度函数是根据个体的路径长度来计算适应度值。它使用了一个非线性的适应度函数,使得路径长度较短的个体有更高的适应度值。这种设置可以加强算法的全局搜索能力,避免过早陷入局部最优状态。

3.1.2 轮盘赌选择算子

该算法的核心思想就是个体被选中的概率与其适应度成正比,每个个体都有被选中的可能,能够在一定程度上保留种群的多样性,有利于防止过早陷入局部最优;同时适应度高的个体被选中的概率更高,这样有利于优秀解的保留和繁衍。

但同时存在缺陷待改进:

  1. 无法保证最优解:虽然适应度高的个体被选中的概率更高,但是仍然存在优秀个体未被选中的情况,存在损失最优解的风险。
  2. 对适应度差异敏感:如果种群中个体适应度差异过大,会降低种群多样性。

3.1.3 部分匹配交叉算子

。。。。

3.1.4 单点变异算子

。。。。

3.2复杂度分析

第四章 结果测试及分析

遗传算法有几个重要参数:
种群个数M、交叉概率PC、变异概率PM、城市位置(存储在pos中)和个数N

下面尝试改变这几个参数,调试分析结果:

4.1改变种群个数

迭代次数1000,交叉概率0.9,变异概率为0.05,城市位置不变,种群个数改变:

  1. M=150,此时最优路径选择如下图所示,最优路径长度86.2185

e518fe8fd0b54149981b3667690ce90a.png图 4改变种群个数结果演示1

 2)M=200,此时最优路径如下图所示,最优路径长度82.2486,相较于1)变短

2bd2924d9bbd42f1afa119f9b6c68ae1.png图 5改变种群个数结果演示2

3)M=250,此时最优路径如下图所示,最短路径93.3032,比1),2)都长

356c99fed73a4dbcb3c1d5520ea57c81.png图 6改变种群个数结果演示3

经过上面的测试,可以发现随着种群个数的增多,最短距离的变化先减少后增加。所以种群数目关系到收敛速度。当个数在【150,250】之间时,收敛速度较好。

4.2改变迭代次数

。。。。。。

4.3改变交叉概率

。。。

4.4改变变异概率

。。。。。

从上面的结果分析可知,遗传算法的这几个参数:种群个数、交叉概率P、变异概率、迭代次数都会影响最短路径的获取,在本次实践的TSP问题中,20个城市获取最短路径时,迭代次数在【700,1300】,种群数量在【150,250】,交叉概率在【0.4,0.95】,变异概率在【0.05,0.1】范围内,结果较好,当然由于在交叉变异操作中的随机性,会略有偏差。

第五章 算法对比

5.1 贪心算法

5.2 动态规划

5.3回溯法

5.4分支限界法

5.5对比分析

表2 算法对比分析

。。。。

5.6 总结

1.对于小规模的 TSP 问题,动态规划和回溯法都能得到全局最优解,但随着问题规模的增大,这两种方法的计算量将急剧增大,难以在可接受的时间内找到解。

2.贪心算法有较好的扩展性,可以在较短的时间内找到大规模问题的可接受解,但不能保证找到全局最优解。

3.遗传算法在大规模搜索空间中能找出非常好的解,并且对比他算法有时可能会更能找到全局最优解。但该算法的参数选择对其算法性能的影响是比较大的。

4.选择哪种算法取决于具体的问题规模、对解的精度要求、可用的计算资源等多种因素。实际应用中,可以根据需要结合多种算法,或者对算法进行一些改进和优化,以适应具体的问题和需求。

第六章 算法改进

在原有的遗传算法基础上,增加精英策略,主要是为了保护优秀的基因不被破坏;

因为遗传算法的随机性,在算法的运行过程中,通过选择、交叉和变异操作,可能会使得当前的最优解在下一代中丢失,引入精英策略可以保证当前最优的解能被保留到下一代中;同时,由于保留了最优解,因此可以避免算法在搜索过程中对最优解的反复"探索",从而提高搜索效率。

首先,根据适应度评价选择一定数量的最优个体,即精英,我选择的是1,然后在进行遗传算法的选择、交叉、变异等操作时,直接将这些精英个体保留到下一代种群中,不对他们进行改变,对剩余的非精英个体,进行正常的选择、交叉、变异等操作,产生下一代种群。

60b7b9aeb2f049fcbb4f11834811a2ae.png

32c3d9e54e524a6582cb462a9ca2d33b.png第七章 总结

。。。。

第八章 参考文献

[1] 纪树新.遗传算法解决组合优化问题的可行性研究.湖北汽车工业学院,1999

[2] 于丰瑞.基于改进的遗传算法求解TSP问题.内蒙古农业大学,2016

[3] 闫茹.基于改进遗传算法的旅游路线优化研究与应用.北方民族大学,2021

[4] 赵涛,叶志伟.求解旅行商问题的改进k-opt遗传算法.湖北工业大学,2023

[5] 湛文静,李泳科.基于改进遗传算法的路径规划问题相关研究综述.南京理工大学,2023

[6] 闫梦玲.基于公交车开展物流配送的车辆路径优化问题.重庆交通大学,2023

[7] 边锦华,张晓霞.求解TSP问题的一种变领域遗传算法.辽宁科技大学,2023

[8] 曾坤,姜志侠.改进的分布式并行遗传算法求解大规模TSP问题.长春理工大学,2022

欲取完整报告某闲某与搜索用户脆脆鲨嘞查看,感谢支持!

  • 39
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

42341352315125115

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值