车辆调度问题之蚁群算法的实现

一、概念以及原理介绍(理解原理与公式)

  1. 除冰车辆蚁群算法步骤
    (1)初始化各控制参数,确定待服务飞机的位置,将镰蚁放在除冰中心;
    (2)将所有路径上的信息素挥发出来,每个蚂蚁按概率移动,确定allowed表;
    (3)设待服务机位i,按概率选择公式选择下一个待服务机位j,若j机位所需除冰液qSW,则进行下一步,否则j回到allowed表,转到步骤6;
    (4)计算j,并将i加入禁忌表,同时计算i,j之间的路径长度和除冰成本;
    (5)局部信息素更新。当每个蚂蚁经过某路径后,用局部信息素更新公式对该路径的信息素进行更新释放;
    (6)判断蚂蚁的禁忌表长度是否小于待除冰飞机数量,若是转到步骤3,否则转到步骤7
    (7)对最优路径进行n次2-opt变换,将结果与变换前作比较,取小的作最优路径,并更
    (8)用全局信息素更新公式对最优和最差路径进行信息素更新并释放;
    (9)根据公式对自适应参数Q,p, 40,进行相应调整;
    (10)判断当前循环次数是否等于所设置的最大循环次数,若是结束循环,若不是,清空禁忌表,重复上述步骤。
    在这里插入图片描述
    核心思想:

蚁群觅食过程中,每只蚂蚁在所走过的路径上均会释放出一种信息素,该信息素随时间的推移逐渐挥发。因此,每条路径上的信息素同时存在正负反馈两种机制。正反馈:蚂蚁每次经过该路径均会释放信息素使得该路径上的信息素浓度增加;负反馈:每条路径上的信息素随时间推移会逐渐挥发。由此,我们可以判断,在起点与终点之间,当相同数量的蚂蚁初始同时经过两条不同的路径时,路径上初始信息素的浓度是相同的;不过,当路径越短时,信息素挥发时间也越短,残留信息素浓度也将越高。随后的蚂蚁将根据路径上残留信息素浓度的大小对路径进行选择
— 浓度越高,选择概率越大。最终导致信息素浓度越高的路径上蚂蚁的选择数目越多,而更多的蚂蚁也将同时导致该路径上残留信息素浓度越高(即高者越高,低者越低)。因此,在理想情况下,整个蚁群将逐渐向信息素浓度最高的路径(即最短路径)进行转移。

迭代公式参考:
在这里插入图片描述
第二个公式是:信息素更新公式
在这里插入图片描述
用python编写代码实现以下
源码文件:test_01.py
这里需要用到两个库:一个用于科学计算、矩阵、数组计算的库numpy,一个是绘图库matplotlib,具体设计看源码有注释

coordinates = np.array([[565.0, 575.0], [25.0, 185.0], [345.0, 750.0], [945.0, 685.0], [845.0, 655.0],
                        [880.0, 660.0], [25.0, 230.0], [525.0, 1000.0], [580.0, 1175.0], [650.0, 1130.0],
                        [1605.0, 620.0], [1220.0, 580.0], [1465.0, 200.0], [1530.0, 5.0], [845.0, 680.0],
                        [725.0, 370.0], [145.0, 665.0], [415.0, 635.0], [510.0, 875.0], [560.0, 365.0],
                        [300.0, 465.0], [520.0, 585.0], [480.0, 415.0], [835.0, 625.0], [975.0, 580.0],
                        [1215.0, 245.0], [1320.0, 315.0], [1250.0, 400.0], [660.0, 180.0], [410.0, 250.0],
                        [420.0, 555.0], [575.0, 665.0], [1150.0, 1160.0], [700.0, 580.0], [685.0, 595.0],
                        [685.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

扫地僧985

喜欢就支持一下,谢谢老板!

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

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

打赏作者

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

抵扣说明:

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

余额充值