引用来自ShangtongZhang的代码chapter04/car_rental.py
car rental 问题
问题描述
这个问题就比较复杂了。。。说是Jack是两个汽车租赁公司的老板,他收入是靠租车出去,租出一辆赚10刀,每次有人还车,那么第二天这车就可以租出去了;每天夜里可以将一个地方的车运到另一个地方,不过每运一辆车要花2刀。关于业务,Jack发现了一些斯巴拉西的规律:每个地方每天汽车租借和归还的数量都遵循泊松分布:
我们就把两个位置称为first和second吧。
first的汽车每天借出去λ=3,归还λ=3;
second每天借出去λ=4,归还λ=2;
并且每个地方汽车库存不能超过20辆,超过了总公司就会回收;
夜里从一个地方运到另一个地方的汽车数量不能超过5辆。
这个问题我们把它设计成discount因子=0.9的MDP问题,step是每一天,action是每晚运的车,并设从first运到second为正,从second运到first为负,state是first和second可以租赁车的总数量。同时做一个简化,就是如果泊松分布n>10,就把概率人为截断为0。
引入模块并定义常量
1 | import numpy as np |
进行policy evaluation
1 | # Probability for poisson distribution |
进行policy iteration
1 | def figure_4_2(constant_returned_cars=True): |