我有一个有多个离散动作空间的定制环境。
行动和观察空间如下:
操作:
MultiDiscrete([ 3 121 121 121 3 121 121 121 3 121 121 121 3 121 121 121 3 121
121 121 3 121 121 121 3 121 121 121 3 121 121 121 3 121 121 121
3 121 121 121 3 121 121 121 3 121 121 121 3 121 121 121 3 121
121 121 3 121 121 121 3 121 121 121 3 121 121 121])观察:
MultiDiscrete([100 3 2 121 2 121 2 121 2 121 2 121 2 121 2 121 2 121
2 121 2 121 2 121 2 121 2 121 2 121 2 121 2 121 2 121
2 121 2 121 2 121 2 121 2 121 2 121 2 121 2 121 2 121
2 121 2 121 2 121 2 121 2 121 2 121 2 121 2 121 2 121
121 121 121 121 121 121 121 121 121 121 121 121 121 121 121 121 121 121
121 121 121 121 121 121 121 121 121 121 121 121 121 121 121])我很难找到一个能够处理这些空间的代理(例如keras-rl)。
这个问题:https://github.com/keras-rl/keras-rl/issues/224表示keras-rl DDPG代理能够处理多个离散的操作空间,但是模型有一个浮点输出,我不能将它用作step()函数的操作,它需要一个整数输出!
大多数其他代理似乎使用tanh激活层,或者使用一些生成二进制输出的层。我需要一个与我的动作空间相同形状的输出。
如何处理这件事?
发布于 2019-08-27 07:19:14
OpenAI基线--或者对我来说更好,更稳定的基线--有许多模型选项,可以处理MultiDicrete操作和/或观察空间。建立一个定制的健身房环境也是相当简单的。
发布于 2021-04-20 13:12:37
假设现在您的空间定义如下
n_actions = (10, 20, 30)
action_space = MultiDiscrete(n_actions)在环境方面,一个简单的解决方案是将空间定义为
action_space = Discrete(np.prod(n_actions)),然后借助np.ndindex将一个离散动作转换为相应的多离散动作。
mapping = tuple(np.ndindex(n_actions))
multidiscrete_action = mapping[discrete_action]https://datascience.stackexchange.com/questions/55005
复制相似问题