我想将我的环境集成到 openAI 健身房,然后使用稳定的基线库对其进行训练。
链接到稳定的基线:
https://stable-baselines.readthedocs.io/
稳定基线中的学习方法是单线学习,您无法访问在训练期间采取的操作。
model.learn(total_timesteps=10000)
更具体地说,您不会在代码中从环境中采样的那一行:
action = space.sample()
但是,我喜欢在我选择下一个状态的动作的地方添加一些逻辑,并拒绝一些逻辑不适用于它们的动作(例如棋盘非法移动),例如:
for _ in range(1000):
action = env.space.sample()
if some_logic(action):
continue
一种方法是为 action_space sample() 函数编写一个包装器,并且只选择合法的行为。就像class DiscreteWrapper(spaces.Discrete)
以下链接中的一样:
https://github.com/rockingdingo/gym-gomoku/blob/master/gym_gomoku/envs/gomoku.py
但问题是稳定的基线只接受某些数据类型,也不允许这样做。
我怎样才能以一种可集成到稳定基线框架中并且不违反稳定基线标准的方式来做到这一点?如果这根本不可能,那么有没有人知道强化学习框架不同于稳定的基线允许访问动作?