使用gym对环境进行观测,调用reset(),代码如下
self.env_state, self.action_mask = self.env.reset()
报错信息如下:
AssertionError: The second element returned by env.reset()
was not a dictionary, actual type: <class ‘numpy.ndarray’>
原因
这是因为gym要求 env.reset() 函数返回一个由两个元素组成的元组:观测值和信息字典。如果第二个元素不是字典,就会触发 AssertionError。
解决方法
查找环境reset()return部分的代码,发现返回的两个值都是ndarray类型
return np.asarray(obs).reshape((len(obs), -1)), np.array(available_actions)
将第二个元素改为字典值
dict_from_actions = {i: np.array(available_actions)[i] for i in range(len(np.array(available_actions)))}
return np.asarray(obs).reshape((len(obs), -1)), dict_from_actions
修改后不再报错