0

我的问题如下。我有一个简单的网格世界:

https://i.imgur.com/2QyetBg.png

代理从标有 START 的初始状态开始,目标是达到标有 END 的终端状态。但是,代理必须避开标有 X 的障碍,并且在到达 END 状态之前它必须收集所有标有 F 的项目。我也使用 Q-Learning 和 Sarsa 来实现它,并且代理达到 END 状态并避免障碍(X 个状态)。所以这部分工作得很好。

我的问题是,如何让代理在达到 END 状态之前收集所有项目(F 状态)?通过使用 Q-Learning 或 Sarsa,它可以避开障碍,达到 END 状态,但不会收集所有项目。通常访问一个 F 状态并在代理前往 END 状态之后。

谢谢您的帮助!

4

1 回答 1

0

您应该始终确保达到目标是与环境互动的最“有吸引力”的方式。您希望您的代理达到给定目标,并且您的代理尝试最大化奖励信号,因此您需要做的就是设计一个奖励函数来正确“引导”代理执行正确的操作。

在您描述的情况下,似乎收集最多的奖励,代理应该访问一个 F 状态,然后进入 END 状态 - 所以尝试将奖励函数更改为一个,例如,返回更多的奖励访问F 状态。

我可以想象的其他奖励函数是一个返回 -1 用于访问 END 状态而不收集项目,1 用于访问 END 状态并收集项目,0 用于访问所有其他状态(或者例如 -0.02,如果你想要尽快达到目标)。

您可以使用奖励函数设计 - 我的建议是尝试它并观察代理的行为。这通常是让代理和环境更好地了解和理解的一种非常好的方式。

于 2019-02-07T10:23:40.707 回答