每个刻度网徽标释放两只海龟

问题描述 投票:1回答:1

我目前正在研究一个模型,可以在购物时模拟行人运动。因此,我已经找到了一些我需要的东西,但是我一直试图找出某个补丁中的[[如何释放每只tick 2只海龟(像一对一样)。两只乌龟同时被释放。我的代码基于蚂蚁行,但是它一次只释放了所有行人,然后海龟开始行走。在所有海龟释放后,the虫也会开始。我希望海龟在进入时开始“行走”。这是我的代码:

breed [ leadvisitors leadvisitor ] breed [ visitors visitor ] to setup clear-all setup-visitors reset-ticks end to setup-visitors create-leadvisitors num-of-pedestrians * 0.1 ;;create 10% of the total number of pedestrians [ set demand-type "none" set color black set size 1 setxy 0 16 set heading 180 set pen-size 1 set destination one-of patches set wait-time -1 set demand-lvl 0 ] create-visitors (num-of-pedestrians - (num-of-pedestrians * 0.1)) [ set demand-type 0 set size 1 setxy 0 16 set heading 180 set pen-size 1 set destination one-of patches set wait-time -1 set demand-lvl 1 set attracted? false ] ] end to go if turtles = 0 [ stop ] ask turtles [ set-demand-type have-demand ] if ticks > 100 [ stop ] tick display-labels end ;;;;; visitor's internal state of demand ;;;;; to set-demand-type if demand-type = 0 [ set demand-type "food" set color red let target (patches in-cone visitor-vision-depth visitor-view-angle) with [pcolor = red] ] end to have-demand if demand-lvl = 0 [ ifelse wait-time = -1 [ stroll ] [ set wait-time wait-time - 1 if wait-time = 0 [ stroll ]] ] if demand-lvl = 1 [ ifelse wait-time = -1 [ stroll evaluate ] [ set wait-time wait-time - 1 if wait-time = 0 [ stroll evaluate ]] ] end to stroll if any? neighbors with [ pcolor = gray - 3 ] [ die ] ifelse any? neighbors with [ pcolor = gray or pcolor = orange or pcolor = blue or pcolor = red] [ facexy exitpt-x exitpt-y ] [ rt random-float visitor-view-angle lt random-float visitor-view-angle ] fd walking-speed end to evaluate if any? neighbors with [ pcolor = gray or pcolor = orange or pcolor = blue or pcolor = gray - 4 or pcolor = gray - 3 or pcolor = red + 2] [ facexy exitpt-x exitpt-y rt random-float visitor-view-angle lt random-float visitor-view-angle fd walking-speed ] let _mycolor color if any? (patches in-cone visitor-vision-depth visitor-view-angle) with [pcolor = _mycolor] [ let new-target max-one-of ( patches with [pcolor = _mycolor] in-cone visitor-vision-depth visitor-view-angle) [patch-influence] let dist-to-new-target min-one-of (patches with [pcolor = _mycolor] in-cone visitor-vision-depth visitor-view-angle) [distance myself] face new-target set heading towards new-target fd walking-speed set attracted? true attracted-and-visiting re-evaluate ] end to attracted-and-visiting if pcolor = red + 2 [ set heading towards one-of patches with [pcolor = red + 2] fd 0 set patch-popularity patch-popularity + 1 set wait-time avg-waiting-time if count turtles-here > 0 [ set num-of-visitors num-of-visitors + 1 ] set plabel num-of-visitors ] end to re-evaluate let _mycolor color if not any? (patches in-cone visitor-vision-depth visitor-view-angle) with [pcolor = _mycolor] [ set attracted? false ] ifelse choose? [set heading towards one-of patches with [pcolor = _mycolor]] [facexy exitpt-x exitpt-y] end to-report choose? report random 2 = 0 end
我希望有人可以帮助我。预先谢谢你。
time netlogo release agent
1个回答
0
投票
在查看您的问题时不清楚,您是要在与原始访问者相同的补丁上还是在特定的不同补丁上创建新的海龟(我假设它们是visitors)。如果是前者,那么您可以简单地使用与setup-visitors中相同的代码,但是放置在go过程中。

to go if turtles = 0 [ stop ] ask turtles [ set-demand-type have-demand ] if ticks > 100 [ stop ] create-visitors 2 [ set demand-type 0 set size 1 set heading 180 set pen-size 1 setxy 0 16 set destination one-of patches set wait-time -1 set demand-lvl 1 set attracted? false ] tick display-labels end

这将在每个刻度上在visitors上创建新的patch 0 16。但是,如果您想在另一个补丁上创建新的visitors,例如红色的补丁之一,则可以在go过程中让补丁sprout为新的访问者。 

ask one-of patches with [pcolor = red] [ sprout-visitors 2 [ set demand-type 0 set size 1 set heading 180 set pen-size 1 set destination one-of patches set wait-time -1 set demand-lvl 1 set attracted? false ] ]

请注意,这里没有设置新访客的xy坐标,所以他们从发芽他们的补丁开始。

希望这会有所帮助,查尔斯

© www.soinside.com 2019 - 2024. All rights reserved.