【马尔可夫收益过程(Markov reward process , MRP)】是指不包含动作的马尔可夫决策过程,在只关心预测问题时使用的模型。
问题描述:
以中心状态C开始,在每个时刻以相同的概率向左或向右移动一个状态,在两端终止,episode终止于最右侧时会有+1的收益,除此之外收益均为0。
对于19个状态的随机游走问题,其左端收益为-1,右端收益为+1,其真实的价值应为[ 0. , -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0. ]
导入所需要的包:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from tqdm import tqdm
plt.rcParams['font.sans-serif'] = ['SimHei'] # 正确显示中文
plt.rcParams['axes.unicode_minus'] = False # 正确显示正负号
问题描述:
# 共有19个状态
N_STATES = 19
# 折扣系数
GAMMA = 1
# 状态合计【1,2,3,4,……,19】
STATES = np.arange(1, N_STATES + 1)
# 起始状态_中间位置开始
START_STATE = (N_STATES+1)/2
# 两个终止状态
# S=0时,左边终止 reward=-1
# S=20时,右边终止 reward=1
END_STATES = [0, N_STATES + 1]
# 随机游走问题中真实的价值函数,用来通过误差评比各种算法的预测能力
TRUE_VALUE = np.arange(-20, 22, 2) / 20.0
TRUE_VALUE[0] = TRUE_VALUE[-1] = 0 #第一个和最后一个都是0
环境交互函数:(随机action)
def env_step(state):
# 随机游走,更新state
if np.random.binomial(1, 0.5) ==