蚁群算法的数学模型和算法详细描述如下,设表示相邻两个栅格之间的 距离, n为栅格地图中栅格的总数量,M 为一个蚁群中蚂蚁的总数量。
蚂蚁 从起始点出发,到达目标点,会在经过的边上留下信息素,将蚂蚁 当前所走 过的栅格记录在禁忌表 里。 首先初始化各路径上的信息量,设 ,C 为常数,t = 0 时刻每个路 径上的信息量相等。将M 只蚂蚁放在起始点,初始化每只蚂蚁的禁忌表为起始点。
然后每只蚂蚁从起始点出发,搜索相邻栅格,按照随机选取规则进行移动, 即在t时刻,蚂蚁 栅格由栅格 i 转移到栅格 j 的状态转移概率为,其计算原理如公式所示
为t时刻路径(i , j) 上的信息量,其是一个动态值。为t时刻的启发 函数,一般设置为栅格i转移到栅格 j的距离的倒数,即,是一个固 定值。可看出,栅格之间距离越近,启发函数的值越大,被蚂蚁选择的可能性越 大,则启发函数一定程度上反映蚂蚁选择栅格的倾向程度大小。
蚂蚁下一刻会选择的栅格用来存储,蚂蚁在起始点时,剩余全部的 栅格都可能为下一个蚂蚁的选择栅格,即,此时蚂蚁只访问过 起始点,即 。
当蚂蚁开始寻路后,中的元素个数不断减 少,中元素的个数不断增加。如果蚂蚁搜索到目标点,则 , ,禁忌表中的所有元素则为一个可行解。
此外, α 为信息素权重,其值越大,蚂蚁之间协作性越强,则该蚂蚁越倾向于选择其他蚂蚁经过的路径; β 为启发函数权重,其值越大,则该蚂蚁选取下一栅格的规则越接近于贪心 规则,即不能从整体优上考虑,选择局部优的栅格。
为了避免蚂蚁都集中在局部优解的路径上,尽早就停止了寻找其他可能 优解。每完成一次M 只蚂蚁迭代寻路后,需要更新信息素。即在 t+ 1时刻,需 要对当前可行解的路径上的信息量按照如下式所示,进行调整。
式中,ρ ⊂ [0,1) 表示信息素维持系数,则1− ρ 表示信息素挥发系数。
表示M 只蚂蚁经过一次迭代后,在路径(i , j) 上的信息素总和,初始时刻 。 表示第k只蚂蚁在t到 t+ 1时刻留在路径( i, j)上的信息素。
关于 的更新策略主要有蚁周(Ant-Cycle)模型、蚁量(Ant-Quantity)模型和 Ant-Density 模型。
我们采用 Ant-Cycle 模型,信息素更新策略如式 所示,
式中,Q为常量, 表示第k只蚂蚁所走路径( i, j)的长度。
执行完信息素的更新,需判断循环迭代次数I 是否达到大循环迭代次数 N 。若未达到,则加一个时间单元进行第 I + 1 次循环迭代,但在第 I + 1次循环 迭代之前,要初始化各蚂蚁禁忌表、位置以及各边信息素初始浓度与释放量,重复以上寻路过程,否则,输出短路径,此路径即是蚁群经过N 次循环迭代后 到目前点为止的短路径。
蚁群算法鲁棒性强,具有高度并行性,易与其他算法结合。分析蚁群算法在 路径规划的应用,如图所示,仿真蚁群算法在 35*35 的地图上运行的结果, 其中,黑色栅格代表货架,蓝色线段为蚁群算法找到的一条路径。起始点和目标 点分别为(2,2)和(30,35),路径长度 49.426m,搜索栅格数 608 点,耗费时间 1.485s, 货架接触次数 0 次。
该算法规划出的路径有效地避开了货架的边角点,但规划出的路径并不是短的路径