交通问题一直是困扰城市特别是大城市发展的一个重要问题,在现有交通基础设施和机动车数量快速增长条件下,交通拥堵问题越来越严重。在错综复杂的城市路网中,如何使得行人车辆到达目的的路程距离和整体的交通拥堵程度之间取得一个最佳的平衡,是交通管理的一个重要研究方向,本文将这个问题进行探讨。
从自然界的蚂蚁在觅食时的行为中得到启发,意大利科学家Dorigo等人于1991年提出了一种模拟蚂蚁来寻找最优路径的算法即人工蚁群算法。蚁群算法不仅具有分布式计算的特征,而且能做到信息的正反馈和启发式的搜索,不仅适用于离散系统的优化,也适用连续问题的优化。近些年来,蚁群算法被用于交通管理问题,进行路网的实时监测处理。原有的以蚁群算法进行交通管理的论文大多集中于挥发系数和比例系数对结果的影响,本文将拥堵系数引入信息素更新参数因子,实现对路程长度和拥堵程度的平衡。
1. 算法策略
1.1 目标函数
在交通问题中,一般有两个重要指标,一个路程,一个是花费的时间,如公式(1)、(2)、(3)所示, 代表总体目标函数值, 代表平均路程距离, 代表交通拥堵程度标准差, 和 为两者在整体目标中的调整系数,根据实际需要设置,代表两者的重要程度。在实验中随机产生一批蚂蚁,从某个节点出发,计算每个蚂蚁到目的节点的平均路程, 为找到有效路径的蚂蚁数, 表示每一只蚂蚁从起点到终点的路程长度, 为某一时刻一条路径上的蚂蚁数量,而 代表同一时刻所有路径上的平均蚂蚁数量,对于不连通的路径,取 等于 , 代表连通的有效路径数量。
实验步骤如下:
Step1: 根据实际需要确定 和 ;
Step2: 产生一批蚂蚁,每只蚂蚁根据信息素进行路径选择;
Step3: 进行一次迭代,计算蚂蚁数标准差、平均路程长度以及目标函数值等,如果满足一定终止条件,终止,否则进入Step4;
Step4: 根据一定策略更新信息素;
Step5:转到Step2。
终止条件包括找到目标的蚂蚁数达到一定比例、搜素目标的时间耗尽、蚂蚁总随机次数达到一定数值仍未找到目标则丢弃等。蚁群算法流程图如图1所示,每次迭代后根据每只蚂蚁的路径长度重新计算信息素,然后进行下一次迭代。
图1 蚁群算法流程图
1.2 信息素更新策略
在一般的蚁群算法中,最优路径和非最优路径有着不同的信息素更新策略,在下一轮蚂蚁的路径选择中发挥着选择概率大小的不同作用,同时信息素以一定的系数挥发。在这里挥发系数以参数 表示, 为最优路径信息素增加量,本实验中采取某一定值,非最优路径乘以大小为 的比例系数。 表示迭代前某条路径上信息素量, 表示迭代后更新的该路径信息素量。最优路径信息素迭代如公式(4)所示,非最优路径信息素迭代公式(5)所示。
本实验将改进信息素更新策略,每一次迭代后,在根据路程长度更新信息素后引入拥堵系数,即实时计算此次迭代中每一条路径上平均经过的蚂蚁数,对于大于平均数的路径计算其差值,如果差值大于1,以信息素除以这个差值缩小信息素值,以减少其被后来的蚂蚁选择的概率,对于小于蚂蚁平均数的路径,得以相对增大信息素量从而增大其被选择的概率。 为某一时刻一条路径上的蚂蚁数量,而 代表同一时刻所有路径上的平均蚂蚁数量, 表示该路径的信息素量, 为调整系数,信息素更新在经过公式(4)和公式(5)的处理后,对于大于蚂蚁数平均值的路径如公式(6)处理。
2. 实验设计
本实验算例如图2所示,起始节点0,目的节点20。进行两组实验,第一次实验使用路程优先的蚁群算法,每次蚂蚁信息素根据路程长度进行更新,如公式(4)和公式(5)所示。第二次实验在公式(4)和(5)的基础上,引入拥堵系数更新信息素,如公式(6)所示。
图2 本次实验节点和距离示意图
实验平台intel i7-4790处理器,主频3.6GHz,内存16GB,程序编译工具VS2010,仿真工具Matlab R2012a。
3. 实验结果
第一次实验采取路程长短为导向的蚁群算法,即每次迭代中信息素量以路程长短为标准更新,基于公式(4)和公式(5)。每次实验采用100只蚂蚁,仅将到达目的的蚂蚁纳入计算范围,计算其平均路程长度和路程标准差,将标准差除以到达目的地的蚂蚁数量, 取0.1, 取0.01, 取1, 取150,进行100次迭代,最后10次获取的结果如表1所示,保留两位有效数字。从实验结果可以看出,以路程为导向的蚁群算法能够在平均路程上取得较好的结果,但是各个道路经过的蚂蚁数量和平均经过的蚂蚁数量的标准差较大。
表1 第一次实验函数值
次数 | 平均路程 | 标准差 |
| |||
| 90 | 9.02 | 24.17 | |||
| 91 | 8.09 | 24.89 | |||
| 92 | 8.5 | 24.58 | |||
| 93 | 8.85 | 24.9 | |||
| 94 | 8.24 | 26.16 | |||
| 95 | 8.27 | 24.53 | |||
| 96 | 8.14 | 24.84 | |||
| 97 | 8.72 | 24.07 | |||
| 98 | 9.49 | 24.39 | |||
| 99 | 8.63 | 25.19 |
第二次实验在每次迭代后,计算每条路径上的蚂蚁数,引入拥堵系数。每条路径上经过的蚂蚁数表明这条路径较为拥挤,反之则较为顺畅,那么在根据公式(4)、(5)计算信息素后,在根据公式(6)进一步更新信息素,将导致信息素在拥挤程度较大的路径上减少,将缩小后来的蚂蚁对这条道路的选择概率,在顺畅的道路上信息素相对增大,增加被后来的蚂蚁选择的概率。经过调整进行实验,同样进行100次迭代后,最后10次的目标函数值如表2所示,保留两位有效数字。从实验结果可以看出,蚂蚁到达目的地所经过的平均路程明显增加,但所有路径上的蚂蚁数的平均标准差显著降低。 取0.1, 取0.01, 取1, 取150, 取1。
表2 第二次实验函数值
次数 | 平均路程 | 标准差 |
| |||
| 90 | 18.82 | 6.68 | |||
| 91 | 28.90 | 2.62 | |||
| 92 | 23.37 | 9.0 | |||
| 93 | 21.71 | 3.96 | |||
| 94 | 17.28 | 5.69 | |||
| 95 | 15.85 | 14.52 | |||
| 96 | 26.7 | 3.87 | |||
| 97 | 16.49 | 10.22 | |||
| 98 | 25.43 | 5.28 | |||
| 99 | 16.12 | 7.78 |
两次实验的路程对比如图3所示,蓝色虚线表示第一次实验蚂蚁平均路程长度,每只蚂蚁从起点到终点路程长度迅速收敛,稳定在10以下。红色实线表示第二次实验路程长度,可以看出,引入拥堵系数后每只蚂蚁所经过的路程长度变化较大,收敛不明显,且明显大于第一次实验中蚂蚁的路程。
图3 两次实验路程对比图
两次实验的时间对比如图4所示,蓝色虚线表示第一次实验每次迭代所花费的时间,每次迭代花费时间迅速下降,稳定在50毫秒左右。红色实线表示引入拥堵系数后每次迭代花费时间,大致在200毫秒到350毫秒之间浮动。
图4 两次实验时间对比图
在每次迭代后,首先计算每条路径上经过的平均蚂蚁数,然后计算每条路径的蚂蚁数和平均数之间的标准差,第一次实验如图5的蓝色虚线所示,第二次实验如图5的红色实线所示。可以明显看出,前者的标准差明显大于后者的标准差,表明没有引入拥堵系数时每条路径的蚂蚁数更偏离平均数,每条路上蚂蚁数分布更不均。而引入拥堵系数后,有效缩小了标准差,表明降低了拥堵程度,分散了蚂蚁流量,达到路程和蚂蚁数的均衡。
图5 两次实验标准差对比图
4. 结束语
本文首先讨论了交通管理系统中路程和拥堵目标函数方程,然后用路程优先的蚁群算法和引入拥堵系数的蚁群算法进行两次实验。实验表明,引入拥堵系数后,蚂蚁的路程变长,而标准差变小,路程和标准差存在一定的替代关系,每个区域可根据实际情况设置路程和拥堵的权重系数,实现两者之间的平衡。