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——如何计算行人之间的距离的主要内容,如果未能解决你的问题,请参考以下文章

Anylogic行人在特定时间到达

如何在 Anylogic 上按路线(而不是距离)获取时间?

在 Anylogic 中定义不同区域之间的距离

Anylogic - 使用特定参数限制行人的访问

计算如何在 anylogic 上工作?

Anylogic:如何计算累积和?