移动到最近的节点
Move to closest node
在我的模型中,我希望代理根据代理与集合中某些特定节点之间的距离移动到节点。
因此,在 moveto 块中,节点基于规范函数(见第一张图片),该函数应基于计算距离的 anylogic 中的函数。现在我的想法是创建一个循环遍历特定集合中所有节点的函数,并根据 getdistance() 函数选择最接近的节点(见图 2)。但是我不确定如何完成它以使函数 return 在目标节点部分被激活时成为最近的节点(在集合中)。
我也在考虑使用函数 getNearestNode 这可能会有帮助(但节点应该在特定的集合中?有人可以帮助我吗,因为我也无法在互联网上找到任何示例。
谢谢!
遍历集合中的所有节点,并使用dist.add(Agent.getDistance(currNode))
记录到名为dist
的变量的距离。然后选择最小值的索引。
int indexMin=0;
float min = dist.get(0);
for (int i=0; i<dist.size(); ++i) {
if (min > dist.get(i)) {
min = dist.get(i);
indexMin = i;
}
}
现在你知道距离最小的节点索引是indexMin
。您可以将集合中索引为 indexMin 的节点指定为目标。
你可以这样做,只需将它放在你圈出的节点部分:
top(collectionOfNodes,n->-agent.getDistance(n.getX(),n.getY()))
如果你想找到在同一个 z 上的那些,那么:
top(findAll(collectionOfNodes,a->a.getZ()==agent.getZ()),n->-agent.getDistance(n.getX(),n.getY()))
在我的模型中,我希望代理根据代理与集合中某些特定节点之间的距离移动到节点。 因此,在 moveto 块中,节点基于规范函数(见第一张图片),该函数应基于计算距离的 anylogic 中的函数。现在我的想法是创建一个循环遍历特定集合中所有节点的函数,并根据 getdistance() 函数选择最接近的节点(见图 2)。但是我不确定如何完成它以使函数 return 在目标节点部分被激活时成为最近的节点(在集合中)。
我也在考虑使用函数 getNearestNode 这可能会有帮助(但节点应该在特定的集合中?有人可以帮助我吗,因为我也无法在互联网上找到任何示例。
谢谢!
遍历集合中的所有节点,并使用dist.add(Agent.getDistance(currNode))
记录到名为dist
的变量的距离。然后选择最小值的索引。
int indexMin=0;
float min = dist.get(0);
for (int i=0; i<dist.size(); ++i) {
if (min > dist.get(i)) {
min = dist.get(i);
indexMin = i;
}
}
现在你知道距离最小的节点索引是indexMin
。您可以将集合中索引为 indexMin 的节点指定为目标。
你可以这样做,只需将它放在你圈出的节点部分:
top(collectionOfNodes,n->-agent.getDistance(n.getX(),n.getY()))
如果你想找到在同一个 z 上的那些,那么:
top(findAll(collectionOfNodes,a->a.getZ()==agent.getZ()),n->-agent.getDistance(n.getX(),n.getY()))