這其實很簡單!
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個鏈接。移動海龜可能會很慢,但是查詢網絡(例如通過網絡擴展)應該還是相當快的。