本发明涉及智慧物流和智能计算技术领域,具体涉及一种基于蚁群优化算法的智慧城市动态冷链物流调度方法。
背景技术:
作为物流产业的一个重要分支,冷链物流在现代生活和智慧城市的建设中发挥着重要的作用。冷链物流的主要运输对象是对运输环境的温湿度有较高要求的物品,包括但不限于生鲜,电子元件和医药制品等。由于冷藏技术限制,货物的质量在运输过程中随着时间逐步下降。货物经历的运输时长越长,质量损失就越严重。货物的质量是影响客户满意度的一个重要因素,因而也对物流公司的竞争力有着极大的影响。因此,与普通物流调度相比,冷链物流调度除了要保证货物及时送达,还应当尽量减少运输造成的质量损失。增加了质量损失因素的物流调度模型作为新的物流调度模型,也带来了新的挑战。
有关数据显示,冷链物流运输过程中由于质量损失造成的浪费相当严重。为了缓解这种现象,除了改进冷藏技术,还可以通过设计一种高效的调度方法来提高运输效率。另外,目前关于冷链物流调度的工作大多数都是基于静态环境的调度。这里基于静态环境的冷链物流调度指的是在调度开始时,所有订单信息都是已知的,且所有冷藏车都位于初始位置,处于初始状态。相比之下,基于动态环境的冷链物流调度则代表在调度开始时,仅有部分订单信息已知,且冷藏车所在位置及状态(比如:剩余容量)不一。同时,考虑到动态冷链物流调度的时间跨度较大,为了避免过度等待导致订单无法及时配送,需要每隔一段时间对该时段内接收的订单进行调度。这种做法相当于将整个动态问题划分为多个子问题,再使用调度算法依次优化每个子问题。事实上,基于动态环境的冷链物流调度更贴近实际的调度场景。同时,基于动态环境的冷链物流调度也更具有挑战性。
作为一种重要且有效的群体智能优化算法,蚁群优化算法主要通过模拟自然界中蚁群的觅食行为来构造解,具有良好的全局搜索能力。另外,由于蚁群优化算法通过蚂蚁的移动逐步完成解的构造,该算法在解决离散组合优化问题时具有天然的优势,因而被广泛地应用于解决复杂的离散组合优化问题。同时,区别于其它群体智能优化算法,蚁群优化算法的启发式信息引入了问题相关的知识。通过设计合适的启发式信息,蚁群优化算法可以快速地找到高质量的解。动态冷链物流调度的任务主要是将订单配送任务分配给冷藏车,同时为冷藏车规划配送路线,本质上仍然属于离散组合优化问题,因此蚁群优化算法也是适用于该问题的。此外,考虑到动态冷链物流调度的复杂性,为了达到更好的调度效果,可以在蚁群优化算法的基础上设计一种新的调度优化方法。
技术实现要素:
本发明的目的在于拓展冷链物流调度在动态场景中的研究,即面向动态冷链物流调度场景建立相应的调度模型,同时提供一种基于蚁群优化算法的智慧城市动态冷链物流调度方法。考虑到动态场景中存在订单信息变化和冷藏车状态变化(比如,实时位置,载荷变化)等特点,该方法将动态冷链物流调度问题的每个子问题的优化过程划分为订单分配和路径规划两个阶段,接着在满足模型约束条件的前提下,设计合理的订单分配方案,再进一步规划配送路径,从而尽可能减少配送成本。为了进一步提升调度性能,该方法还集成了双信息素策略、预剪枝策略以及记忆学习策略。
本发明的目的可以通过实施以下技术方案达到:
一种基于蚁群优化算法的智慧城市动态冷链物流调度方法,所述的调度方法包括下列步骤:
s1、根据子问题i的划分找出第i次调度中参与分配的订单集合以及参与路径规划的订单集合,i=1,2,3,…;
s2、实施双信息素策略,定义两种信息素并对其进行初始化,其中一种信息素vτ设置于参与第i次分配的订单与所有冷藏车之间,另一种信息素oτ设置于所有参与第i次路径规划的订单之间;
s3、实施预剪枝策略,在实行订单分配之前根据启发式信息weight(o,v)为每个订单划分合适的冷藏车选择范围vset(o),其中,weight(o,v)的计算方式为
其中,depart_p(v,i)是冷藏车所在地,depot(o)是订单o货物所在的冷库,dis(depart_p(v,i),depot(o))是depart_p(v,i)与depot(o)的距离,load_order(v,i)是第i次调度开始前冷藏车v已装载且待配送的订单集合,|·|表示集合·的元素个数,dis(midpos(v),dest(o))是midpos(v)与dest(o)的距离,midpos(v)是load_order(v,i)中订单目的地的中心,dest(o)是订单o目的地;
s4、实施记忆学习策略,使用第i-1次调度的优选调度结果s更新信息素,更新方式为
vτ(o,v)=vτ(o,v)+rand(0,0.1)×(fs)-1(2)
oτ(o,w)=oτ(o,w)+rand(0,0.1)×(fs)-1(3)
其中,vτ(o,v)代表订单o和冷藏车v之间的信息素,而oτ(o,w)代表订单o和订单w之间的信息素,rand(0,0.1)是0至0.1之间的随机小数,fs是s的适应值;
s5、使用蚁群优化算法构建解,蚁群优化算法首先将第i次调度中参与分配的订单按照轮盘赌选择法依次分配给冷藏车,接着,每只蚂蚁按照统一的订单分配方案,依次为每辆冷藏车构建配送路径,即确定订单配送顺序。
进一步地,所述的步骤s3中,在分配订单o时,首先对所有冷藏车计算weight(o,v),只有排名小于等于
进一步地,所述的步骤s4中,如果i=1,即本次调度是第一次调度,不存在历史经验,故不执行记忆学习策略;如果i>1,则将memory(i-1)中的解按照适应值从小到大进行排序,选择排名小于等于
进一步地,所述的步骤s5中,在订单分配阶段,订单o被分配给冷藏车v的概率p1(o,v)为
其中vset(o)是订单o的冷藏车选择范围,weight(o,v)是订单o与冷藏车v之间的启发式信息,指数系数α为2,另外,当一只蚂蚁完成路径构建后,对信息素oτ进行局部更新,当所有蚂蚁完成路径构建后,找出全局最优解,对信息素vτ和oτ进行全局更新。
本发明相对于现有技术具有如下的优点及有益效果:
1、本发明是面向动态场景下的冷链物流调度的调度方法。该方法优化的动态场景除了考虑订单信息变化和冷藏车位置及状态变化,还考虑了取货情况。如果即将配送的订单货物未被对应的冷藏车装载,该冷藏车需要先前往相应的冷库取货,之后再进行配送。因此,该方法优化的动态场景更接近真实调度场景。
2、本发明将子问题的优化划分为订单分配和路径规划两个阶段并设置了双信息素策略,通过让多只蚂蚁同时按照一个分配方案构造配送路径,既可以对该分配方案进行合理的评估,也可以防止因为不合理的评估导致信息素被错误更新。
3、本发明提出的预剪枝策略在为一个订单划分冷藏车选择范围时除了考虑相应的取货距离,还考虑了冷藏车已有的配送任务,有利于引导本发明提出的方法将配送范围与订单目的地相近的冷藏车划分给该订单,从而提升调度方法的性能。
4、本发明提出的记忆学习策略将历史调度的经验转化到本次调度的信息素中,提高了调度方法的收敛速度。
附图说明
图1是本发明实施例中动态冷链物流调度示意图;
图2是本发明实施例中基于蚁群优化算法的智慧城市动态冷链物流调度方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
本实施例结合图1和图2详细介绍了一种基于蚁群优化算法的智慧城市动态冷链物流调度方法。首先,在动态冷链物流调度场景中,订单服务平台不断地接收订单并将订单提交给调度平台,每个订单包括订单目的地、货物需求量以及服务时间窗等信息。调度平台在每隔一段时间触发一次调度,对当前时刻所有收集到的但未被配送的订单进行调度,即第i次调度对应第i个子问题。调度平台的任务是将所有未被冷藏车装载的订单分配给合适的冷藏车,并依次为每辆冷藏车规划配送路线。规划完成后,调度平台将配送任务和配送路线发布给相应的冷藏车。冷藏车接收到配送任务后,会根据配送路线依次为每位客户配送货物。注意,在规划配送路线时,如果客户所需的货物未被装载在冷藏车中,则需要让冷藏车先去相应的冷库取出货物,然后再为该客户进行配送。图1展示了一个动态冷链物流调度的示意图。
针对第i个子问题,本发明的调度方法的执行步骤如下:
s1、在第i次调度中,待配送的订单可以有两种状态,一种是未被冷藏车装载,一种是已被冷藏车装载。未被装载的订单需要先分配给冷藏车,然后再与已被装载的订单一起参与路径规划,而已被装载的订单可直接参与路径规划。因此,首先需要找出第i次调度中参与分配的订单集合as以及参与路径规划的订单集合rs。例如,在图1的子问题2中,as={3,6},rs={3,5,6},即需要参与分配的订单有订单3和订单6,需要参与路径规划的有订单3,订单5和订单6。
s2、蚁群在搜索过程中得到的经验可以转化为信息素,进而引导蚁群找到更优的解,因此,针对订单分配阶段和路径规划阶段,本方法设置了双信息素策略。定义vτ为一个m×m的矩阵,oτ则是一个n×n的矩阵,其中m是as中元素的个数,而n代表rs中元素的个数。对于图1的子问题2而言,vτ是一个2×2的矩阵,oτ则是一个3×3的矩阵。在初始化vτ和oτ之前需要构造初始解。在构造初始解的过程中,首先将待分配的订单随机分配给冷藏车,然后针对每辆冷藏车以订单接收时间为依据按照先到先服务的原则确定订单的配送顺序。注意,在构建配送路径的过程中,如果冷藏车装载当前选择的订单会发生超载,则暂时跳过当前订单,选择下一个符合容量限制的订单进行配送。构造完成后需要对初始解进行评估,并使用该解的适应值初始化信息素vτ和oτ。
s3、实施预剪枝策略可以为as中的订单划分合适的冷藏车子集,缩小搜索空间,避免在分配订单时考虑所有的冷藏车,从而提升调度性能。在动态冷链物流调度中,如果冷藏车v距离待分配订单,记为订单o,所在仓库depot(o)过远或者冷藏车已有配送任务的配送范围与订单o目的地dest(o)距离过大,则在分配订单o时可以忽略冷藏车v。这里使用冷藏车v待配送的订单的目的地的中点midpos(v)代表v的配送范围。在实施预剪枝策略时,首先需要根据公式(5)得到订单o与冷藏车v之间的启发式信息weight(o,v),
接着根据weight(o,v)对冷藏车进行升序排序。选择排名小于等于
s4、实施记忆学习策略。记忆学习策略可以充分利用以往调度中存在的历史经验,加快收敛速度。比如,如果as中存在订单o,且订单o在第i-1次调度中被某个适应值较好的解分配给冷藏车v,则说明订单o适宜分配给冷藏车v,因此可以适当增加订单o与冷藏车v之间的信息素oτ(o,v),从而引导调度方法将订单o分配给冷藏车v。vτ(o,v)的增加方式为
vτ(o,v)=vτ(o,v)+rand(0,0.1)×(fs)-1(6)
其中fs是解s的适应值,而s则是memory(i-1)中适应值排名小于等于
同样地,在第i-1次调度中,如果第i次调度中参与路径规划的订单o和w被一辆冷藏车连续访问,则可认为冷藏车配送完订单o后适宜配送订单w,因此可适当增加订单o与订单w之间的信息素vτ(o,w)。oτ(o,v)的增加方式为
oτ(o,w)=oτ(o,w)+rand(0,0.1)×(fs)-1(7)
值得注意的是,如果i=1,即本次调度是第一次调度,不存在历史经验,故不执行记忆学习策略。
s5、使用蚁群优化算法构建解。
首先将本次调度划分为两个阶段,第一个阶段是订单分配,第二个阶段是路径规划。在处理第一个阶段时,蚁群优化算法首先根据概率p1(o,v)以轮盘赌的方式为as中的订单选择一辆冷藏车,即将订单分配给冷藏车。p1(o,v)计算方式为
其中α为2。
通过让多只蚂蚁同时按照一个分配方案构造配送路径,既可以对该分配方案进行合理的评估,也可以避免不合理的评估导致信息素被错误更新。因此,在第二个阶段中,根据第一个阶段得到的分配方案,每辆冷藏车待配送的订单都是确定的,蚁群中的蚂蚁根据每辆冷藏车的配送任务为冷藏车规划配送路径。蚂蚁每移动一步都会根据状态转移规则为冷藏车确定下一个配送的订单,即确定下一个配送的订单目的地。注意,如果下一个订单对应的货物未被装载,则冷藏车的下一个目的地被修改为该订单货物所在的冷库,然后才是该订单的目的地。重复移动直至所有的订单的配送顺序被规划完毕。
当一只蚂蚁完成路径规划后,需要对oτ进行局部更新。注意,由于局部更新的目的在于引导不同蚂蚁探索不同的解,而这里蚁群中的蚂蚁在同一次迭代中共享同一个分配方案,所以不需要对vτ进行局部更新。当所有蚂蚁完成路径规划后,为了提高收敛速度,需要找出历史最优解,并根据历史最优解对oτ和vτ进行全局更新。重复执行步骤s5直到满足终止条件。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。