我有一个txt文件,其中存储了所需图形的有向链接。第一列和第二列是指节点的ID:" 1 122"表示节点1和节点122之间存在链接。
1 122
1 2
2 1
2 1000
...
我的问题:
a)是否可以将这样的txt文件导入NetLogo并用它创建图形?
b)该文件已超过100,000行。这会导致问题吗?
谢谢!
答案 0 :(得分:2)
实际上这很简单!
turtles-own [ node-id ]
to import-graph [ filename ]
file-open filename
while [ not file-at-end? ] [
let source get-or-create-node file-read
let target get-or-create-node file-read
ask source [ create-link-to target ]
]
end
to-report get-or-create-node [ id ]
let nodes turtles with [ node-id = id ]
if not any? nodes [
crt 1 [ set node-id id set nodes turtle-set self ]
]
report one-of nodes
end
file-read
可以实际读取文件中的数字。
这种方法的一个缺点是它必须搜索所有的海龟才能找到具有特定id的海龟。加载具有大量节点的图形时,这可能会很慢。在这些情况下,您可以使用table扩展来维护将节点ID映射到海龟的表格。
请注意,对于图形和网络文件的几种常见格式,您可以使用network扩展名来导入文件。下一个版本的NetLogo将支持更多的文件类型(虽然不是你在这里的文件类型)。
至于100,000:这是相当大的,不是因为文件的大小,而是因为如果每行有一个,那么模型中有100,000个链接。移动海龟可能会很慢,但查询网络(例如使用网络扩展)应该仍然相当快。