使用 nw:load-graphml 在 netlogo 中导入 link breed
Importing link breed in netlogo using nw:load-graphml
如何让 NetLogo 在导入 graphml 文件时识别 link 品种?
我在graphml文件中指定了品种属性,并在NetLogo中命名了品种。当使用 nw:load-graphml
导入 NetLogo 时,我相信 NetLogo 应该通过读取 graphml 文件中的 breed
属性将 breed
分配给 links
。如 NetLogo documentation 中所述:
...nw:load-graphml
will try to assign the attribute values defined in the GraphML file to NetLogo agent variables of the same names (this is not case sensitive). The first one it tries to set is breed
if it is there, so the turtle or link will get the right breed and, hence, the right breed variables.
然而,尽管在 NetLogo 和 graphml 文件中指定了 link 品种,links 在导入时被分配了通用的 "links" 品种。
示例 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
谢谢!
在 graphml 文件中将单数品种更改为复数品种(例如,从 ftf-tie
到 ftf-ties
)完全解决了这个问题。
如何让 NetLogo 在导入 graphml 文件时识别 link 品种?
我在graphml文件中指定了品种属性,并在NetLogo中命名了品种。当使用 nw:load-graphml
导入 NetLogo 时,我相信 NetLogo 应该通过读取 graphml 文件中的 breed
属性将 breed
分配给 links
。如 NetLogo documentation 中所述:
...
nw:load-graphml
will try to assign the attribute values defined in the GraphML file to NetLogo agent variables of the same names (this is not case sensitive). The first one it tries to set isbreed
if it is there, so the turtle or link will get the right breed and, hence, the right breed variables.
然而,尽管在 NetLogo 和 graphml 文件中指定了 link 品种,links 在导入时被分配了通用的 "links" 品种。
示例 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
谢谢!
在 graphml 文件中将单数品种更改为复数品种(例如,从 ftf-tie
到 ftf-ties
)完全解决了这个问题。