人工蜂群算法(Artificial Bee Colony Algorithm,简称ABC算法)是一种借鉴蜂群觅食行为来求解数值优化问题的启发式算法[220]。相较于遗传算法,ABC算法具有更好的局部搜索机制,在搜索过程中基本不利用外部信息,仅以适应度函数作为进化依据,从而提高了解的质量。
ABC算法主要包括蜜源、雇佣蜂、跟随蜂和侦察蜂4个要素,其中雇佣蜂用于维持优良解,跟随蜂用于提高算法收敛速度,侦察蜂用于避免算法陷入局部最优。在标准的ABC算法中,雇佣蜂利用先前的蜜源信息寻找新的蜜源并与侦察蜂分享蜜源信息;侦察蜂在蜂房中等待并依据雇佣蜂分享的信息寻找新的蜜源;侦察蜂的任务则是在蜂房附近随机地寻找一个新的有价值的蜜源。
考虑车辆载客能力约束的越站控制方案生成模型的解由n×N个元素构成,代表了目标公交线路l上n班公交与N个站点,故可用包含二元变量yi,j的矩阵表示解空间(即蜜源搜寻空间)。
由于车辆运行过程的随机性,人工蜂群算法中适应度计算(评判蜜源质量)时需要利用蒙特卡罗仿真抽样过程。包含蒙特卡罗仿真的人工蜂群算法具体如下:
1.人工蜂群算法流程
Step 1:参数初始化。初始化蜂群规模Nc,雇佣蜂数量Ne,观察蜂数量No,侦察蜂数量Ns,蜜源质量保持不变的极限迭代次数设为lim。设定迭代计数变量I,令其初始值为1,即令I=1。设定最大迭代次数Imax。
Step 2:雇佣蜂初始化。为每一个雇佣蜂随机生成一个初始蜜源(初始解),设定每个蜜源的迭代计数变量均为0。
Step 3:雇佣蜂工作阶段。每只雇佣蜂在当前蜜源附近搜索产生一个新的蜜源(新的解)。基于蒙特卡罗仿真评价新蜜源的质量(即适应度),若新蜜源的质量优于当前蜜源,则遗弃当前蜜源、保留新蜜源;反之,则仍保留当前蜜源,并令该蜜源的迭代计数变量加1。
Step 4:跟随蜂工作阶段。一旦所有雇佣蜂完成局部搜索过程,它们将与跟随蜂交流蜜源质量信息。蜜源的质量与跟随蜂选择该蜜源的概率成正比。运用轮盘法确定跟随蜂选择的蜜源。确定后,跟随蜂采用与雇佣蜂相同的方式进行局部搜索,产生一个新的蜜源。若新蜜源的质量优于当前蜜源,则选择新蜜源、遗弃当前蜜源;反之,则仍保留当前蜜源,并令该蜜源的迭代计数变量加1。
Step 5:侦察蜂工作阶段。对比雇佣蜂找到的所有蜜源的适应度,找到最优的蜜源。若某一蜜源在极限迭代次数lim内未能更新,且又不是最优蜜源,则与该蜜源相关的雇佣蜂转变为侦察蜂,侦察蜂随机搜寻产生新蜜源替代当前蜜源,并令新蜜源的迭代计数变量为0。(www.xing528.com)
Step 6:检验是否停止算法。若I>Imax,算法停止并输出最小目标函数值及其对应的蜜源信息(最优解);否则,令I=I+1,并跳转至Step3。
2.蒙特卡罗抽样过程
Step 1:初始化。令抽样次数表示目标函数值的估计值。令惩罚参数M为一个给定的足够大的正数。设定样本规模mmax。
Step 2:取样。对于公交车辆i,基于站点j-1和站点j之间的行驶时间服从的分布函数,产生一组站点间行驶时间样本
Step 3:参数计算。利用样本行驶时间值,计算各参数值,包括停靠时间、到站/离站时刻、车头时距等。
Step 4:目标函数值计算。计算目标函数值,记为检查约束条件(10-22)是否满足,若不满足,令目标函数值
Step 5:检查是否停止算法。若m>mmax,则算法停止并输出目标函数估计值否则,令m=m+1,并跳转至Step 2。
Step 6:更新并计算
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。