【发布时间】:2017-04-18 16:31:31
【问题描述】:
我正在尝试在 NetLogo 中为特定的交叉点建模。这是代码(在开发的早期阶段):
breed [ trams tram ]
breed [ cars car ]
to setup
clear-all
set-default-shape trams "bug"
set-default-shape cars "car"
setup-patches
reset-ticks
end
to go
make-new-car frequency-SN-1 1 -20 0
make-new-car frequency-SN-2 2 -20 0
make-new-car frequency-NS-3 -3 20 180
setup-trams tram-frequency
move-trams
want-turn
move-cars
tick
end
to setup-trams [ freq ]
if (random-float 100 < freq) and not any? turtles-on patch 0 -20 [
create-trams 1 [
setxy 0 -20
set heading 0
set color black
]
]
end
to make-new-car [freq x y head ]
if (random-float 100 < freq) and not any? turtles-on patch x y [
create-cars 1 [
setxy x y
set heading head
set color one-of base-colors
]
]
end
to move-cars
ask cars [
ifelse not can-move? 1
[ die ]
[ fd 1 ]
]
end
to want-turn
ask cars-on patch 2 -7 [
ifelse (random-float 100 < 100) and not any? turtles-on patch 3 -7
[ rt 90 fd 1
lt 90 fd 4
rt 90 fd 2
lt 90 fd 2
rt 90 fd 1]
[ fd 1 ]
]
end
to move-trams
ask trams [
ifelse not can-move? 1
[ die ]
[ fd 1 ]
]
end
to setup-patches
ask patches [
ifelse abs pxcor <= 3 or abs pycor <= 3
[ set pcolor black ]
[ set pcolor green - 1 ]
ifelse abs pxcor <= 0.5
[ set pcolor red ]
[ ]
ask patch 3 -2 [ set pcolor red ]
ask patch -2 -1 [ set pcolor red ]
ask patch -1 -1 [ set pcolor red ]
if pycor = -3 and pxcor > 8
[ set pcolor green - 1 ]
if pycor <= 3 and pycor >= -1 and pxcor < -3
[ set pcolor green - 1 ]
if pxcor = 3 and pycor <= -8
[ set pcolor green - 1 ]
]
end
导致我遇到问题的原因是想要转向程序。我想要一些汽车向右移动并向东行驶。但是我不能,到目前为止(刚开始使用 NetLogo)做不同的事情 - 只是为了让汽车在特定的补丁上消失并重新出现在另一个补丁上(它完全是由在 to-go 程序中运行的want-turn 程序引起的。它在每个滴答声中运行,但在想要转弯时,我移动汽车很多补丁,所以它看起来像传送)。
我可以在那里创造道路吗?因此,与其手动将汽车移动到另一个补丁,我只会询问这辆车是否满足特定补丁上的条件(在本例中:补丁 2 -7),如果是 - 它会移动替代道路。
我刚刚发现 NetLogo,欢迎提出任何想法
【问题讨论】:
-
嗨,Scag,请查看guidelines,以提高您获得有意义答案的机会。我无法按原样运行您的代码来重现您的模型(我认为需要界面上的一些输入),因此很难准确说出您想要什么。
-
frequency-SN-1、frequency-SN-2、frequency-NS-3 和 tram-frequency 是从 1 到 100 的接口值 - 它们仅表示函数 make 在每个刻度上创建的汽车数量-新车
-
很公平——我的意思是,您越容易重现您的问题,您就越有可能在 Stack Overflow 上获得有用的答案。通常这意味着删除与您的问题无关的内容;例如,在这种情况下,有轨电车和不重要的汽车。
标签: netlogo