Jack's Car Rental 是一个经典的应用马尔可夫决策过程(MDP)的问题。下图来自 Reinforcement Learning: An Introduction 这本书的 98 页。
C 语言编程课的 Term Project 就是解决这个问题,在这里记录一下相关内容。
Jack 租车问题概述如下:
- Jack 有 2 个租车点,Location 1 和 Location 2;
- 每个租车点最多停放 20 辆车;
- 每租出去一辆车获利 10 美金;
- 每天租出去的车和收回的车的数量均服从泊松分布:
- Location 1:
- 租出:λ = 3
- 回收:λ = 3
- Location 2:
- 租出:λ = 4
- 回收:λ = 2
- Location 1:
- 每天夜里 Jack 在两个租车点之间进行车辆调整,每晚最多调度 5 辆车,且每辆车花费 2 美金。
- 折扣率 γ = 0.9;
- 试问使用什么调配策略可以使得盈利最优化?
从上面提供的信息中,也能分析出以下内容:
- 每个租车点最多 20 辆 → 状态数量为 21*21 = 441(包括车辆为 0 的情况)
- 每晚最多调配 5 辆车,动作集合则有:A= {(-5, 5), (-4, 4),...,(0, 0), (1, -1),...,(5, -5)},其中 (a1, a2) 表示为 (Location 1 出入的车辆数,Location 2 出入的车辆数),正好表示入,负号表示出。
转载于:https://www.jianshu.com/p/681bb5a91e82