我认为nw:load-graphml的工作方式存在一个错误。
将此graphml文件与3个节点和3个无向品种的链接" parentals"和2个有针对性的品种的链接"扩散" :
<?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">
<!-- Created by igraph -->
<key id="e_breed" for="edge" attr.name="breed" attr.type="string"/>
<graph id="G" edgedefault="undirected">
<node id="n0">
</node>
<node id="n1">
</node>
<node id="n2">
</node>
<edge source="n0" target="n1">
<data key="e_breed">parentals</data>
</edge>
<edge source="n0" target="n2">
<data key="e_breed">parentals</data>
</edge>
<edge source="n1" target="n2">
<data key="e_breed">diffusions</data>
</edge>
<edge source="n0" target="n1">
<data key="e_breed">diffusions</data>
</edge>
</graph>
</graphml>
当您使用nw:load-graphml加载文件时,会发生的是所有&#34; parentals&#34;链接被创建,而&#34;扩散&#34;只是部分创造:只有&#34;扩散&#34;涉及未通过父级链接链接的节点的链接被创建,而其他链接被跳过...这是错误还是load-graphml原语中的预期行为?
这是一个简短的网络徽标代码,用于演示:
extensions [nw]
undirected-link-breed [parentals parental]
directed-link-breed [diffusions diffusion]
to setup
ca
nw:load-graphml "prova.graphml"
layout-circle turtles 10
end
答案 0 :(得分:1)
在您的NetLogo代码中,&#34;扩散&#34;链接是针对的。添加定向=&#34;真&#34;属性为prova.graphml文件中的扩散链接:
<edge source="n0" target="n1">
<data key="e_breed">parentals</data>
</edge>
<edge source="n0" target="n2">
<data key="e_breed">parentals</data>
</edge>
<edge directed="true" source="n1" target="n2">
<data key="e_breed">diffusions</data>
</edge>
<edge directed="true" source="n0" target="n1">
<data key="e_breed">diffusions</data>
</edge>
我尝试了更正的文件,我认为链接现在可以了:
ask links [show self]
结果:
(diffusion 2 1): (diffusion 2 1)
(diffusion 0 2): (diffusion 0 2)
(parental 0 1): (parental 0 1)
(parental 0 2): (parental 0 2)
在当前版本的NW扩展中,load-graphml
函数中有一些open issues。我认为在导入文件后添加一些验证是一个好主意,以检查链接&#39;一致性。也许每个&#34;定向的is-directed-link?
记者和#34;链接面包,并计算链接和比较预期的链接数。