system: [SYSTEM]

user: 2. 顾客平均等待时间模型建立 2.1. 问题描述 以内蒙古大学周边(如下图1所示)某天的送餐行业顾客下单情况为对象研究其顾客下单规律，并且基于配送中心选址和配送人员调度来优化顾客平均等待时间。由于利用高德地图API获取的用户路径信息包含了大量的坐标数据，实际处理难度较大，因此我们可以将该地区实际地图抽象为地理简图，其中呼和浩特乌兰夫公园和青城公园是天然屏障。在这一问题中，本文本持着区内距离尽可能小，区间距离尽可能大的分类原则，使外卖各商家客户的配送都属于同城内小区域的配送。因此借助高德地图API接口获得内蒙古大学北校区周边地区的经纬度信息和各节点间距离，抽象出地理简图(如下图2所示)。 图1. 内蒙古大学周边地图 图2. 内蒙古大学周边地理简图 上图2中直线表示可行路径——公路，每个方格表示一个区域(边长都为1公里)，方格内数字为该区域编号，其中46、47区代表天然屏障，无法直接穿越，即公司总部，顾客位置，餐馆位置不能位于46区和47区。该地区仅有一个送餐公司，总部现设在25区，有送餐员6名，送餐员每次送餐结束后，先返回公司总部，(等待)领取下一个订单(先到先得，按下单时间顺序领取)，然后再前往订单中指定的餐馆取餐，最后到下单顾客的地址送餐。根据该地区某日顾客下单情况，总结出下表1。 Table 1 Customer order status tabl 序号 时间 顾客位置 餐馆位置 序号 时间 顾客位置 餐馆位置 1 0:00 16 2 2 0：12 11 9 3 0:18 10 10 4 0：18 31 6 … … … … … … … … 254 23:12 41 4 255 23：18 31 25 256 23:36 31 15 257 23：48 38 17 表1. 顾客下单情况示意表 2.2. 模型的准备工作 2.2.1. Dijkstra算法 Dijkstra算法是从一个顶点 u 0 到G的其余各顶点的最短路径算法，用来解决有权图中最短路径问题。特点是从起点开始，每次遍历到距始点最近且未访问过的顶点的邻点，直到扩展到终点 v 0 为止。具体步骤如下： Step1：令 I ( u 0 ) = 0 ，对 v ≠ u 0 ，令 I ( v ) = ∞ ， S 0 = { u 0 } ， i = 0 。 Step2：对每一个 v ∈ S i ¯ ( S i ¯ = V \ S i ) ，用 min u ∈ S i { I ( v ) ， I ( u ) + w ( u v ) } 代替 I ( v ) ，这里 w ( u v ) 表示顶点u和v之间边的权值。计算 min u ∈ S i { I ( v ) } ，把达到这个最小的一个顶点记为 u i + 1 ，令 S i + 1 = S i ∪ { u i + 1 } 。 Step3：若 i = | V | − 1 ，则停止；若 i < | V | − 1 ，则用 i + 1 代替i，转step2。 2.2.2. 最短送餐路径模型 最短送餐路径模型的建立以送餐员从公司总部到餐馆再从餐馆到顾客，最后从顾客返回公司总部经过距离最短为目标，就可以得到每次送餐的最短路径。为了计算方便将46区和47区重新编号，将城市地理简图抽象为无向赋权图 G ( V ， E ) (如下图3所示)，起到加速运算的作用。取两相邻路口之间的道路长度为其对应的权值，将其抽象成一个加权邻接矩阵 A 50 × 50 ，建立初始加权邻接矩阵 A 50 × 50 。 A 50 × 50 = [ s 1 ， 1 s 1 ， 2 ⋯ s 1 ， 49 s 1 ， 50 s 2 ， 1 s 2 ， 2 ⋯ s 2 ， 49 s 2 ， 50 ⋮ ⋮ ⋱ ⋮ ⋮ s 49 ， 1 s 49 ， 2 ⋯ s 49 ， 49 s 49 ， 50 s 50 ， 1 s 50 ， 2 ⋯ s 50 ， 49 s 50 ， 50 ] 其中 s i ， j = { 1 ，     当 v i 和 v j 之 间 有 公 路 连 通 ，     i ≠ j ∞ ，     当 v i 和 v j 不 相 邻 或 由 于 46 ， 47 区 阻 隔 时 ，     i ≠ j 0 ，     i = j 由于为 G ( V ， E ) 无向赋权图， A 50 × 50 为对称矩阵，有 s i ， j = s j ， i 。 图3. 无向赋权图 通过Dijkstra算法，以公司总部位置为起始点，可以得到一个起始点与各个点之间的最短距离矩阵 l e a s t p a t h 45 × 1 ，并将其总结表格(如下表2所示)，提取出餐馆与公司之间的最短距离，再将餐馆位置替换成起始点，同理可得餐馆到顾客之间的最短距离。最后在以顾客位置为起始点得到从顾客位置回到公司总部的最短距离。 Table 2 Shortest distanc 城区 距离 城区 距离 城区 距离 城区 距离 城区 距离 1 6 10 7 19 5 28 5 37 3 2 5 11 5 20 6 19 6 38 4 3 4 12 3 21 4 30 5 39 5 4 3 13 4 22 3 31 5 40 6 5 2 14 2 23 5 32 4 41 6 6 3 15 1 24 1 33 3 42 5 7 4 16 2 25 0 34 2 43 4 8 5 17 3 26 1 35 1 44 3 9 6 18 4 27 2 36 2 45 2 表2. 最短距离 2.3. 模型构建 为了保证模型准确、运算简便，做出以下几点假设： 1) 假设送餐员在公路上的平均行驶速度为30公里每小时。 2) 假设每块区域的所有顾客位置、餐馆位置和公司总部都位于该地区区域的左下角。 3) 假设商家和顾客服务时间之和服从正态分布 N ( μ ， σ 2 ) 。其平均值是3分钟，方差为1分钟，即 μ = 3 ， σ 2 = 1 。 4) 忽略送餐员拐弯的时间，仅考虑沿道路行驶的时间。 一次完整的送餐包括送餐员从公司总部出发前往餐馆、从餐馆前往顾客位置、将外卖移交到顾客手中及从顾客位置返回公司总部四部分组成。故可将顾客的等待时间划分为送餐员回程时间，从公司到餐馆时间，从餐馆到顾客位置所需时间及服务时间四部分，分别用 t h c ( j ) ， t c r ( j ) ， t r b ( j ) ， t d t ( j ) 表示上述四个时间(j指第j个顾客)，则顾客的等待时间模型为： t j = t h c ( j ) + t c r ( j ) + t r b ( j ) + t d t ( j ) ，上述所有的时间都应为最短时间，根据最短送餐路径模型可确定最短路径。 基于上述分析，可将参数设置如下：设T为下一次顾客下单的时间点， T ′ 为本次下单时间点， t d ( j ， j + 1 ) 为上一次顾客下单和本次顾客下单之间的时间间隔，则每一次顾客下单时间点可由递推公式表示为： T = T ′ + t d ( j ， j + 1 ) 。 t j 为顾客的等待时间， t h c ( j ) = T min ( j ) − T ( j ) 为回程等待时间，即最快回到公司总部的送餐人到达公司的时 刻 T min ( j ) 与顾客下单时刻 T ( j ) 之差；其中 T ( j ) 为顾客下单的时间点， T min ( j ) = min { T s 1 j ， T s 2 j ， T s 3 j ， T s 4 j ， T s 5 j ， T s 6 j } 为最先返回公司的送餐员到达公司的时间点。 若在下一次顾客下单时，有送餐员位于公司，则 t h c ( j ) = 0 ，所以有 t j = t c r ( j ) + t r b ( j ) + t d t ( j ) 。我们还有如下关 系： t c r ( j ) = L c r v ， t r b ( j ) = L r b v ，其中 L c r 为公司到餐馆的最短距离， L r b 为餐馆到顾客的最短距离，v代表送餐员行驶的平均速度。