如何从 Netlogo 中的代理创建一个有序的属性列表?

How to create an ordenaded list of properties from agent in Netlogo?

我用以下内容定义了我的海龟。

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

我已经定义了名为

的全局变量

x列表 列表 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].

但我尝试过的方法不起作用。因为列表 return 是空的。 发生了什么,是不是有什么错误?

我无法重现您的错误,因此您可能需要包含更多调用这些命令的代码。例如,如果我 运行 此处定义的 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]