首页 > 解决方案 > Netlogo 代码在同一个补丁上添加人员

问题描述

我正在积极尝试重新编程交通 2 车道的示例模型,但是通过我自己的添加,我添加了看起来像底部有人的人行道,但是当我运行代码时,它添加了有时需要的 4 个人在同一修补。我该如何解决?

to make-people
create-people 4 [setup-turtles] 
end

to setup-turtles  ;;Turtle Procedure
set shape "person"
let y-coordinates (list -8 -7 -6 -5)
let remove-index random length y-coordinates
set ycor item remove-index y-coordinates
set y-coordinates remove-item remove-index y-coordinates
set xcor 19 



end


其余代码与Netlogo 中名为Traffic 2 Lanes 的社会科学下的示例模型相同,仅与一个品种的人不同。

标签: netlogo

解决方案


问题是每个人都在y-coordinates为自己的创作再次定义列表。该列表不会从一个人的创建延续到下一个人,因此一个人从列表中删除其中一项不会对下一个人在创建时重新定义的列表产生任何影响。解决此问题的最简单方法是将其定义y-coordinates为一个global变量,以便每个人都在同一个列表上工作。因此,当一个人消除一个坐标时,下一个人将得到那个缩短的列表。尝试

breed [people person]
globals [y-coordinates]

to make-people
  set y-coordinates (list -8 -7 -6 -5)
  create-people 4 [setup-turtles] 
end

to setup-turtles  ;;Turtle Procedure
  set shape "person"
  let remove-index random length y-coordinates
  set ycor item remove-index y-coordinates
  set y-coordinates remove-item remove-index y-coordinates
  set xcor 19 
  show y-coordinates
end

show 语句将显示y-coordinates列表确实被每只新海龟缩短了。


推荐阅读