发明名称 一种基于车辆路径规划的改进人工鱼群优化方法
摘要 本发明涉及一种基于车辆路径规划的改进人工鱼群优化方法。现有的算法计算量大、耗时长。本发明将人工鱼群算法仿生学原理和决策者主观偏好进行有效结合,对人工鱼群算法进行改进,引入鱼群感知范围的概念一排斥区、中性区和吸引区重构了人工鱼群算法的寻优公式;通过判断车辆路径上节点的需求量和当前车辆剩余运输能力,以及决策者主观偏好的角度对人工鱼的移动步长、视野范围和邻域值进行动态调整,以提高人工鱼群算法的全局搜索能力和搜索速度。最终应用改进的人工鱼群算法优化车辆的取、送货行为,完成可回程取货车辆路径调度问题。本发明在计算精度和稳定方面优于遗传算法、模拟退火算法等传统优化算法,具有良好的寻优能力。
申请公布号 CN101866384B 申请公布日期 2012.07.04
申请号 CN201010204047.1 申请日期 2010.06.18
申请人 杭州电子科技大学 发明人 柳毅;王晓耘;魏洁
分类号 G06F17/50(2006.01)I;G06N3/00(2006.01)I 主分类号 G06F17/50(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 杜军
主权项 1.一种基于车辆路径规划的改进人工鱼群优化方法,其特征在于该方法包括如下步骤:步骤1.随机生成初始规模的人工鱼群,将t时期车辆的状态用人工鱼个体的状态向量X=(X<sub>i</sub>(t),i=1,2,…,F_number)表示,其中,i为车辆将要驶离的节点,X<sub>i</sub>(t)为当前车辆的可支配货容量;目标函数Y决定人工鱼当前所在位置的食物浓度,Y<sub>i</sub>=F(X<sub>i</sub>(t));人工鱼个体之间的距离表示为d<sub>i,i+1</sub>=||X<sub>i</sub>-X<sub>i+1</sub>||;步骤2.自适应的设定邻域搜索范围:t时期人工鱼个体X<sub>k</sub>的邻域定义为:VisualScope={X<sub>k</sub>|d<sub>k,k+1</sub><R<sub>k</sub>},R<sub>k</sub>表示邻域半径;设人工鱼的邻域距离为R<sub>1</sub>,在R<sub>1</sub>距离之内的其他鱼对此鱼有排斥作用;邻域距离在R<sub>1</sub>和R<sub>2</sub>之间为中性区域,在R<sub>1</sub>和R<sub>2</sub>之间范围内的其他鱼对此鱼的作用包括排斥和吸引;邻域距离R<sub>2</sub>和R<sub>3</sub>之间的区域为吸引区,在R<sub>2</sub>和R<sub>3</sub>之间区域的其他鱼对此鱼有吸引作用;距离R<sub>3</sub>之外不属于鱼的感知范围,其中R<sub>1</sub><R<sub>2</sub><R<sub>3</sub>;步骤3.自适应的觅食行为:设定α,β分别为速度向量与两个坐标轴的方向角,根据式(1)分别确定参数α<sub>k</sub>(t),β<sub>k</sub>(t)的值来决定人工鱼个体X<sub>k</sub>下一步的移动方向;引入交换序操作符<img file="FSB00000769776000011.GIF" wi="119" he="48" />重构人工鱼群算法的觅食公式(2),扩大人工鱼群算法的搜索范围;<maths num="0001"><![CDATA[<math><mrow><msub><mi>&alpha;</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mrow><msub><mi>n</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></mfrac><munder><mi>&Sigma;</mi><mrow><mi>j</mi><mo>&Element;</mo><msub><mi>N</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></munder><msub><mi>&alpha;</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><msub><mi>&beta;</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mrow><msub><mi>n</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></mfrac><munder><mi>&Sigma;</mi><mrow><mi>j</mi><mo>&Element;</mo><msub><mi>N</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></munder><msub><mi>&beta;</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths>式中:N<sub>k</sub>(t-1)为t-1时刻人工鱼X<sub>k</sub>邻域VisualScope中存在的客户服务点集合,n<sub>k</sub>(t-1)是该集合内客户服务点总数;α<sub>j</sub>(t-1)和β<sub>j</sub>(t-1)分别表示当前人工鱼与邻域中第j个服务客户点的方向角度;通过求平均数α<sub>k</sub>(t),β<sub>k</sub>(t)来决定人工鱼X<sub>k</sub>下一步将要移动的方向;<maths num="0003"><![CDATA[<math><mrow><msub><mi>X</mi><mrow><mi>i</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow></msub><mo>=</mo><msub><mi>&alpha;</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><msub><mi>X</mi><mi>ik</mi></msub><mo>&CirclePlus;</mo><msub><mi>&beta;</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mi>rand</mi><mrow><mo>(</mo><mn></mn><mo>)</mo></mrow><mi>Step</mi><mrow><mo>(</mo><msub><mi>X</mi><mi>jk</mi></msub><mo>-</mo><msub><mi>X</mi><mi>ik</mi></msub><mo>)</mo></mrow><mo>/</mo><mo>|</mo><mo>|</mo><msub><mi>X</mi><mi>j</mi></msub><mo>-</mo><msub><mi>X</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo><mo>,</mo><msub><mi>Y</mi><mi>j</mi></msub><mo>></mo><msub><mi>Y</mi><mi>i</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>式中:X<sub>i(k+1)</sub>为人工鱼下一步的移动位置;X<sub>i</sub>为人工鱼当前位置,即已服务的客户位置;X<sub>j</sub>为在其感知范围内随机选择的另一个位置;X<sub>jk</sub>和X<sub>ik</sub>分别表示第k辆车访问节点i,j的位置;rand()表示[0,1]间的随机数,Step为进化代数;步骤4.聚群行为:将车辆剩余装载能力引入到人工鱼群算法的启发信息中,用人工鱼当前状态为X<sub>i</sub>表示车辆访问过节点i后的装载量,X<sub>ck</sub>表示整个人工鱼群的中心位置,X<sub>i(k+1)</sub>为人工鱼下一步的移动位置,X<sub>ik</sub>为人工鱼当前位置;Y<sub>i</sub>=F(X<sub>i</sub>(t))表示为人工鱼当前所在位置的食物浓度,即车辆要访问的下一个节点以及后续节点集的装载量,如果Yc/δ>Y<sub>i</sub>表明伙伴中心位置有较多食物且不太拥挤,Yc表示人工鱼群中心位置的食物浓度,δ表示拥挤度因子δ>1,则按(3)式向服务中心节点位置移动,如果Yc/δ≤Y<sub>i</sub>则执行觅食行为;<maths num="0004"><![CDATA[<math><mrow><msub><mi>X</mi><mrow><mi>i</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow></msub><mo>=</mo><msub><mi>X</mi><mi>ik</mi></msub><mo>+</mo><mi>rand</mi><mrow><mo>(</mo><mn></mn><mo>)</mo></mrow><mi>Step</mi><mfrac><mrow><msub><mi>X</mi><mi>ck</mi></msub><mo>-</mo><msub><mi>X</mi><mi>ik</mi></msub></mrow><mrow><mo>|</mo><mo>|</mo><msub><mi>X</mi><mi>ck</mi></msub><mo>-</mo><msub><mi>X</mi><mi>ik</mi></msub><mo>|</mo><mo>|</mo></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths>步骤5.追尾行为:设人工鱼群当前邻域内伙伴X<sub>max</sub>的位置最优,X<sub>i(k+1)</sub>为人工鱼下一步的移动位置,X<sub>ik</sub>为人工鱼当前位置,最优值如果Y<sub>max</sub>>Y<sub>i</sub>,表明伙伴X<sub>max</sub>具有较高的食物浓度并且不太拥挤,则按(4)式向伙伴X<sub>max</sub>前进一步,如果Y<sub>max</sub>≤Y<sub>i</sub>则执行觅食行为;<maths num="0005"><![CDATA[<math><mrow><msub><mi>X</mi><mrow><mi>i</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow></msub><mo>=</mo><msub><mi>X</mi><mi>ik</mi></msub><mo>+</mo><mi>rand</mi><mrow><mo>(</mo><mn></mn><mo>)</mo></mrow><mi>Step</mi><mfrac><mrow><msub><mi>X</mi><mi>max</mi></msub><mo>-</mo><msub><mi>X</mi><mi>ik</mi></msub></mrow><mrow><mo>|</mo><mo>|</mo><msub><mi>X</mi><mi>max</mi></msub><mo>-</mo><msub><mi>X</mi><mi>ik</mi></msub><mo>|</mo><mo>|</mo></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths>步骤6.车辆服务k个节点后其总运载量为<img file="FSB00000769776000023.GIF" wi="254" he="123" />车辆剩余运载能力q<sub>k</sub>=C-D′<sub>k</sub>,即q<sub>k</sub>是一个三角模糊数,q<sub>2k</sub>和q<sub>3k</sub>表示车辆分别服务一个随机节点后的剩余运载能力,C为每辆车的运输能力,d<sub>2,k+1</sub>和d<sub>1,k+1</sub>表示下一节点k+1的顾客模糊需求量,下一节点需求量小于车辆剩余容量的可能性表示为P<sub>k+1</sub>,<maths num="0006"><![CDATA[<math><mrow><msub><mi>P</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mi>pos</mi><mo>{</mo><msub><mi>D</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>&le;</mo><msub><mi>q</mi><mi>k</mi></msub><mo>}</mo><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>1</mn><mo>,</mo><msub><mi>d</mi><mrow><mn>2</mn><mo>,</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>&le;</mo><msub><mi>q</mi><mrow><mn>2</mn><mi>k</mi></mrow></msub></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>q</mi><mrow><mn>3</mn><mi>k</mi></mrow></msub><mo>-</mo><msub><mi>d</mi><mrow><mn>1</mn><mo>,</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub></mrow><mrow><mrow><mo>(</mo><msub><mi>q</mi><mrow><mn>3</mn><mi>k</mi></mrow></msub><mo>-</mo><msub><mi>q</mi><mrow><mn>2</mn><mi>k</mi></mrow></msub><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><msub><mi>d</mi><mrow><mn>2</mn><mo>,</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>d</mi><mrow><mn>1</mn><mo>,</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow></mrow></mfrac><mo>,</mo><msub><mi>d</mi><mrow><mn>2</mn><mo>,</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>&GreaterEqual;</mo><msub><mi>q</mi><mrow><mn>2</mn><mi>k</mi></mrow></msub><mo>,</mo><msub><mi>d</mi><mrow><mn>1</mn><mo>,</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>&le;</mo><msub><mi>q</mi><mrow><mn>3</mn><mi>k</mi></mrow></msub></mtd></mtr><mtr><mtd><mn>0</mn><mo>,</mo><msub><mi>d</mi><mrow><mn>1</mn><mo>,</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>></mo><msub><mi>q</mi><mrow><mn>3</mn><mi>k</mi></mrow></msub></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths>通过对比自身剩余空间q<sub>k</sub>和待服务节点k+1的需求D<sub>k+1</sub>,得出k点的置信水平,来确定该车辆是否有能力继续服务;P<sub>k+1</sub>值越大该车能够完成下一任务的可能性越大;当P<sub>k+1</sub>≥P<sup>*</sup>时,该车继续完成下一运输任务,若P<sub>k+1</sub><P<sup>*</sup>,该车返回车场,新派车完成剩余运输任务,P<sup>*</sup>(P<sup>*</sup>∈[0,1])表示决策者主观偏好值;根据决策者主观偏好值P<sup>*</sup>动态调整T时刻人工鱼的步长和感知范围公式(6);<maths num="0007"><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><mi>Step</mi><mo>=</mo><mi>Step</mi><mo>&times;</mo><msup><mi>P</mi><mo>*</mo></msup><mo>+</mo><msub><mi>Step</mi><mi>min</mi></msub></mtd></mtr><mtr><mtd><mi>Visual</mi><mo>=</mo><mi>Visual</mi><mo>&times;</mo><msup><mi>P</mi><mo>*</mo></msup><mo>+</mo><msub><mi>Visual</mi><mi>min</mi></msub></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow></math>]]></maths>步骤7.局部最优逃逸策略;如果车辆的容量达到其限制水平,则回到服务中心恢复其正常容量后进行再服务;通过采用邻域搜索策略,以当前新的客户点(x<sub>add</sub>,y<sub>add</sub>)为圆心,以其到车场的距离为半径在圆形范围内寻找能对新客户点进行服务的在途车辆,即满足:<maths num="0008"><![CDATA[<math><mrow><msqrt><msup><mrow><mo>(</mo><msub><mi>x</mi><mi>k</mi></msub><mo>-</mo><msub><mi>x</mi><mi>add</mi></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>y</mi><mi>k</mi></msub><mo>-</mo><msub><mi>y</mi><mi>add</mi></msub><mo>)</mo></mrow><mn>2</mn></msup></msqrt><mo>&le;</mo><msqrt><msup><mrow><mo>(</mo><msub><mi>x</mi><mn>0</mn></msub><mo>-</mo><msub><mi>x</mi><mi>add</mi></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>y</mi><mn>0</mn></msub><mo>-</mo><msub><mi>y</mi><mi>add</mi></msub><mo>)</mo></mrow><mn>2</mn></msup></msqrt><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow></math>]]></maths>式中,(x<sub>k</sub>,y<sub>k</sub>)为干扰发生时刻车辆k所在的位置,(x<sub>0</sub>,y<sub>0</sub>)为车场的位置,从而得到能服务新客户点的在途车辆集合;当所有在途车辆均无法为新客户点服务时,则需从车场中增派车辆为其服务。
地址 310018 浙江省杭州市下沙高教园区2号大街
您可能感兴趣的专利