来源:文章于2022年发表于期刊COMPUTERS & INDUSTRIAL ENGINEERING ,期刊基本信息及影响因子如下图所示:
目录
摘要
1.研究贡献
2.文献综述
3.问题描述
3.1 问题描述
3.2 问题假设/前提条件
3.3 问题定义
4.解决方法
4.1 强化学习基本框架
4.2 Q-learning
4.3 DDQN
4.4 Rule Based algorithm
5.仿真评估
6.实验结果
6.1 Q-learning单agent
6.2 DDQN单agent vs DDQN
6.3 平均收获报酬对比结果
6.4 平均交付订单数对比结果
6.5 可视化展示
7.不足与展望
使用马尔可夫决策过程表示现实世界的外卖送餐服务,将外卖配送问题表示成深度强化学习问腿。系统分配订单给外卖员,外卖员在指定餐厅提取订单配送至目的地,目标是在有限时间和有限外卖员的条件下,最大化总送餐收入。本文使用三种方法尝试解决这个问题:1.Q-learning_单agent 2.DDQN_单agent 3.DDQN_多agent,使用仿真实验将三种算法学习到的policy并与rule_based policy进行对比。结果发现,1.允许外卖员拒绝订单和空闲状态下移动能有效提高收益;2.三种方法中DDQN_单agent算法性能最好,RL_based的方法均优于rule_based Policy。
现有文献中解决食品配送问题常用方法是线性规划和近似动态规划(ADP),RL算法使用的很少,本文中同时使用强化学习和深度强化的方法并对比不同方法的性能;拒绝订单和与预位性(预测下一个订单生成位置,外卖员空闲时移动到该餐厅)在文献中考虑的极少,本文同时考虑四个属性,完善模型。
N个外卖员从餐馆取餐通过 m*m的网格地图送给客户,目标是找到一个使得外卖员总收益最大的的行动policy指导外卖员的决策行为。
订单是环境的一部分,根据最小化sum(外卖员与订单之间的距离)原则将订单分配给外卖员
订单分配给外卖员之后外卖员可以拒绝配送订单
被拒绝的订单返回订单列表重新分配给其他外卖员
如果订单在一定时间内被所有分配的外卖员拒绝,订单离开系统不再配送。
地图上每个网格成为订单起点(餐馆)和目的地(客户点)的概率不同,(1)餐馆大多集中分布在某个区域(2)订单数量多的目的地倾向于集中在某个区域(大学)
要使用RL的方法解决外卖员配送路径问题,就需要将该问题转化为RL问题,定义RL的各要素:
State
针对,每个三元组记录了第i个外卖员当前位置,外卖员i配送的订单的起点(餐馆),以及订单的目的地。、
状态空间的大小:
订单起点空间+2:订单起点位置除了属于m*m个网格点位置空间外,新增了两个状态:1)取餐/送餐的路上;2)空闲无订单状态
订单目的地空间+1:订单起点位置除了属于m*m个网格点位置空间外,新增了一个状态,外卖员处于空闲无订单配送状态无目的地。
此外,外卖订单包括五个属性:订单起点、订单目的地、订单持续时间、被拒次数、配送该订单外卖员ID
外卖员在接受订单之后每移动一步的reward是-1,空闲状态移动一步-0.1;每次成功提取和交付订单得到正的reward为m2;没有成功提取和交付订单(提错货、送错货)得到负的reward/penalty为-m2;原地空闲等待无reward;分配订单选择原地等待不移动得到负的reward/penalty为-m2;订单一经分配就拒绝-m/3; 在配送订单过程中拒绝该订单得到负的reward/penalty为-m2;
除此之外,如果订单在服务时间内未被有效分配给外卖员离开系统,额外增加惩罚。现实生活中,每个客户通常都有耐心等级,如果他/她没有在一定的时间内得到服务,他/她就会离开系统。
强化学习是agent在与环境的互动过程中为了达成一个目标而进行的学习过程。agent观察环境environment变化根据当前自己所处的state做出action每做出一个action,environment都会发生变化,agent会得到一个新的state,然后选择新的action不断执行下去。
Q-learning算法的详细介绍可见blog强化学习系列(二):Q learning算法简介及python实现Q learning求解TSP问题
Q-learning算法缺点:只适用于小规模问题,大规模问题Q表存在状态爆炸的灾难;
Trick:简化问题,同质化外卖员,Q-Learning只训练一个agent/外卖员的行动选择策略,应用到全部外卖员上;即Q-learning单agent。
为弥补Q-learning算法的缺点,用两个深度神经网络代替Q表,神经网络输入state值,输出对应动作action的Q值。
两个网络分为在线预测网络Eval Network得到Q的预测值和目标网络得到Q的真实值。
借鉴,算法流程大概总结如下:
使用随机梯度下降算法更新网络参数,可能会带来的问题是,当梯度太大的话,网络参数变动太大,网络很不稳定;因此,本文采取了梯度裁剪策略,将梯度向量归一化到0-1之间,使得DDQN模型更加稳定。
用于对比评价RL算法的性能。 外卖员根据最短路径的原则移动提取和配送货物,没有分配任务时候选择原地等待,不允许拒绝订单,为了算法对比时重点分析强调有无stay、reject动作的影响。
按照仿真流程图进行仿真实验:
•生成初始外卖员位置和订单位置(state)
•外卖员根据Policy选择action移动
•更新环境变化【订单list及所有订单的服务时间】
•计算reward
•该订单一旦交付,派发新的订单
•达到迭代次数后,收集数据(派送订单数、reward总和) 衡量算法性能好坏的标准
问题规模
不同问题规模(网格大小、外卖员数量、状态空间和动作空间大小)下进行实验
餐馆及订单目的地分布热力图
三种方法对比:
1.Q-learning :训练单agent的Policy,将应用到所有外卖员;
2.DDQN:训练单agent的Policy,应用到所有外卖员;
3.DDQN:直接训练多agent的Policy;
针对Q-learning单agent,随着状态空间/问题规模的增大,算法收敛速度会逐渐变慢。
单agent的reward值收敛速度更快
1)DDQN_单agent>QL>Rule based learning
2)DDQN_多agent在大规模问题上训练太耗时
几种方法平均交付订单数对比差别不大
场景一:外卖员空闲一段时间后接到订单
图a使用DDQN允许外卖员空闲时候移动,与使用规则的对比,可以看出,空闲时候允许外卖员移动的惩罚更小,得到的奖励越高,且迭代次数更少/时间更短到达目的地。
场景二:允许外卖员拒绝订单
图a的DDQN,外卖员拒绝距离自己很远的订单,等候新的更近的订单,与传统的不允许拒绝的rule相比,Reward值更大,迭代次数更少/时间更短到达目的地。
状态空间只考虑订单和外卖员位置信息,可以加入外卖员工作时间、订单准备时间等等属性改进模型
本文考虑的外卖员数量太少,每增加一个外卖员,状态空间呈指数式增长;可以对外卖员和订单的属性特征进行聚合降维,缩减状态空间