【发布时间】:2019-01-21 22:45:31
【问题描述】:
如何让 NetLogo 在导入 graphml 文件时识别链接品种?
我在 graphml 文件中指定了品种属性,并在 NetLogo 中命名了品种。当使用nw:load-graphml 导入NetLogo 时,我相信NetLogo 应该通过读取graphml 文件中的breed 属性将breed 分配给links。如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
谢谢!
【问题讨论】:
-
您的链接品种是否具有相同数量的变量?您可以使用声明
set breed <new-breed>更改品种,但如果品种具有不同的变量集,这将无济于事。可能您需要做一些丑陋的事情,例如在 graphml 中读取通用链接品种并具有诸如“var1”、“var2”之类的变量。阅读后,您可以同时更改品种和属性变量。 -
@JenB 值得庆幸的是,所有链接品种都具有相同的变量!我一直无法阅读非繁殖链接,然后是
set breed <link-breed>,因为 NetLogo 不允许在同一个世界中出现繁殖和非繁殖链接。我错过了什么吗? -
更新:在文件中从单数更改为复数(例如,从
ftf-tie到ftf-ties)解决了这个问题。见:github.com/NetLogo/NW-Extension/issues/189