我使用行人库(使用ps源、ping Goto和ps汇),想要模拟人行道环境。这个模型的目标是得到行人之间的距离小于1m的数据。所以,我尝试计算行人之间的距离。在Any逻辑中,可以通过使用getX()、getY和getId(可以每秒计算)来收集行人的信息。但是我不知道如何选择行人代理并计算它们之间的距离。我的意思是,如果有10个行人(id:1, 2, 3...),如何每秒钟获得1和2、1和3、2和3之间的距离?
创建一个事件,每秒钟循环一次所有行人。确保所有行人都实际添加到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 :)
}
}