【学界】初涉科研的一些体会 - 第四章:马氏决策过程&机会约束模型&多人随机路径规划问题

【学界】初涉科研的一些体会 - 第四章:马氏决策过程&机会约束模型&多人随机路径规划问题

作者: @小杨 广东工业大学,研二学生 ,研究方向:工业工程
欢迎原链接转发,转载请前往@留德华叫兽的主页获取信息,盗版必究。
敬请关注和扩散本专栏及同名公众号,会邀请全球知名学者陆续发布运筹学、人工智能中优化理论等相关干货、知乎Live及行业动态:
『运筹OR帷幄』大数据人工智能时代的运筹学

本文已经发布于『运筹OR帷幄』公众号:【学界】初涉科研的一些体会 - 第四章:马氏决策过程&机会约束模型&多人随机路径规划问题



作者研一时发了一篇《系统工程理论与实践》的文章,上个月刚完成一篇SCI,已投稿IJPE(International Journal of Production Economics)。这篇文章是个人的一些体会,也是对上一阶段工作的总结。


[ 社区居家养老调度与路径规划问题 ]
[ Community Home Health Care Scheduling and Routing Problem ]

------本文目录------
1 科技论文选题

2 文献综述方法

3 问题分析与模型假设

4 MDPs-CCP 模型

5 QL-BWACO 算法

6 数据分析

7 摘要,前言与结论:表达能力

这篇文章详述模型。


------4 模型------

在文章中,我将问题抽象为一个层级模型(hierarchical model),外层是马氏决策过程(Markov Decision Processes),内层是机会约束规划(Chance Constrained Programming)。



4.1 Overall illustration



分析一下选择这两个模型的原因。首先研究问题是传统路径规划问题的变种,也就是从Traveling Salesman Problem 或 Vehicle Routing Problem演变而来的。对于TSP和VRP的基本特征这里不赘述,零认知的朋友请百度。


以下给出所有问题假设:

1) Each workers must start from, and end at the home health care center, i.e., all of the routes must start and end at the same node. It is commonly called single-depot.
(所有护工起始点均为同一地点)

2) Each elders may require more than one services per day, namely multi-appointment, with respective time windows, e.g., providing breakfast and lunch could be required by the same elder at different time period in a day.
(老人每天可接受多于一次服务)

ž3) Each services has an appointed time period, namely mixed time window, which forbids workers to begin serving after the latest time, and forces workers to wait for the time window to open when arrival is before the earliest time. The waiting time has to follow the chance constraint defined in subsection 3.3.
(时间窗,提前到达产生等待,不允许在时间窗后到达)

4) Each workers is expected to finish their route within a maximal time bound (a maximal workload). This assumption is realized by another chance constraint defined in subsection 3.3.
(每天有最大工时限制)

5) Each workers moves among elders by a constant speed no matter on paths, stairs or in elevators, so that the traveling cost becomes a value only related to the distance. Since elders are intensively located, in the experiment section one will see that shorter distances will generate more waiting time.
(假设速度恒定)

6) Each worker masters a set of skill qualifications, and each services has a set of needed qualifications. An elder has a set of needed services. It is assumed that, only when an elder's qualifications set is a sub-set of a worker's qualifications set, can the worker serve the elder (hierarchical skill-demand-matching).
(高级护工可向下服务,低级护工不可向上服务)

7) Once a worker is assigned to an elder who requires more than one service, the worker is expected to execute the rest of the services of the elder, unless the worker is not qualified enough. This assumption takes into account the nurse-elder preference, and tends to keep the preference-match levels as satisfied as possible.
(偏好匹配假设)

8) Service time is defined as normally distributed, and two kinds of match qualities are related to the mean value of it. As mentioned in section 2, the match qualities are categorized into two levels. The first one, skills-match-quality, is negatively correlated to the mean value, i.e., the better the skills-match-quality is, the lesser expected time the service needs. The second level, preferences-match-quality, is negatively correlated to the variance, i.e., the better the preferences-match-quality is, the smaller the fluctuation that the service time has. Thus, mean values and variances of service time are functions of the match qualities.
(随机服务时长假设)

以上内容直接引用自我的在审文章,再次复述一下整个问题。


首先,给定一组护工(Travelers / Vehicles),他们的技能等级不一样,高等级护工可以服务低等需求,低等级护工只能服务低等需求,技能-需求匹配原则是层级的(hierarchical)。给定一组老人(nodes),和一个起点(depot 同时也是终点),每个老人每天要求护工上门的次数有多有少(需求次数),每次上门做的事情不一样(需求等级),每次上门的时间不一样(预约时段)。 护工必须在预约时段结束前到达目的地,如果护工在预约时段开始前到达,则会产生等待时间。护工每天工作不得超过某一限制时长。在以上环境下,如果假设护工行动速度恒定,服务时长服从不同均值的正态分布,如何将需求分配给各个护工能最小化等待时长并最大化需求满足量

这个问题实质上是Stochastic Vehicle Routing Problem with Time Window的一个变种,感兴趣可以看综述。

SVRP综述:
Jorge O., Halvard A., David L. W. (2016). The stochastic vehicle routing problem, a literature review, part i: models. EURO Journal on Transportation and Logistics, 1-29.
Li, X., Tian, P., Leung, S. C. H. (2010). Vehicle routing problems with time windows and stochastic travel and service times: models and algorithm. International Journal of Production Economics, 125(1), 137-145.

HHCSRP综述:
Fikar, C., Hirsch, P. (2017). Home health care routing and scheduling: a review. Computers & Operations Research, 77, 86-95.


明显是个复杂的NP难问题,NP-hardness是组合优化问题的典型特征。一般来说,单纯路径规划问题由整数规划模型进行数学抽象,带随机变量的可用随机整数规划模型,有其他非整数约束的可用随机混合整数规划模型。对于这个问题,关键在于如何抽象技能-需求的层级匹配原则。非层级的VRP问题研究是很多的了,每辆车都一样,确定性算法和启发式算法都一大堆,也都得到很好的解,大小实验案例通吃了,benchmarking也很完善了。


对于我这个问题,首先我想到对需求clustering,但不适合,因为层级匹配不仅仅是分类,而是从上往下匹配。然后我考虑分开成单人路径规划问题,因为层级匹配原则的存在,先后对不同技能水平的人进行routing,会产生大不相同的结果(应该不难理解,先routing高水平的,会服务掉大量需求,而先routing低水平的,会留下许多高级需求)。


由于我使用蚁群算法(Ant Colony Optimization)做过单人路径规划问题,所以自然而然的就想到这个算法。由于ACO只能解决单人问题,那我一个人一个人的进行routing,理论上可以完成任务,但是怎么找出最优的护工routing顺序呢?这可以算一个排序优化问题,但我从一个更humanoid的方式进行模型构造。


整个过程就是给定需求量,选一个护工,完成一条路径,观察剩余需求量,选第二个护工,完成第二条路径,循环直到护工用完或者需求完全覆盖。学过Markov Decision Processes的朋友,看这个描述第一反应肯定就要拿MDPs来用了。没错,我也这么想的。懂MDPs的朋友,基本都知道Dynamic Programming和Reinforcement Learning,反之亦然。于是对付MDPs的算法已经有了大致范围,同时也定下了这个模型是层级的,两个独立模型的混合。简单的流程见图1。

MDPs入门书籍:
Puterman, M. L. (1994). Markov Decision Processes: Discrete Stochastic Dynamic Programming. John Wiley & Sons, Inc. (超经典教科书,7099引用量...)

DP入门书籍:
Howard, R. A. (1966). Dynamic programming. Management Science,12(5), 317-348.(超经典教科书,前言很有意思)

RL入门书籍:
Mozer, S., M C, & Hasselmo, M. (2005). Reinforcement learning: an introduction. Machine Learning, 16(1), 285-286. (引用量1.7万...)
图1 MDPs-CCP模型流程

如果外层模型用于决定护工的routing顺序,那么内层模型就是一个单护工routing模型了,准确的说,是Traveling Salesman Problem with stochastic service time, multi-visit, and time windows。我用了Chance Constrained Programming对这个问题进行建模,原因是能比较好把service time对问题的影响在那些方面抽象出来



4.2 Finite Markov Decision Processes



MDPs由五元组定义,直接引原文。

看看这几个元素(elements)有什么问题。


行动的问题不大,每次action就是选一个特定技能等级的护工。


折扣因子也没啥问题,大小决定了算法对长期reward的重视程度。


回报函数

可以粗略地这么理解:在每个状态,选取某个行动之后,获得的直接回报大小就代表着这个行动的价值。对付不同问题的时候,回报函数有不同的含义。针对这个routing的问题,回报函数包含两层含义:


1)直接回报(immediate reward)。粗略地说,就是在当前状态选某个护工,得到的这条路径(also called 'sub-solution')的等待时长和需求满足量的优化程度。


2)长期回报(long-term reward)。这和折扣因子和当前策略有关系。简单地说,如果给一条策略,在某个状态时根据该policy选择一个action,可得到一个直接回报和一个新的状态。长期回报就是在某状态使用某action得到的直接回报,加上下一个状态根据统一策略行动得到的回报乘上折扣因子,加上在下一个的回报乘上折扣因子的平方,以此类推,直到吸收态。


这里涉及到一个Reward sharping的问题,i.e.,如何构造一个函数,使之能够恰当地反应某个行动/策略的价值。在这个问题中,就是要恰当地反应subsolution的优劣。前面提到我想要最小化等待时长最大化需求满足量,那reward肯定要和这两个指标有关系,但是什么关系比较好呢?


我尝试了几个选择:线性和(权重),比值,指数和。最后通过实验我使用了简单的线性和,也就是reward的值等于等待时长和需求满足量的线性相加,二者具有不相关的参数(权重)。

仔细看一下上面的reward function,第一项wh是等待时长,带一个参数 λ,第二项是需求满足量,没有参数(or 恒为1)。注意,λ 这个参数还大有文章可做!怎么说?


取0的时候,回报和等待时长无关,取不同次幂的数相当于在reward里面赋予等待时长不同的重要性,反过来讲,也相当于赋予需求满足量不同的重要性。其真值的正负,其绝对值取0.1,1,10,100,都会对模型和算法造成影响,所以,我们需要参数分析,来确定哪个参数最适合。当然,在实验前也可以稍作分析。


比如,等待时长需要最小化,而需求满足量需要最大化,我们想要回报最大化,那么等待时长相关的那一部分reward必须是负数,但为了严谨起见,正负数都是要做实验的。再比如,不同量级(10的某次幂)的值会造成回报中两部分的重要程度有差别。但是这些基本分析,只能给我一个设计实验的思路,让我具备取哪些值做实验有点把握。


(学术研究?编程吧,做实验吧,看数据吧,画图吧!!!!!~)


这是一个回报塑性的问题(reward sharping)。从模型的角度,相当于定义的准确性。从算法的角度,关乎到计算机对环境的理解是否随我们的愿。这方面的文献不多,但RS是强化学习等各种与MDPs有关的研究中很重要也很令人头疼的一个方面,我们可以从相关研究中获取经验,但是,模型定义之类的问题,就是:


实验数据说话,解的质量说话,运行效率说话!!XD


状态

状态记录着当前环境信息,其定义决定了这个模型的精度,i.e.,模型能多精确地表示环境具备的所有特征(假设)。最开始我的想法很直接,把当前剩余的各类需求量直接作为状态,比如:

这么做精度自然很高,但是状态的总数是关于需求类别数和各类需求量指数增长的,也就是组合优化问题经典的NP-hardness特点。我在文章中的一个实验案例是[80 elders & 160 demands & 3 demand classes],如果沿用上述的状态定义,状态数会特别多,很难找到有效的算法来解决,更别提还有其他约束了。


那么,我就降一点精度,换个定义:

Size-relation就是数的大小关系,新的定义用不同类需求量之间的大小关系来表示状态,重点就是状态总量降到了不同类别数的全排列那么多,不在随着各类需求量呈指数增长了。只要另外加上两个吸收态(护工用完/需求用完),这个新的状态定义就完美解决了维数灾问题(curse of dimensionality)。特别是后期应用Q-learning算法的时候,新定义比原始定义,使Q值矩阵降了很多维。


但是,别高兴得太早了,降维以后这个定义能否很好的满足算法求解所需的所有环境信息到目前这一步还很难说。不过,四个案例12个参数对这个模型进行的轰炸,让我自己相信了这个状态定义是没问题的,准确的说,不够精确,但是够用。还记得我上一章说的吗?想知道模型定义合不合适,第一是找参考文献,第二就是自己实验。


转移概率
这也很有意思。根据上面的状态定义,至少我搞清楚所有可能出现的状态都是啥了,但是对于某个状态,选个action后,转移到其他状态的概率是多少呢?大家不妨思考一下,怎么算,或者,怎么定义?


................................一顿思考


发现了吗?转移概率和内层模型有直接联系!简而言之,在某状态选某个护工,下个状态会剩下多少为满足需求量(根据状态定义),完全取决于这个护工在内层模型的限制下,给出来的解是啥样子的。


既然知道转移概率的来龙去脉,怎么算?Sorry,不管你怎么算,it is computationally expensive!为什么?


NP-hardness:“hey, guys, do you miss me?”


我的处理方式很直接,算不了,那我就不算了,当我不知道就行。为什么?因为我有Model-free的Q-learning算法带我飞 XD。

但是这可信吗?这真能行?(保持质疑),行不行:


实验数据说话,解的质量说话,运行效率说话!!


那么MDPs模型就这样了,但我觉得是比较简陋的。


首先,状态并不能准确反应环境信息(显然的事实);其次,回报函数中可以考虑更多的因素,也可以优化参数的取值方法(比如参数学习,比如逆强化学习等等)。



4.3 Chance Constrained Programming



CCP是随机规划的一种模型,其特点是,有几条约束,描述了某些与随机变量相关的事件发生的概率必须大于或者小于某个值。比如下面的公式(4)和(6)。可以从置信度的角度来理解,事实上,不等式右边的α和β就叫"confidence level"。嗯,看书看文献吧。

书:
Birge, J. R., & Louveaux, F. (2009). Introduction to stochastic programming. Springer, 49(8), 897-898.
Shapiro, A., Dentcheva, D., & Ski, A. (2007). Lectures on stochastic programming. Handbook in Operations Research & Management Science, xvi+436.

Shapiro, A.还有一本,2003年的,结构和2007年的不一样,个人比较喜欢03年版本,但是网上似乎找不到,有需要的朋友可以找我 : )

文献:
Charnes, A., Cooper, W. W. (1959). Chance-Constrained Programming. Management Science, 6(1), 73-79. (祖师爷...)
Li, X., Tian, P., Leung, S. C. H. (2010). Vehicle routing problems with time windows and stochastic travel and service times: models and algorithm. International Journal of Production Economics, 125(1), 137-145.

看看我的模型吧。


二话不说,小二,来一打公式!

(PS:未来想搞科研的朋友,一定要适应看这种模型的感觉,特别是运筹学相关的。)


一开始接触数学模型的时候我也不习惯,毕竟个人数学基础不好,所以就疯狂看文献,逼自己理解每一条公式的含义(所有量variables/constants、下标labels/indices)。对于和运筹优化有关的文章,一般在模型之后的第一段,会逐个介绍模型的每一条公式的含义,一般比较概括,不详细。针对比较重要、关键的公式,模型这一章会有详细说明。


模型中公式(8-11),是从经典VRPTW模型的基本形式改过来的,下标(i, j, k)为elders、nurses,上标(m, n)是jobs,比较简单。公式(12)是技能匹配原则,公式(13)禁止护工迟到。文章里针对两个chance constraints进行了特别描述,给出了这两个约束的推导过程,并说明通过这两公式 建立了随机变量和参数/结果 的关系,这也是实验设计的出发点。


首先考虑随机变量(服务时长)对问题的影响回体现在什么方面。直观地看,在护工一天的工作中,服务某个老人的服务时间的随机波动会影响到后续的工作。考虑两个demands的情况,服务d1的时长的变化,直接影响的是到达d2的时刻(移动时长是deterministic),进而根据d2的时间窗,护工可能会发生等待、可能不用等待、可能错过了预约。考虑整条路径,service time对最终结束一天工作的时刻也有影响,所以护工可能会提前下班或加班(基本不会出现准时下班)。


既然如此,我们当然希望等待时长越短越好,最好不用等,但现实世界不可能完美,所以也可以允许等待,但不能超过某个最大值。同时,我们希望护工别加班(出于为护工考虑,拒绝无良剥削,加班一般没有加班费 )。


所以就有了Eq. (4) & (6)的初始形式:

直观的说,我们希望“等待时长不超过某个常数C”这件事发生的概率至少是 α,而“总工时不超过某个常数W”这件事发生的概率至少是 β。但是这两条公式看起来和service time还没啥关系,所以需要变形,以便研究。下面的推导假设路径规划过程是无记忆性的,也就是具备Markov Property,所以我们可以写出几类“时刻”的递推关系式:

到达下一个点(n+1)的时刻,等于到达当前点(n)的时刻,加上服务时长(dc)、移动时长(tc)和等待时长(w)。注意等待时长有两种情况会发生,即不用等,即

注意,等待时长只产生于提前到达的情况,到达时刻恰好在time window里面是为0的,转换成递推公式的语言,就是说:


发生等待时,到达时刻(服务开始时刻)等于时间窗上限;


无等待时,到达时刻即为Eq. (2)计算(w=0)。


所以Eq. (2)可以改写为:

注意到,上限-到达时刻不一定是正数,等待时刻为0的时候就是负的,但是这个公式的好处就在于把这个情况也包含进去了。看见没,同时考虑迟到约束Eq. (13),只要Eq. (4)中的C大于0,不管需不需要等待,都已经被well-defined。


类似地,over work的约束也进行了转换:

但是,very tricky的是,我只关注护工最终回depot的到达时刻,因为那相当于下班时刻。r0表示的就是depot,不管从哪个点回去depot,就认为该护工下班,routing结束。所以Eq. (9)也就很好理解了,也和service time建立了联系。以上就是两个chance constraints的推导过程,CCP模型的关键约束已经完成定义,我们接下来做什么?


算法!!!




如果你是运筹学/人工智能硕博或在读,请在下图的公众号后台留言:“加微信群”。系统会自动辨认你的关键字,并提示您进一步的加群要求和步骤,邀请您进全球运筹或AI学者群(群内学界、业界大佬云集)。

同时我们有:【运筹学|优化爱好者】【供应链|物流】【人工智能】【数据科学|分析】千人QQ群,想入群的小伙伴可以关注下方公众号点击“加入社区”按钮,获得入群传送门。

学术界|工业界招聘、征稿等信息免费发布,请见下图:

编辑于 2018-05-19

文章被以下专栏收录