Netlogo:如何使用';将每只海龟移动到指定位置并停留一定时间;矩阵';?

Netlogo:如何使用';将每只海龟移动到指定位置并停留一定时间;矩阵';?,netlogo,Netlogo,我想把一组海龟移动到特定的位置,由每只海龟的数据决定,让它们在每个位置停留一段时间,然后再移动到下一个位置。我已经将位置编码为海龟,现在有了每个海龟的位置和时间矩阵。然而,我最终的错误是,我的轨迹和运动模式不是一个矩阵。我的代码在下面 设置位置和时间矩阵的代码(数据的小示例): 设置这些海龟的代码: to setup-mobile-herds ask mobile-herds [die] create-mobile-herds (initial-mobile-herds) [ ;

我想把一组海龟移动到特定的位置,由每只海龟的数据决定,让它们在每个位置停留一段时间,然后再移动到下一个位置。我已经将位置编码为海龟,现在有了每个海龟的位置和时间矩阵。然而,我最终的错误是,我的轨迹和运动模式不是一个矩阵。我的代码在下面

设置位置和时间矩阵的代码(数据的小示例):

设置这些海龟的代码:

to setup-mobile-herds
  ask mobile-herds [die]
  create-mobile-herds (initial-mobile-herds) [   ;
    set shape "cow"
    set size 0.9
    set color yellow

    set sus 30
    set inf 0
    set rec 0


    set trajectory movement-patterns 


    foreach n-values movement-patterns [ ?1 -> ?1 ] [ ?1 ->
      ask item ?1 movement-patterns [
        set mobile-S who
      ]
    ]


    move-to (matrix:get trajectory 0 0)   ;I'm getting an error here that says this is not a matrix
    set time-cap (matrix:get trajectory 1 0)
    set transmission-rate mobile-transmission-rate
  ]

 end
我需要将每只海龟分配到一行数据,并使用这些信息作为每个点的轨迹和时间。我已经尝试添加代码来吃掉每一行,但这也不起作用。我得到一个错误,项输入需要一个字符串,但得到了一个数字0

用于在使用行时删除行的代码:

set mobile-number count mobile-herds                                        ;provides number of herds
set mobile-index (mobile-number - (initial-mobile-herds - 1))               
set trajectory item mobile-index movement-patterns   

我想找出矩阵原语缺少什么?

您的基本问题是变量轨迹是一个列表,而不是矩阵。忽略与错误无关的所有移动和持续时间,下面是代码的精简版本,添加了一些输出:

extensions [matrix]

globals [ trajectory ]

to testme
  let herd1 matrix:from-row-list [[11 12 13 14 15] [30 23 2 14 10]]
  let herd2 matrix:from-row-list [[13 12 14 11 15] [20 12 3 35 6]]
  let movement-patterns (list herd1 herd2)
  set trajectory movement-patterns
  show trajectory
  show item 0 trajectory
  show matrix:get (item 0 trajectory) 0 0
end
你可以看到轨迹是一个矩阵列表,而不是一个矩阵。然后,您可以使用列表原语
获取单个矩阵,并使用
matrix:get
访问该单个矩阵


然而,我不知道这是否真的是你的问题,因为你说这是示例数据。您的真实数据是否与示例数据的设置方式相同?

您能否澄清您的输入数据与位置和时间的关系?例如,您的示例数据
[[11 12 13 14 15][30 23 2 14 10]
-是否转到位置11并停留30次,然后转到位置12并停留23次?JenB是的,这就是输入数据的设置方式。我首先有位置,对于每个位置,在移动到下一个位置之前,海龟在那里停留的时间都是相关的。我的其他数据都是以相同的方式设置的,但现在我认为我在将成群的海龟移动到每个位置时遇到了问题。我得到一个错误,
item
期望有一个代理,但得到了11,这是第一个位置。我将努力找出
现在移动到
项目
不需要代理,但
移动到
需要代理。我强烈建议您以更渐进的方式编写代码,将正确的数据放到正确的位置,然后选择移动,然后选择在正确的时间停留。目前,一个方面的问题似乎妨碍了其他问题的解决。
extensions [matrix]

globals [ trajectory ]

to testme
  let herd1 matrix:from-row-list [[11 12 13 14 15] [30 23 2 14 10]]
  let herd2 matrix:from-row-list [[13 12 14 11 15] [20 12 3 35 6]]
  let movement-patterns (list herd1 herd2)
  set trajectory movement-patterns
  show trajectory
  show item 0 trajectory
  show matrix:get (item 0 trajectory) 0 0
end