强化学习算法复现(二):动态规划_杰克租车问题【策略迭代】

本文介绍了杰克如何管理全国汽车租赁公司的两个地点,通过动态规划解决租车策略问题。每天,租车需求和还车数量遵循泊松分布。杰克需在两地之间移动车辆以平衡供需,每移动一辆车成本2美元。问题简化为有限MDP,状态为每天结束时的车辆数,动作是车辆移动数量。采用策略迭代算法进行求解,折扣率为0.9,车辆上限20辆,单晚最多移动5辆。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:
杰克管理一个全国性汽车出租公司的两个地点。每天,都有一些顾客到这两个地点租车。如果有车可租,杰克就将车租出并从公司得到10美元的回扣。如果这个地点没车,杰克就失去了这笔生意。还回的车第二天就可以出租。为了使需要车的地点有车可租,杰克可以在两个地点间移动车辆,移动每辆车的费用是2美元。我们假设每个地点的车的需求量和归还量都是泊松分布变量。假设租车的期望值是3和4,还车的期望值是3和2。

为了简化问题,我们假设每个地点的车不多于20辆(多于的车被还回公司,因此就从此问题中消失了)并且一晚上最多移动5辆车。折扣率为0.9,并描述为一个有限MDP问题,时间步为天,状态是每天结束时两个地点的车辆数,动作是晚上在两个地点间移动的车辆数。
在这里插入图片描述

代码过程如下所示:

from matplotlib import pyplot as plt
import numpy as np
from matplotlib import animation
from scipy.stats import poisson  # 统计学的包,用于生成泊松分布

plt.rcParams['font.sans-serif'] = ['SimHei']  # 正确显示中文
plt.rcParams['axes.unicode_minus'] = False  # 正确显示正负号


#初始化
poisson_cache = dict()
x = np.arange(0, 21)
y = np.arange(0, 21)
x, y = np.meshgrid(x, y)

value = np.zeros((21, 21))
policy = np.zeros(value.shape, dtype=np.int)  # 存储策略【0,1,2……20】

fig = plt.figure(figsize=(20, 10))

ax1 = fig.add_subplot(1, 2, 1, projection='3d')
ax2 = fig.add_subplot(1, 2, 2, projection='3d')

def init():                                     # 画布坐标轴范围初始化

    ax1.set_xlim
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值