我正在尝试使用值迭代(通过 pymdptoolbox)和 NumPy找到此图中指定的马尔可夫决策过程问题的最佳策略。但是 pymdptoolbox 说我的转换矩阵“不是随机的”。
是因为有 [0, 0, 0, 0] 的数组吗?有些转换是不可能的,比如从状态 1 到状态 3。如果不使用零,我该如何表示这些不可能的转换?
我的代码:
import mdptoolbox
import numpy as np
transitions = np.array([
#action1
[
[0.2, 0.8, 0, 0], #s1
[0, 0, 0, 0], #s2
[0, 0, 0, 0], #s3
[0, 0, 0.9, 0.1] #s4
],
#action2
[
[0.2, 0, 0, 0.8], #s1
[0, 0.2, 0.8, 0], #s2
[0, 0, 0, 0], #s3
[0, 0, 0, 0] #s4
],
#action3
[
[0, 0, 0, 0], #s1
[0.8, 0.2, 0, 0], #s2
[0, 0, 0, 1], #s3
[0, 0, 0, 0] #s4
],
#action4
[
[0.8, 0, 0, 0.2], #s1
[0, 0, 0, 0], #s2
[0, 1, 0, 0], #s3
[0, 0, 0, 0] #s4
]
])
rewards = np.array([
[0, 0, 0, 0],
[0, 0, 0, 0],
[1, 1, 1, 1],
[0, 0, 0, 0]
])
vi = mdptoolbox.mdp.ValueIteration(transitions, rewards, 0.4)