我需要保存所有的乌龟和链接,这样如果我对图形拓扑进行一些修改,我就可以在以后恢复它。现在,我正在使用的方法是通过外部文件加载/保存:
to save-graph
nw:save-graphml "mygraph.graphml"
end
to load-graph
ask turtles [ die ]
nw:load-graphml "mygraph.graphml"
end
但它非常慢,特别适用于大图。我试图简单地将海龟和链接分配给其他变量:
globals [saved-turtles saved-links]
to save-graph
set saved-turtles turtles
set saved-links links
end
to load-graph
set turtles saved-turtles
set links saved-links
end
但它说我不能简单地以这种方式分配海龟和链接:
它突出了我设置海龟和链接的路线。有没有办法不使用外部文件呢?
答案 0 :(得分:0)
这样做的方法很大程度上取决于您的目标以及图表两个版本之间的差异。几乎可以肯定的是,保存/加载graphml程序并不是最好的,并且不可能将所有海龟和链接与所有属性“保持”并在以后恢复它们...代理集是非常大的数据引用真实代理的结构,而不是真正的代理本身(据我所知),所以如果你以后更改代理,在agentset变量中有关它的信息,那么它之后的值就不高了。
如果图表版本之间只有少量差异,这个图表真的很大,可能最好为海龟和链接添加一些新属性(例如版本)以通知您版本element属于(例如,0:old,1:new,2:both),并且您可以通过编程方式轻松快速地恢复以前的状态。通过这种方式,您永远不会删除旧元素,只会将其隐藏到新状态,并保持状态之间的真正差异。
我在某些操作中使用了类似的方法来管理以前的NetLogo项目中的大图,它运行正常。希望这会对你有所帮助。