агенты делятся друг с другом своими списками - PullRequest
0 голосов
/ 05 марта 2019

Я делаю модель NetLogo. У каждого агента есть список из 5 целых чисел (список агентов). На каждом тике черепахи создают связь с одной другой черепахой и делятся друг с другом своим списком.

turtles-own [ agent-list ]
.
.
.    
ask turtles [
    create-link-with one-of other turtles
    set agent-list lput agent-list of link-neighbors agent-list
  ]

Я знаю, что приведенный выше код не работает, как мне это исправить?

1 Ответ

1 голос
/ 06 марта 2019

Самый простой способ объединить списки, как вы описали, вероятно, будет sentence:

turtles-own [ agent-list ]

to setup
  ca
  crt 3 [ 
    set agent-list map [random 10] range 5
  ]
  reset-ticks
end

to link-and-share
  ask turtles [
    let target one-of other turtles
    create-link-with target
    set agent-list sentence agent-list [agent-list] of target
    show agent-list
  ]
end

Тем не менее, вам придется внести некоторые изменения в зависимости от того, что вы на самом деле хотите сделать, поскольку это означает, что черепахи, связывающиеся позже в этой процедуре, могут потянуть agent-list черепах, которые уже изменили свои собственные agent-list. Таким образом, если черепаха 0 захватывает agent-list черепахи 1, то позже черепаха 4 захватывает agent-list черепахи 0, черепаха 4 будет иметь agent-list из 15 целых чисел, а не 10, как показано ниже:

(turtle 1): [6 1 5 4 7 3 9 8 1 1]
(turtle 0): [9 0 3 3 5 3 9 8 1 1]
(turtle 2): [3 9 8 1 1 9 0 3 3 5 3 9 8 1 1]
...