Импорт породы в netlogo с помощью nw: load-graphml - PullRequest
0 голосов
/ 22 января 2019

Как я могу заставить NetLogo распознавать породы при импорте файла graphml?

Я указал атрибуты породы в файле graphml и назвал породы в NetLogo. При импорте в NetLogo с использованием nw:load-graphml я считаю, что NetLogo должен назначить breed на links, прочитав атрибут breed в файле graphml. Как описано в документации NetLogo :

... 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

Спасибо!

1 Ответ

0 голосов
/ 23 января 2019

Переход от единственного числа к множественному в файле graphml (например, от ftf-tie до ftf-ties) полностью решает эту проблему.

См .: https://github.com/NetLogo/NW-Extension/issues/189

...