【发布时间】:2020-08-19 23:40:57
【问题描述】:
我希望在模拟启动时将网络中的每个矩形节点动态添加到特定集合中。我这样做是因为我将拥有 1000 多个节点并且手动添加它们是不可取的。
每个节点都使用约定命名,并以“lane”或“grid”开头。
如果它是“车道”,那么它会添加到一个集合中,而“网格”会添加到另一个集合中。
目前我正在使用代码:
for (Node n : network.nodes()) {
String layoutIdentifier = n.getName().split("_")[0];
if (layoutIdentifier.equals("lane")) {
laneNodes.add(n);
traceln(n);
//Lane newLane = add_lanes(n);
} else if (layoutIdentifier.equals("grid")) {
gridNodes.add(n);
}
}
这工作正常,并将它们作为节点添加到集合中,但我真的很想将它们添加到矩形节点的集合(它们就是这样),因为我需要在我的代理中使用这种类型。
我尝试了这段代码(将 Node 更改为 RectangularNode):
for (RectangularNode n : network.nodes()) {
String layoutIdentifier = n.getName().split("_")[0];
if (layoutIdentifier.equals("lane")) {
laneNodes.add(n);
traceln(n);
//Lane newLane = add_lanes(n);
} else if (layoutIdentifier.equals("grid")) {
gridNodes.add(n);
}
}
但得到错误 类型不匹配:无法从元素类型 Node 转换为 RectangularNode。位置:pbl_congestion_simulation/Main - 代理类型
有没有办法将 Node 转换为 RectangularNode?还是一种更好的方法来遍历网络中的所有节点并将它们作为矩形节点添加到相同的集合中?
我可以看到节点被引用为 com.anylogic.engine.markup.RectangularNode@293cc7d0 所以希望可以访问 RectangularNode 部分。
非常感谢。
【问题讨论】:
标签: anylogic