0

我正在研究一个深度强化问题,我对此并不陌生。我正在编写一段代码和我遇到的错误。

Broker_Node_Map 是机器中不同位置的值列表。我不知道如何将这些值表示为整数。这就是我的状态,因为它也在相应地发生变化。请建议我该怎么做。请善待,我很新,并试图掌握一些东西。

def __init__(self):
    super(BrokerEnv2, self).__init__()
    reward = 0 
    self.action_space = DiscreteActions.get_action_space()
    self.observation_space = DiscreteObservations.get_observation_space() 

def reset(self):
    observed_State = self.Broker_Node_Map
    return observed_State 

在稳定基线上检查 env 时 -check_env(env) **Error** - AssertionError: The observation returned by reset() method must be an int

编辑 1 - 我很粗心。将空间更改为盒子空间,但现在出现了另一个错误。 AssertionError:reset() 方法返回的观测值与给定的观测空间不匹配

这就是我的 reset() 返回的内容-

<class 'numpy.ndarray'> (46,) [26 33  0 50  0  0 73 26  0 29  0 34 27 67  0  0  0  0 35 60  0  0 24 22
  0  0  0  0 25  0 17  0  0  0 21  0  0 53 68 40 51  0 62  0 56  0] 

这就是我定义观察空间的方式 -

self.observation_space = spaces.Box(low=1, high=73, shape=(46,), dtype=np.int64)

请帮我看看为什么会出现这个错误?

4

1 回答 1

0

所以我遇到了同样的问题,我的解决方法是正确设置空间边界。例如,在您的情况下,状态包含零,但您已将下限设置为 1。

于 2022-02-09T17:05:53.037 回答