Как создать упорядоченный список свойств из агента в Netlogo? - PullRequest
0 голосов
/ 03 апреля 2019

Я определил своих черепах следующим образом:

turtles-own[val1, posx,posy,value]

И я определил глобалы, называемые

xlist ylist vallist

То, что я начинаю с пустого.Теперь я хочу создать список, который для любой черепахи имеет одно значение.

Я сделал

to fillLists 
 set xlist lput posx xlist
 set ylist lput posy ylist
 set vallist lput value vallist
end 

И это вызывается с помощью:

 ask turtles[fillLists]

Например, если яесть 3 черепахи с именем val1 Допустим, у нас есть:

t1 =[Mike, 1, 10, 100]
t2 =[Sasha, 2, 20, 200]
t3 =[Rocco, 3, 30, 300]

Я хотел бы создать список l1, l2, l3, l4.Где содержимое:

l1= [Mike, Sasha, Rocco]
l2= [1,2,3]
l3= [10,20,30]
l4= [100,200,300].

Но то, что я пробовал, не работает.Потому что список возвращен пустым.Что происходит, это какая-то ошибка?

1 Ответ

1 голос
/ 04 апреля 2019

Я не могу воспроизвести вашу ошибку, поэтому вам, возможно, придется добавить больше кода, где вызываются эти команды. Например, если я запускаю setup, как определено здесь:

globals [ nameslist xlist ylist vallist ]
turtles-own [ val1 posx posy value ]

to setup
  ca
  set nameslist []
  set xlist []
  set ylist []
  set vallist []

  crt 1 [ set val1 "Mike" set posx 1 set posy 10 set value 100 ]
  crt 1 [ set val1 "Sasha" set posx 2 set posy 20 set value 200 ]
  crt 1 [ set val1 "Rocco" set posx 3 set posy 30 set value 300 ]

  ask turtles [ fill-lists ]

  print nameslist
  print xlist
  print ylist
  print vallist  
  reset-ticks
end

to fill-lists
  set nameslist lput val1 nameslist
  set xlist lput posx xlist 
  set ylist lput posy ylist
  set vallist lput value vallist
end

Я получаю вывод вроде:

[Mike Rocco Sasha]
[1 3 2]
[10 30 20]
[100 300 200]

Однако вы можете обнаружить, что проще просто использовать of, чтобы запросить у черепах интересующую вас переменную. Например, приведенный ниже код выполняет более или менее тот же вывод, хотя его использование может зависеть от ваших потребностей:

turtles-own [ val1 posx posy value ]

to setup
  ca

  crt 1 [ set val1 "Mike" set posx 1 set posy 10 set value 100 ]
  crt 1 [ set val1 "Sasha" set posx 2 set posy 20 set value 200 ]
  crt 1 [ set val1 "Rocco" set posx 3 set posy 30 set value 300 ]

  print [val1] of turtles
  print [posx] of turtles
  print [posy] of turtles
  print [value] of turtles

  reset-ticks
end

Выход:

[Sasha Mike Rocco]
[2 1 3]
[20 10 30]
[200 100 300]
...