通过强化学习,教机器人在到达终端状态之前在网格世界中收集物品



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

https://i.stack.imgur.com/xrhJw.png

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

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

谢谢你的帮助!

您应该始终确保实现目标是与环境互动的最具"吸引力"的方式。你希望你的代理人达到给定的目标,而你的代理人试图最大化奖励信号,所以你需要做的是设计一个奖励函数,正确地"指导"代理人采取正确的行动。

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

我可以想象的另一个奖励函数是一个返回-1的函数,用于访问END状态而不收集项目,1用于访问已收集项目的END状态,0用于访问每隔一个状态(例如,如果你希望尽快达到目标,则返回-0.02)。

你可以玩奖励函数设计——我的建议是尝试一下,观察一下代理人的行为。这通常是让代理和环境更好地了解和理解的一种非常好的方式。

最新更新