遗传算法的Matlab实现
本文最后更新于 2025年4月22日 下午
问题描述
我方有一个基地,经度和纬度为(70,40)。假设我方飞机的速度为 1000 公里/小时。我方派一架飞机从基地出发,侦察完敌方所有目标,再返回原来的基地。在敌方每一目标点的侦察时间不计,求该架飞机所花费的时间(假设我方飞机巡航时间可以充分长)。
已知敌方100 个目标的经度、纬度数据在文件sj.txt中
1 |
|
解决方法
使用遗传算法解决如下:
1 |
|
运行结果
遗传算法每次运行的结果都不一样,下面选了一次效果比较好的结果展示

结论
本文根据已有的资料,对遗传算法的Matlab程序进行分析,完善,并添加了相应的注释,给出了解决目标侦查路线问题,其本质也是TSP(Travelling salesman problem)问题的解决过程。
遗传算法的核心是三种遗传算子(复制、交叉、变异)的遗传策略以及最优个体的选择策略,更改程序中相应的参数,可以解决类似的组合优化问题。
文中核心代码源自网上资料,名为《数模大全》的第二十三章现代优化算法,但书名、作者均无法考证,但作者做了一些适应性的修改。
本文程序的特点说明:
- 程序中的交叉概率、变异概率均为随机生成,每一次迭代都不一样;
- 交叉策略为断点交叉,即选择一个断点,断点右端的染色体全部交换;
- 染色体编码方式为浮点数编码;选择最优个体的方式是简单的排序选择,目标函数值越小,适应度值越大;
- 程序终止的唯一条件是达到最终迭代次数。
本文程序后续的改进方向:
- 更改交叉概率、变异概率产生的方式,如设置一个不变的常数
- 更改编码、解码的方式,如二进制编码
- 更改交叉、变异的方式,如单点交叉、两点交叉、多点交叉、均匀交叉、位变异、均匀变异、倒位操作等
- 更改选择最优个体的方式,如轮盘赌法、两两竞争法等
遗传算法的Matlab实现
https://www.bit01.top/2025/03/25/matlab-genetic-algorithm/