我遇到了一个挑战,我的老师要在18x24的网格上击败他的士兵部队,并在板上随机放置障碍物。游戏是回合制,我有一支由50名士兵组成的军队,每人需要在回合中移动或攻击。
我的问题是,我只能在这种环境下建立一类士兵进行战斗。目前,我有一种方法可以通过查看每个团队中剩下的士兵人数来评估棋盘位置,并通过yourTeam-敌方团队来获取当前得分,并且我有一种方法可以为士兵提供合法举动。
我想知道如何使用我可以访问的内容在Java中创建强化学习代理。如果您知道执行此操作的任何方法或可能有帮助的任何资源,那将是很好的。谢谢您的帮助!
答案 0 :(得分:1)
Java不是进行大量数学运算的好语言(这是RL所需的语言)。您可以尝试实施Q学习,价值迭代或策略迭代算法,但由于工作量会急剧增加,因此我在这里避免使用神经网络/现代深度RL方法做任何事情。
关于您的问题,如果要实现一种老式算法。考虑一下您的状态和动作空间。我非常担心您的行动空间的大小,即使每个士兵只有少量动作(例如3-攻击,上,下移动),如果有50名士兵,行动空间将非常大-50 ^ 3,甚至这么多将很难处理,更多(甚至4或5)将使您深入了解RL中的一些复杂主题。
其他问题是-定义良好的奖励信号,有效运行(可能数百万)模拟游戏。
简短的答案是,这不是容易掉以轻心的事情,即使对于那些在该领域有经验并且使用Java的人来说,这也是一个挑战,而且很耗时(Python更好)。鉴于您可能很快就找不到好的解决方案,我建议您尝试其他方法-也许基于计划,或者对合理的策略进行硬编码。
如果您仍然想继续阅读本主题,这里有一些很好的资源:
希望这会有所帮助,很抱歉,这可能不是您希望的答案!