马尔可夫决策过程的转移矩阵一定是随机的吗?

2024-09-27 23:26:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用值迭代(通过pymdptoolbox)和NumPy为this diagram中指定的Markov决策过程问题找到最优策略。但是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)

Tags: importnumpys3状态npthisarrays4
1条回答
网友
1楼 · 发布于 2024-09-27 23:26:18

问题是,您使用了所有0值来表示无法访问的状态。你每行的总概率必须是1。由于状态是不可访问的,所以不管如何在第一列中添加“1”,然后均匀地分配值,无论您喜欢什么。当我解决这个问题时,我只需在主对角线上使用一个“1”:让不可能的状态成为一个接收器。在

相关问题 更多 >

    热门问题