RL解决Yahtzee游戏时Gym观测空间MultiDiscrete形状异常问题
问题原因及解决办法
- 核心问题出在
MultiDiscrete的参数传递上:你直接传了整数19,Gym会把它解析成单个离散维度,取值范围是0到18,所以观测空间的形状才会是(),而非预期的(19,)。 - 正确写法是传入长度为19的数组,每个元素对应观测空间中对应维度的最大取值(比如Yahtzee里骰子相关维度上限一般是6,其他状态维度根据实际规则调整),示例代码:
# 这里假设每个维度取值上限都是6,可根据你的实际需求修改 self.observation_space = gym.spaces.MultiDiscrete([6]*19)
- 额外建议:在构造函数里加
print(game_state.shape)再次确认,确保game_state这个numpy数组的形状确实是(19,),避免数据本身的形状不符合预期。
内容的提问来源于stack exchange,提问作者noMatt
相关产品推荐
相关产品推荐

