ml agent 调试记录文档

常见错误

1.Heuristic method called but not implemented. Returning placeholder actions.
原因:在Inspector中有时候会多个Agent.cs,和你写的AgentXXX.cs冲突了,把它移除就可以了。

打印SimpleMultiAgentGroup中的成员
        foreach(var m_agent in m_PurpleAgentGroup.GetRegisteredAgents())
       {   
         Debug.Log(m_agent); 
       } 
  1. raise env_exception
    mlagents_envs.exception.UnityObservationException: Observation did not have the expected shape - got [50, 99, 4] but expected (60, 120, 4)
    解决办法: 调整gridsensor中探测的精度,使之符合(60, 120, 4)
localposition 与 position(父对象)

代码中使用的 transform.localPosition 可以获得物体相对于其父对象(Local Space)的位置,而不是相对于世界坐标系(World Space)的位置。

在此处,我们需要获取Agent(或者称为本地智能体)和目标之间的相对距离。由于Agent和目标都被放置在另一个游戏对象的子级下,所以使用了 localPosition 来获取它们之间的实际距离。 如果使用 position 则会获得它们相对于场景原点的距离,这可能不是我们需要的。
在这里插入图片描述

在代码中,您可以访问他们的Transform组件(例如,target.transform.parent或this.transform.parent),并检查返回的值来获取他们的父对象信息。也可以通过Unity编辑器中的层级窗口或场景视图检查它们的Transform组件来确定它们的层次结构关系,由下图可看出其父对象就是TraningArea.层级窗口

物体自动向下掉落

Rigidbody组件中将use gravity去掉,在给定好的动力学方程中是不需要它的。

物体的位置速度表示

在Unity的Transform组件中,速度(Velocity)通常不包含在其中。
Transform组件用于描述对象在3D世界中的位置、旋转和缩放。它是一个非常基础的组件,通常用于管理场景中的游戏对象。当你改变一个对象的Transform时,它会修改对象在3D空间中的位置、旋转和缩放。

Velocity(即速度),通常是通过Rigidbody组件来控制和管理物体的。 Rigidbody组件需要附加到对象上,并设置物理属性,如质量、重力等。如果你想要控制物体的运动或者其他行为,那么你需要与Rigidbody组件打交道,而不是Transform组件。必须确保该游戏对象已经附加了Rigidbody组件,并且通过调用evader.GetComponent()来访问其刚体组件的velocity属性。所以正确的写法应该是 evader.GetComponent<Rigidbody>().velocity。在Rigidbody组件中,你可以通过使用AddForce() 或者 AddTorque() 方法来为游戏对象施加速度和扭矩。它还提供了其他的方法和属性,以便你更好地控制和管理物体的运动状态。

concurrent 加速训练

windows下:

  1. 先生成可执行文件,放在了原工程下的文件夹里,和.yaml放在同一级了
  2. mlagents-learn SatellitePE.yaml --run-id=multicoregrid --force --env SatePE --num-envs=4
    --这个符号要注意,别写错了,不然不识别对应函数。
    mlagents-learn SatellitePEOrig.yaml --run-id=vec_4P_Nav_Form_IDis25 --force --env SateP4exe --num-envs=5
    --env SatePE将可执行文件放在这个SatePE文件夹下了,路径在此。
    mlagents-learn SatellitePEOrig.yaml --run-id=vecGridcolli20240226 --resume --env SateP4exe --num-envs=4 --no-graphics
    Ubuntu下:
    可用htop 查询cpu线程占用率
tensorboard --logdir results --port 6006
obi cloth 插件
  1. 放大绳网尺寸
    绳网的blueprint的scale放大就行了,在这里scale就不要再放大了,虽然看着很小,但是运行起来就达到预期效果了。
一些验证
  1. 卫星方块质量对动力学模型有无影响,因为输入设置的是加速度,我想质量应该没有影响。

  2. 奖励函数比例缩放影响
    一次实验,表明对训练速度基本没有影响;
    在这里插入图片描述

在这里插入图片描述

问题
  1. 只有过程奖励,以距离为奖励函数。如果随机初始化位置,初始离得远的累加的奖励就多,或者少,离得近的反之,这种对强化学习的训练有影响不?

  2. 工程运行能够连接evader, 形成 模拟器连不上

  3. -num-envs=5,偶尔会出现No episode was completed since last summary. Training.
    -num-envs=1,没有此现象

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值