netlogo - 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 的社会科学下的示例模型相同,仅与一个品种的人不同。
解决方案
问题是每个人都在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
列表确实被每只新海龟缩短了。