首页 > 解决方案 > Netlogo 列表:在列表中检测到一个特定补丁的最大距离的补丁 - 对于每只海龟

问题描述

我想在 Netlogo 中解决一个远远超出我的编程技能的问题。我想为每只乌龟建立一个列表,其中包含乌龟在这一“天”去的最远的补丁。到目前为止,我试图建立一个列表,为每只海龟存储所有补丁。现在我想计算——对于每只海龟——这个列表中离它的家有最大距离的补丁(隐藏)。我想每天晚上清空列表(这不是强制性的)到目前为止这是我的代码:

let temp-visited-patch-list lput patch-here temp-visited-patch-list
  if period = night
  [ 
    [foreach [temp-visited-patch-list] [x ->  set visited-patch-list lput (max x [distance hide]) visited-patch-list]]
    let temp-visited-patch-list []
]

所以我离提取每只海龟的值并不遥远——甚至我发布的部分也不起作用。我收到“预期的命令”错误。对于解决此问题的任何建议,我将不胜感激。最好的问候奥利维亚

标签: listnetlogo

解决方案


这段代码让海龟移动,记住它们最远的补丁并将这些补丁变成红色并计算平均距离。它应该有助于指导您如何使用补丁和海龟属性来解决您的问题。

globals [home-patch]

turtles-own
[ farpatch
  maxdistance
]

to setup
  clear-all
  set home-patch one-of patches
  ask home-patch
  [ set pcolor blue
    sprout 20
  ]
  reset-ticks
end

to go
  repeat 20 [movement]
  ask (patch-set [farpatch] of turtles) [set pcolor red]
  type "Average max distance:" print mean [maxdistance] of turtles
  tick
end

to movement
  ask turtles
  [ set heading random 360
    forward 1
    if distance home-patch > maxdistance
    [ set maxdistance distance home-patch
      set farpatch patch-here
    ]
  ]
end

推荐阅读