在导入graphml文件时如何使NetLogo识别链接品种?
我在graphml文件中指定了品种属性,并在NetLogo中命名了品种。使用nw:load-graphml
导入NetLogo时,我相信NetLogo应该通过读取graphml文件中的breed
属性将links
分配给breed
。如NetLogo documentation中所述:
...
nw:load-graphml
将尝试将GraphML文件中定义的属性值分配给相同名称的NetLogo代理变量(不区分大小写)。它尝试设置的第一个是breed
(如果存在),因此乌龟或链接将获得正确的品种,因此也将获得正确的品种变量。
但是,尽管在NetLogo和graphml文件中指定了链接品种,但在导入时仍为链接分配了通用的“链接”品种。
graphml文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
<key id="v_name" for="node" attr.name="name" attr.type="string"/>
<key id="e_breed" for="edge" attr.name="breed" attr.type="string"/>
<graph id="G" edgedefault="undirected">
<node id="n0">
<data key="v_name">1</data>
</node>
<node id="n1">
<data key="v_name">2</data>
</node>
<node id="n2">
<data key="v_name">3</data>
</node>
<node id="n3">
<data key="v_name">4</data>
</node>
<node id="n4">
<data key="v_name">5</data>
</node>
<edge source="n1" target="n2">
<data key="e_breed">ftf-tie</data>
</edge>
<edge source="n0" target="n3">
<data key="e_breed">ftf-tie</data>
</edge>
<edge source="n0" target="n4">
<data key="e_breed">ftf-tie</data>
</edge>
<edge source="n1" target="n4">
<data key="e_breed">ftf-tie</data>
</edge>
<edge source="n1" target="n4">
<data key="e_breed">sns-tie</data>
</edge>
</graph>
</graphml>
NetLogo导入代码:
extensions [ nw ]
undirected-link-breed [ ftf-ties ftf-tie ]
undirected-link-breed [ sns-ties sns-tie ]
to setup
clear-all
nw:load-graphml "test.graphml"
repeat 30 [ layout-spring turtles links 0.2 5 1 ]
end
谢谢!
答案 0 :(得分:2)
在graphml文件中从单品种改为多品种(例如,从ftf-tie
到ftf-ties
)完全解决了这个问题。