官方Github文档:https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Getting-Started.md

② 安装支持 C# 的代码编辑软件,并连接 Unity Editor
Windows 系统安装 Visual Studio 用于修改 Unity 内的 C# 脚本 (推荐 Windows 系统方案)。
Ubuntu 可采用 VS Code (安装 .NET框架 以编写C#,比较麻烦,且 Unity Editor 界面字体小,官方确认Ubuntu 无UI Scaling功能)。
② 在 Unity Editor 中:
Project → Assets → ML-Agents → Examples → 3D Ball → Scenes

① 场景 Scene :包含Agent及其交互对象的虚拟空间
② 游戏对象 GameObject :所有实体的基础容器,通过Inspector窗口可查看组件构成
③ 组件系统:通过添加不同组件(如Transform、Rigidbody等)定义对象行为
① 3D Balance Ball 场景包含 12 个相同 Agent 立方体
② 并行训练优势:
数据采集效率提升 12 倍
增强策略泛化能力
加速收敛(单个 Agent 平均500万步→12 个 Agen t约42万步)
① Agent是环境中执行观察和动作的实体。
② 在 3D Balance Ball 环境中,12个名为 Agent 的 GameObject 上挂载了 Agent 组件。
① Behavior Parameters(行为参数):
每个Agent必须配置,决定Agent如何做出决策。
② Max Step(最大步数):
定义Agent单次训练周期(episode)的最大步数(3D Balance Ball中为5000步),超时后环境重置。

① 空间维度: 8维向量,即包含以下 8 项信息。
② 包含的观测信息:
Agent立方体的旋转分量(x, z轴),共2项。
球体相对于Agent的位置(x, y, z坐标),共 3 项。
球体相对于Agent的速度(x, y, z分量),共 3 项。
① 动作类型:连续型动作(Continuous Actions)。
② 动作维度:2 维向量。
③ 动作功能:控制 Agent 绕 x ,z 轴旋转,以保持球体平衡。

在Unity Editor 的 Projects 窗口找到 AssetsExample3DBallScripts,可看到这两个代码,双击打开可编辑。
※ 以下添加注释的版本仅供大家学习理解,正式运行如报错,可采用官方版本。

① 观测值收集方式:
Ball3DAgent: 使用传统手动添加观测的方式gent 智能体0c;通过 CollectObservations 方法显式收集。
通过 useVecObs 开关控制是否启用向量观测,适合需要动态切换观测模式的场景。
Ball3DHardAgent: 使用 反射传感器(Reflection Sensors),通过 [Observable] 属性标记自动收集观测。
numStackedObservations:9 表示堆叠过去 9 帧的观测数据,为模型提供时序信息。
② 观测数据类型:
Ball3DAgent:
包含 4 个观测值:平台旋转(z/x)、球相对位置、球速度。
Ball3DHardAgent:
仅包含 2 个观测属性(但通过堆叠扩展为 9 帧历史)。
③ 手动控制支持:
Ball3DAgent:
实现 Heuristic 方法,支持通过键盘输入(Horizontal/Vertical 轴)手动控制。
Ball3DHardAgent:
未实现 Heuristic 方法,无法直接通过键盘控制,仅适用于自动训练。
④ 总结:
Ball3DAgent:
更灵活,支持手动控制、动态参数重置和观测模式切换,适合基础训练和调试。
Ball3DHardAgent:
通过堆叠时序观测简化了代码,但可能因缺少速度和动态参数重置增加训练难度,适合复杂环境下的时序依赖性训练。
https://blog.csdn.net/CDSN/article/details/

发布者:Ai探索者,转载请注明出处:https://javaforall.net/245559.html原文链接:https://javaforall.net
