服务热线:010-62964229
格瑞纳根植于教育行业,让仿真软件从理论教学到应用实践
新闻资讯
当前位置:首页 > 新闻资讯 > 行业新闻
建模技巧 | 如何获取嵌套智能体的绝对坐标?
2022-09-05 15:56:50 发布人:admin 阅读 1804

本文分享了由Vitor Lemos编写的关于AnyLogic的使用实践技巧,希望能为正在学习或使用AnyLogic的用户提供帮助。

原文:https://www.theanylogicmodeler.com/post/coordinates-inception

作者:VitorLemos

更新:2022Jan18

阅读时间:2min

AnyLogic中,获取智能体的坐标(在离散或连续空间中)相当简单:

myAgent.getX() or myAgent.getY()

但是如果智能体嵌入到另一个智能体中会怎么样?

想象一下,我们有一个仓库(智能体),其中有三个不同的存储区域,每个区域的尺寸为100x100,每个区域的中心正好有一个箱子:

仓库位于Main中,位于坐标x=10y=10处。

现在想确定仓库内某个箱子的X坐标,以便您可以计算去哪里取箱子或确定箱子占用的空间或其他类似的计算。

假设我们的箱子在区域3的中心位置。根据心算,应该正好是260,(2个存储区域100,盒子在第三个存储区的中间,所以100/2=50仓库的X=10[81] ,因此是100+100+50+10)

但是,当你获取箱子的X坐标时,结果是:50

这是因为那个箱子位于存储区域3内,而所获取的是相对于所在区域起点的坐标。所以它会返回存储区域内的X坐标。为了获得相对于Main原点的绝对X坐标,需要对所有父智能体的X坐标求和:

Box X w.r.t. Main=box X + parent storage area X + warehouse X

使用此计算,您将得到预期的260,这同样适用于YZ坐标或任何其他坐标系。但这仅在所有智能体具有完全相同的比例时才有效,因此请首先确保是这种情况;-),否则您需要做更 多的数学杂技才能得到正确的答案。

下一个级别的获取坐标

上面的比较简单,但是如果不知道有多少层嵌套怎么办?例如,你有一个箱子,在仓库内的存储区域内的一个箱子,的箱子,的箱子...... 的箱子里


通过递归添加父智能体的X坐标可以达到相同的结果:

Agent agent = myBox; 

double x = myBox.getX(); 

while (agent.getOwner != null) { 

agent = agent.getOwner();

double += agent.getX();

}

欢迎此处下载示例模型,或您也可以从运行或下载模型了解本文的功能:



  电话:010-62964229
  邮箱:support@carila.cn
  地址:北京市海淀区上地信息产业基地三街3号楼1门4层401
©2021 北京格瑞纳电子产品有限公司 版权所有 京ICP备19024141号 京公网安备 11010802029095号
 
QQ在线咨询
点击这里给我发消息 点击这里给我发消息
服务热线
010-62964229
E-mail
support@
carila.cn
地址:北京市海
淀区上地信息产
业基地三街3号