有时间窗的开放式车辆调度问题的粒子群优化方法

文档序号:6543908阅读:213来源:国知局
专利名称:有时间窗的开放式车辆调度问题的粒子群优化方法
技术领域
本发明涉及有时间窗的开放式车辆调度问题的粒子群优化方法。
背景技术
车辆调度是实施社会化物流的关键技术,优化车辆行驶路线,提升企业竞争力,降低企业成本,解决城市交通拥挤、能源短缺、大气污染等问题,实现交通在效率、资源、环境和价值观念各方面的内在统一,保证物流产业的可持续发展。但目前大多数企业所使用的车辆调度软件更多意义上是一个管理软件,缺少对资源的优化配置功能,还主要依靠具有丰富实践经验的管理人员和调度人员借助于会议、电话、报表等进行管理和调度的人工作业方式,显然不能满足快节奏的现代化生产和市场激烈竞争的需要。随着计算机及计算机网络引进企业,基于信息集成而发展起来的优化车辆调度正在兴起。
有时间窗的开放式车辆调度问题OVRPTW(Open Vehicle Routing Problemwith Time Windows)的定义为在物流服务网络中,已知客户和配送中心的位置,在满足车辆最大负载、客户需求(货物需求,交货时间需求)的前提下,设计车辆路径,配送客户,达到车辆最少,路程最短,时间最少等目标。车辆在访问完所有的客户后,不需要返回配送中心。
有时间窗的开放式车辆调度问题的数学模型如下所示假设每辆车依然回到虚拟的配送中心,客户与配送中心间的距离为0,及ci0=0(i=1,2…L)。此处我们给出开放式车辆路径问题的三下标数学模型假定配送中心最多可以用K(k=1,2…K)辆车对个L(i=1,2…L)客户进行运输配送,i=0表示仓库。每个车辆载重为bk(k=1,2,…K),每个客户的需求为di(i=1,2,…L),客户i到客户j的运输成本为cij(可以是距离,时间,费用等)。定义如下变量 minΣk=1KΣi=0LΣj=0Lcijxijk---(1)]]>Σi=1Ldiyik≤bk,∀k---(2)]]>Σk=1Kyik=1,∀i---(3)]]>Σi=1Lxijk=yjk,∀j,kk---(4)]]>Σj=1Lxijk=yik,∀i,k---(5)]]>Σi,j∈S×Sxijk≤|S|-1,S∈{1,2···L},∀k---(6)]]>tj≥ti+si+tij-T*(1-xijk) (7)tj=max{Ej,ti+si+tij} (8)tj<Lj(9)xijk=0或1 i,j,k (10)yik=0或1 i,k (11)约束(2)保证每辆车的能力约束。约束(3)保证每个客户都被服务。约束(4)(5)保证客户是仅被一辆车访问。约束(6)消除子回路。约束(7)-(9)保证了客户在时间窗内被服务,(10)(11)表示变量的取值范围。
有时间窗的开放式车辆调度问题在现实生活中有许多实例,如物流公司从节约成本考虑,很多情况下所用车辆并不是自有车辆,而是社会车辆,一方面可以节约物流成本,令一方面可以整合社会资源。这种情况下,车辆不需要返回配送中心。类似的情况还出现在公司、学校的班车服务中。在有时间窗的开放式车辆调度问题中,每一条线路都是哈密尔顿路径(Hamiltonian Path),而在车辆调度问题(VRP)中是哈密尔顿圈(Hamiltonian Cycle)。虽然求解VRP的算法很多,但不能直接求解OVRPTW。
目前求解有时间窗的开放式车辆路径问题的方法比较少,主要使用禁忌搜索算法和最邻近启发式算法等方法。禁忌搜索算法对初始解的依赖性较强,算法中的领域搜索算子设计复杂,算法虽然能得到比较好的解,单计算时间长。最邻近启发式算法实现简单,计算迅速,但所得结果与最优值有较大的差距。

发明内容为了克服已有的有时间窗的开放式车辆调度方法的算法复杂、计算速度与算法精度不协调的不足,本发明提供一种算法简单、同时具备较快的计算速度和较高的算法精度的有时间窗的开放式车辆调度问题的粒子群优化方法。
本发明解决其技术问题所采用的技术方案是一种有时间窗的开放式车辆调度问题的粒子群优化方法,所述的方法主要包括以下步骤(1)、从委托单中得到配送信息,所述的配送信息包括客户名称、客户需求的货物的总数量、总重量、总体积、卸货地址、要求的到货时间;(2)、从委运单得到的客户名称,从地址数据库中查询出客户的地址信息,包括客户的具体地址,客户间的距离;(3)、设定粒子群算法的参数,所述的参数包括种群规模、迭代次数,所述的种群规模表示初始配送方案的数量,迭代次数表示在众多的配送方案空间中的搜索次数;(4)、将上述的配送信息、客户的地址信息读入粒子群算法中;(5)、根据客户的数目,计算所需要的车辆数,对各个配送方案进行编码;
(6)、使用解码算法进行解码;(7)、使用改进的廉价插入启发式算法(Cheapest Insert Algorithm)优化车辆内客户的顺序;(7.1)、建立改进的廉价插入启发式算法(Cheapest Insert Algorithm)模型将客户u插入客户i和j之间的费用可以按照下面式子的定义计算c1(i,u,j)=diu+duj-dij(12)c2(i,u,j)=bju-bj(13)c3=Tu-T(14)c4(i,u,j)=α1c1(i,u,j)+α2c2(i,u,j)+α3(i,u,j) (15)上式中,dij(i,j ∈1,2…n)表示两个客户间的举例,bi(i∈1,2…n)表示在此客户的开始服务的时间,T表示线路总的等待时间;c1(i,u,j)表示插入u后,距离的增量;c2(i,u,j)表示插入u后,到达j客户的时间推迟量;c3表示插入u后,线路总的等待时间的增加量;c4(i,u,j)表示在客户i和j之间插入u的费用,是c1,c2,c3的加权和;(7.2)、如果所有的客户都已经分配给车辆,则算法停止;否则选择当前开始服务时间最晚的客户初始化一条线路。
(7.2)、对于当前未分配的每个客户,将其插入当前线路中每个可行位置,按照(4)式计算插入费用,选取所有值中最小的值,将此客户插入相应的位置;(7.3)、重复第二步过程,直到此线路满足车辆的约束或者没有客户可以插入,则转第一步;(8)、根据配送成本计算方案,计算访问所有客户的线路长度或者时间或访问所有客户的费用,粒子的适应度定义为成本的倒数;(9)、比较粒子的适应度,找出种群中适应度最高的粒子保存,同时每个粒子和自身以前计算的适应度比较,保存自身最好的适应度;(10)、对粒子所代表的配送方案进行调整,根据如下的公式(16)进行粒子状态的更新Vit+1=c1Vit+c2(Pi,t-Xit)+c3(Pg,t-Xit)Xit+1=Xit+Vit+1---(16)]]>上式中,Xi=(xi1,xi2,…xiD)表示第i个粒子的状态,每个粒子表示D维空间的一个解,Vi=(vi1,vi2,…viD)表示每个粒子的速度向量,且Vi满足Vi≤最大速度Vmax;Pi表示每个粒子经历过的最优状态,Pg表示群体经历过的最优状态,c1是惯性权重,c2,c3是加速度常数。粒子的状态在具体的应用中代表不同的含义,在本发明的应用中,粒子的状态表示车辆调度的配送方案,即客户由那辆车配送,和客户在配送中的顺序。粒子的速度表示配送方案间的差异,即同一客户所在车辆的不同,客户在配送中的顺序不同。
(11)、随机的选择一些粒子进行交叉操作,对各个粒子表示的配送方案进行调整;(12)、重复(6)~(11),对可能的配送方案进行搜索,达到预定的迭代次数后,输出粒子群算法寻找到的配送方案。
进一步,所述的(7)中,所有的客户都已经分配给车辆后,再使用重新插入算法(Re-Insert)优化车辆的使用数量,重新插入算法的步骤为第一步找出所有线路中客户最少的线路,将此线路删除;第二步对于每一个未分配车辆的客户,将其尝试插入以后的所有线路中的每个位置,如果能插入,则将其插入;第三步如果所有未分配的客户都已分配,则算结束;否则,使用改进的廉价插入启发式算法新生成一条线路。
再进一步,所述的(5)中,编码方式采用基于实数向量的编码方式对于有L个客户的配送方案,使用L维的实数向量X表示粒子的状态;对于向量的每一维,其整数部分表示所在的车辆,如整数部分相同的,表示在同一辆车中;小数部分表示在车辆中配送的次序,按照大小顺序;所述的(6)中,解码的过程为(6.1)对于粒子的状态的每一维,进行[X]操作;(6.2)根据[X]值进行分组,形成客户分组;(6.3)在分组内,对粒子进行{X}操作;(6.4)根据{X}的大小进行排列,形成客户的访问顺序。
本发明的工作原理是粒子群算法是由Kennedy和Eberhart等于1995年提出的一种演化计算技术。其核心思想是对生物社会性行为的模拟。其最初设想是模拟鸟群捕食的过程,在研究过程中,将其应用于各种问题的优化取得了良好效果。假设一群鸟在捕食,其中的一只发现了食物,则其他一些鸟会跟随这只鸟飞向食物处,而令一些会去寻找更好的食物源。在捕食的整个过程中,鸟会利用自身的经验和群体的信息来寻找食物。粒子群算法从鸟群的这种行为得到启示,并将其用于优化问题的求解。在粒子群算法中,每个问题的解都被看作搜索空间中的一只鸟,我们称为“粒子”。粒子的状态好坏,用由被优化问题决定的适应值表示。每个粒子有一个速度表示粒子飞行的距离和方向。粒子追随当前的最优粒子在解空间进行搜索。当求解一个问题的时候,将该问题采用一定的编码方法编码成粒子,然后按照粒子群算法的机理进行迭代运算。
求解有时间窗的开放式车辆调度问题的可行性分析有时间窗的开放式车辆调度问题是NP问题,采用传统的方法求解,存在求解问题规模小,解的质量不高等问题。粒子群算法是一种新型的仿生智能优化算法。具有求解速度快,解的质量高等有点。粒子群在神经网络优化,电气参数设计优化等领域都取得了成功应用。在求解旅行商问题,任务分配问题等NP方面也取得了良好效果。
有时间窗的开放式车辆调度问题是非常复杂的问题。通常是多约束、多目标、随机不确定优化问题。求解过程的计算量随问题的规模呈指数增长,已被证明是NP完全问题。很多研究表明,寻找车辆调度问题的最优解是非常困难的,最有工程意义的求解算法是放弃寻找最优解的目标,转而试图在合理、有限的时间内寻找到一个近似的、有用的解。
本发明提出一种基于实数向量的编码方式,此方法区别于现有的编码方法的关键在于在不增加维数的前提下,将车辆和车辆线路中的客户排序在编码表示出来。对于有L个客户的OVRPTW问题,使用L维的实数向量表示粒子的状态。对于向量的每一维,其整数部分表示所在的车辆,整数部分相同的,表示在同一辆车中。小数部分表示在车辆中配送的次序。
本发明的有益效果主要表现在1、算法简单;2、同时具备较快的计算速度和较高的算法精度;3、在合理、有限的时间内寻找到一个有用的解。


图1是有时间窗的开放式车辆调度的粒子群优化方法的流程图。
图2是有时间窗的开放式车辆调度的系统结构图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1,一种有时间窗的开放式车辆调度问题的粒子群优化方法,包括以下步骤第一步从委运单得到配送信息。这些信息包括客户名称,客户需求货物的总数量,总重量,总体积,卸货地址,要求的到货时间,估计需要的卸货时间。
第二步根据从委运单得到的客户名称,从数据库中查询出客户的地址信息,包括客户的具体地址,客户间的距离(或者运行时间)。
第三步算法参数,粒子群算法的参数包括种群规模,此处代表有多少个初始配送方案。迭代次数,表示在众多的配送方案空间中,不停的搜索,搜索的次数,根据客户的数目,客户越多,算法迭代的次数越多,种群规模越大。
第四步将上述所述的数据信息读入算法中。
第五步根据客户的数目,预估计的所需要的车辆数,按照本文设计的编码方式进行编码。所谓编码,及将一个配送方案用粒子算法所能理解的方式表达出来。
基于实数向量的编码方式,此方法区别于上述的方法的关键在于在不增加维数的前提下,将车辆和车辆线路中的客户排序在编码表示出来。对于有L个客户的OVRPTW问题,使用L维的实数向量表示粒子的状态。对于向量的每一维,其整数部分表示所在的车辆,整数部分相同的,表示在同一辆车中。小数部分表示在车辆中配送的次序。
定义[X]表示对x取整数部分,{X}表示对X取小数部分,每个粒子整数部分相同的表示相应的客户在一辆车上服务,小数部分的排列表示服务的顺序。
解码的过程(1)对于粒子的状态的每一维,进行[X]操作。
(2)根据[X]值进行分组,形成客户分组。
(3)在分组内,对粒子进行{X}操作。
(4)根据{X}的大小进行排列,形成客户的访问顺序。
假设7个客户的OVRPTW问题,需要的车辆数为3,对于这个问题的,将配送方案采用此种编码方式编码,得到如下结果客户编号1 2 3 4 5 6 7X 4.11.86 1.53 1.12 1.24 3.29 3.05这组编码对应的解的路径是第一条线路0-1第二条线路0-4-5-3-2第三条线路0-7-6
这种表示方法,维数和客户数目相当,进行粒子状态更新操作简单,能发挥粒子群算法的固有优点。
第六步根据上述解码方法将粒子的状态解码为客户的分组及排列,及车辆调度的方案。
第七步使用改进的廉价插入启发式算法和重新插入算法等方法调整线路间和线路内的次序,及对生成的配送方案进行再优化(7.1)、建立改进的廉价插入启发式算法(Cheapest Insert Algorithm)模型,将客户u插入客户i和j之间的费用可以按照下面式子的定义计算c1(i,u,j)=diu+duj-dij(12)c2(i,u,j)=bju-bj(13)c3=Tu-T(14)c4(i,u,j)=α1c1(i,u,j)+α2c2(i,u,j)+α3(i,u,j) (15)上式中,dij(i,j∈1,2…n)表示两个客户间的举例,bi(i∈1,2…n)表示在此客户的开始服务的时间,T表示线路总的等待时间;c1(i,u,j)表示插入u后,距离的增量;c2(i,u,j)表示插入u后,到达j客户的时间推迟量;c3表示插入u后,线路总的等待时间的增加量;c4(i,u,j)表示在客户i和j之间插入u的费用,是c1,c2,c3的加权和。
(7.2)、如果所有的客户都已经分配给车辆,则算法停止;否则选择当前开始服务时间最晚的客户初始化一条线路。
(7.2)、对于当前未分配的每个客户,将其插入当前线路中每个可行位置,按照(4)式计算插入费用,选取所有值中最小的值,将此客户插入相应的位置;(7.3)、重复第二步过程,直到此线路满足车辆的约束或者没有客户可以插入,则转第一步;
对于客户少的线路,所有的客户都已经分配给车辆后,再使用重新插入算法(Re-Insert)优化车辆的使用数量,重新插入算法的步骤为(1)、找出所有线路中客户最少的线路,将此线路删除;(2)、对于每一个未分配车辆的客户,将其尝试插入以后的所有线路中的每个位置,如果能插入,则将其插入;(3)、如果所有未分配的客户都已分配,则算结束;否则,使用改进的廉价插入启发式算法新生成一条线路。
第八步然后根据配送成本计算方案,及可以是计算访问所有客户的线路长度或者时间,也可以是访问所有客户的费用等。粒子的适应度定义为成本的倒数。
第九步比较粒子的适应度,找出种群中适应度最高的粒子保存,同时每个粒子和自身以前计算的适应度比较,保存自身最好的适应度。此操作的目的是保存当前算法搜索到的最优配送方案及每个粒子搜索到的最优配送方案第十步根据上文提到的公式(16)进行粒子状态的更新,此更新的过程,就是对粒子所代表的配送方案的调整过程。及让所有粒子所代表的配送方案都向目前已知的最优的配送方案靠拢。
第十一步随机的选择一些粒子进行交叉操作,此操作表示,对各个粒子表示的配送方案进行调整。由此可以产生更优秀的配送方案。
第十二步重复第六步到十一步的过程,及对可能的配送方案进行搜索,达到预定的迭代次数,则从算法退出。
第十三步输出粒子群算法寻找到的配送方案,以承运单的形式显示。
参照图2,应用本方法实现的车辆智能调度系统,主要包括基础信息子系统、智能算法子系统。
所述的基础子信息系统包括(1)、客户的坐标信息此功能可以让用户添加、修改、查询客户的坐标,这些操作都是基于电子地图,客户可以通过鼠标点出客户的位置,坐标数值可以自动修改,显示。
(2)、客户间的距离(时间)此功能提供客户间距离(时间)的查询、添加、修改。这些操作都是基于电子地图的,方便用户查看。
(3)、客户配送的难易程度此功能提供客户配送难易程度的查询、添加、修改。难易程度用通俗的语言“难”、“易”等词语表示,方便用户使用。
(4)、算法的参数信息此功能提供各种算法参数的显示,修改。
所述的智能算法子系统包括(1)、有时间窗的开放式车辆调度优化的目标为此次派车任务需要得车辆最少,运行得线路最短(也可以是成本最少,油耗最少等目标,根据基础信息中提供的信息的不同);约束条件中强调客户需求的时间,配送完成后车辆不返回车场。该调度具有以下功能(1.1)、智能算法调度采用本发明的车辆调度方案进行有时间窗的开放式车辆调度,显示配送方案,为下一步生成委运单准备。调度的过程如图1所示,方法的描述略。
(1.2)、生成承运单对满意的调度结果生成承运单。承运单编号根据日期自动产生,承运单的信息可以查看,修改,删除。
(1.3)、图形化显示采用图形化方法显示调度的结果。在地图上会用不同颜色的线条表示不同的车配送的线路。地图上会表示出配送客户的位置和名称。模拟小车会按照算法安排的线路访问客户。
(1.4)、收敛图画出算法此次计算的收敛图,给用户提供判断此次运算结果是否优秀的一个准则。
(2)、车辆最少模型调度此模型是针对车辆返回配送中心的情况下,优化的目标为此次派车任务需要得车辆最少,运行得线路最短(也可以是成本最少,油耗最少等目标,根据基础信息中提供的信息的不同)。功能与上述(1)的有时间窗的开放式车辆调度模型相同。
(3)、准时到达调度此模型是车辆返回配送中的情况下,优化的目标是首先是满足客户时间上的要求,及保证在客户要求达到的时间内进行配送。其次是希望所用的车辆数最少,车辆行驶的距离最短(也可以是成本最少,油耗最少等目标,根据基础信息中提供的信息的不同)。功能与上述(1)有时间窗的开放式车辆调度模型相同。
权利要求
1.一种有时间窗的开放式车辆调度问题的粒子群优化方法,所述的方法主要包括以下步骤(1)、从委托单中得到配送信息,所述的配送信息包括客户名称、客户需求的货物的总数量、总重量、总体积、卸货地址、要求的到货时间;(2)、从委运单得到的客户名称,从地址数据库中查询出客户的地址信息,包括客户的具体地址,客户间的距离;(3)、设定粒子群算法的参数,所述的参数包括种群规模、迭代次数,所述的种群规模表示初始配送方案的数量,迭代次数表示在众多的配送方案空间中的搜索次数;(4)、将上述的配送信息、客户的地址信息读入粒子群算法中;(5)、根据客户的数目,计算所需要的车辆数,对各个配送方案进行编码;(6)、使用解码算法进行解码;(7)、使用改进的廉价插入启发式算法(Cheapest Insert Algorithm)优化车辆内客户的顺序;(7.1)、建立改进的廉价插入启发式算法(Cheapest Insert Algorithm)模型,将客户u插入客户i和j之间的费用可以按照下面式子的定义计算c1(i,u,j)=diu+duj-dij(12)c2(i,u,j)=bju-bj(13)c3=Tu-T (14)c4(i,u,j)=α1c1(i,u,j)+α2c2(i,u,j)+α3(i,u,j) (15)上式中,dij(i,j∈1,2…n)表示两个客户间的举例,bi(i∈1,2…n)表示在此客户的开始服务的时间,T表示线路总的等待时间;c1(i,u,j)表示插入u后,距离的增量;c2(i,u,j)表示插入u后,到达j客户的时间推迟量;c3表示插入u后,线路总的等待时间的增加量;c4(i,u,j)表示在客户i和j之间插入u的费用,是c1,c2,c3的加权和;(7.2)、如果所有的客户都已经分配给车辆,则算法停止;否则选择当前开始服务时间最晚的客户初始化一条线路。(7.2)、对于当前未分配的每个客户,将其插入当前线路中每个可行位置,按照(4)式计算插入费用,选取所有值中最小的值,将此客户插入相应的位置;(7.3)、重复第二步过程,直到此线路满足车辆的约束或者没有客户可以插入,则转第一步;(8)、根据配送成本计算方案,计算访问所有客户的线路长度或者时间或访问所有客户的费用,粒子的适应度定义为成本的倒数;(9)、比较粒子的适应度,找出种群中适应度最高的粒子保存,同时每个粒子和自身以前计算的适应度比较,保存自身最好的适应度;(10)、对粒子所代表的配送方案进行调整,根据如下的公式(16)进行粒子状态的更新Vii+1=c1Vit+c2(Pi,t-Xit)+c3(Pg,t-Xit)Xit+1=Xit+Vit+1---(16)]]>上式中,Xi=(xi1,xi2,…xiD)表示第i个粒子的状态,每个粒子表示D维空间的一个解,Vi=(vi1,vi2,…viD)表示每个粒子的速度向量,且Vi满足Vi≤最大速度Vmax;Pi表示每个粒子经历过的最优状态,Pg表示群体经历过的最优状态,c1是惯性权重,c2,c3是加速度常数;(11)、随机的选择一些粒子进行交叉操作,对各个粒子表示的配送方案进行调整;(12)、重复(6)~(11),对可能的配送方案进行搜索,达到预定的迭代次数后,输出粒子群算法寻找到的配送方案。
2.如权利要求1所述的一种有时间窗的开放式车辆调度问题的粒子群优化方法,其特征在于所述的(7)中,所有的客户都已经分配给车辆后,再使用重新插入算法(Re-Insert)优化车辆的使用数量,重新插入算法的步骤为第一步找出所有线路中客户最少的线路,将此线路删除;第二步对于每一个未分配车辆的客户,将其尝试插入以后的所有线路中的每个位置,如果能插入,则将其插入;第三步如果所有未分配的客户都已分配,则算结束;否则,使用改进的廉价插入启发式算法新生成一条线路。
3.如权利要求1或2所述的一种有时间窗的开放式车辆调度问题的粒子群优化方法,其特征在于所述的(5)中,编码方式采用基于实数向量的编码方式对于有L个客户的配送方案,使用L维的实数向量X表示粒子的状态;对于向量的每一维,其整数部分表示所在的车辆,如整数部分相同的,表示在同一辆车中;小数部分表示在车辆中配送的次序,按照大小顺序;所述的(6)中,解码的过程为(6.1)对于粒子的状态的每一维,进行[X]操作;(6.2)根据[X]值进行分组,形成客户分组;(6.3)在分组内,对粒子进行{X}操作;(6.4)根据{X}的大小进行排列,形成客户的访问顺序。
全文摘要
一种有时间窗的开放式车辆调度问题的粒子群优化方法,有时间窗的开放式车辆调度问题是非常复杂的问题,通常是多约束、多目标、随机不确定优化问题。求解过程的计算量随问题的规模呈指数增长,已被证明是NP完全问题。本发明采用粒子群算法,并使用改进的廉价插入启发式算法(Cheapest Insert Algorithm)优化车辆内客户的顺序。本发明提供一种算法简单、同时具备较快的计算速度和较高的算法精度的有时间窗的开放式车辆调度问题的粒子群优化方法。
文档编号G06Q10/00GK1790398SQ200510062308
公开日2006年6月21日 申请日期2005年12月28日 优先权日2005年12月28日
发明者赵燕伟, 吴斌, 王万良, 董红召, 徐新黎, 杨旭华 申请人:浙江工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1