Anylogic——如何计算行人之间的距离
Posted
技术标签:
【中文标题】Anylogic——如何计算行人之间的距离【英文标题】:Anylogic-how to calculate distance between pedestrians 【发布时间】:2021-12-31 20:52:44 【问题描述】:我使用行人库(使用 ped source、ped Goto 和 ped sink)并想模拟人行道环境。该模型的目标是获取行人之间距离小于 1m 的数据。所以,我试着计算行人之间的距离。在Anylogic中,可以通过getX()、getY、getId(可以每秒计算)来收集行人的信息。 但我不知道如何选择行人代理并计算它们之间的距离。我的意思是,如果有 10 个行人(id: 1, 2, 3...),如何每秒获取 1 和 2、1 和 3、2 和 3 之间的距离?
【问题讨论】:
你看anylogic documentation了吗? 【参考方案1】:创建一个每秒循环遍历所有行人的事件。确保所有行人都实际添加到您的 PedSource 中的自定义代理群体中(更容易循环通过它们)。
在事件中,使用嵌套的for循环:
for (Pedestrian currPed : myPedPopulation)
for (Pedestrian currOtherPed : myPedPopulation)
if (currPed.equals(currOtherPed) break; // not needed
double distance = currPed.distanceTo(currOtherPed);
// do with this what you want :)
【讨论】:
我可以继续问“for (Pedestrian currPed : myPedPopulation)”的意思吗?我是Anylogic的初学者。我知道 currPed 意味着行人从代理类型“行人”中获得。什么是“myPedPopulation”?主要是所有的行人吗? (在我的模型中,现在我使用“for(Agent p: level.getPeds())”。) "for (Pedestrian p:level.getPeds())" 也应该有效。对于新问题,请始终打开新问题,请参阅benjamin-schumann.com/blog/2021/4/1/…。如果他们帮助您解决问题,请点赞答案。帮助有类似问题的未来用户以上是关于Anylogic——如何计算行人之间的距离的主要内容,如果未能解决你的问题,请参考以下文章