mlagents软件包中的Unity3D奖励逻辑

2024-09-30 14:36:00 发布

您现在位置:Python中文网/ 问答频道 /正文

Unity3D有一个强化学习包,叫做ML-agents,我正在用它来理解它的组件。对于我的项目,我需要编写自己的逻辑来设置Unity3D的奖励(不是使用C#逻辑的“addReward”,而是编写一个Python代码来设置Unity之外的奖励)。在

我想知道我是否可以使用ML-agents包提供的pythonapi来使用env观察结果,并用Unity之外的自定义逻辑更新奖励(并发送回Unity)?去哪儿找呢?在

换句话说(例如)。在3DBall示例中,如果球停留在平台上,则在Unity3D中设置奖励逻辑,如果球从平台上落下,则获得负奖励。该逻辑在Unity3D中通过使用C来实现,并确定球的位置(矢量位置)与平台进行比较。每一次行动,特工都会打电话给环境步骤(action)得到元组(reward,state…)。如果我想写统一之外的逻辑呢?例如,如果我想编写一个python程序来读取观察结果(来自Unity3D)并更新奖励,而不使用Unity奖励逻辑?这可能吗?我无法理解这个选项在ML代理的pythonapi中的位置。在

目前,我正在考虑运行一个外部python程序,我在Unity3D中用C#设置奖励,但我想知道这是否过于复杂,是否有更简单的解决方案。在

任何帮助都将不胜感激。在

问候 圭多


Tags: 项目代码程序env示例pythonapi矢量组件
1条回答
网友
1楼 · 发布于 2024-09-30 14:36:00

根据我对强化学习的理解,奖励是由环境来处理的,代理人只是在下一次观察中把它凑到一起。你可以说这是观察的一部分。在

因此,奖励何时得到的逻辑是环境逻辑的一部分,即在Unity-ML的情况下,环境生活在统一中,所以必须在Unity(C#)中实现奖励函数。在

所以为了保持环境(Unity)和agent(Python)之间的清晰分离。我认为最好将奖励逻辑保持在Unity/C中,而不要在Python中修改它。在

< Tr>;Tr.Dr:我认为您不能通过Python API设置奖励,以保持清晰的环境代理分离。在

相关问题 更多 >