我创建了一个 OpenAI Gym 环境,我想通过OpenAI Baselines DQN 方法检查代理的性能。在我的环境中,代理的最佳结果是 0 - 机器人需要零非必要资源来完成任务。目标是最小化对资源的需求:对于每个需要的资源,惩罚为 -1。在许多州,只有特定的行为才具有物理意义。我该如何处理?
在AI StackExchange上已经有一个关于无效招式处理的问题,建议忽略无效招式。然而,忽略它们意味着返回相同的状态和 0 奖励,这是最好的结果,但显然不是这样。设置剧烈的负奖励似乎也不起作用,因为即使是有希望的处理路径也会受到无效动作和相应的剧烈负奖励的影响。
在所有奖励为 0(最佳)或负数的情况下,还有哪些其他方法可以处理无效操作?
我对OpenAI Baselines DQN 方法实施的想法/问题
有没有办法为动作设置初始 Q 值?我可以为无效操作设置 -infinity 。
有没有办法限制每个状态的有效操作集?当 env.step(action) 函数返回新状态后,我可以以某种方式定义哪些操作对其有效吗?