我在通过Python实现mdp
(马尔科夫决策过程)时遇到问题。
我有以下矩阵:states: (1 x n)
和actions: (1 x m)
转换矩阵是通过以下代码计算的:
p = np.zeros((n,n))
for t in range(l): # my data is a 1x100 matrix
p[states[t]-1, states[t+1]-1] = p[states[t]-1, states[t+1]-1] + 1
for i in range(n):
p[i,:] = p[i, :] / np.sum(p[i, :])
和此代码的奖励矩阵:
for i in range(l):
Reward = (states[i+1]-states[i])/(states[i])*100
要获得最佳值,python中的“ quantecon软件包”定义为:
ddp = quantecon.markov.DiscreteDP(R, Q, beta)
其中Q:过渡矩阵应为m x n x m
。
任何人都可以帮助我理解Q如何成为(m,n,m)母体吗? 预先谢谢你。
答案 0 :(得分:0)
如果您有n
个状态和m
个动作,则Q
将是形状为(n, m, n)
(而不是(m, n, m)
)的数组,其中让{{ 1}}存储当当前状态为第Q[s, a, t]
个并且所采取的动作为第t
个时下一个状态变为第s
个状态的概率行动。