Netlogo:如何在世界中部用一块特定的补丁来阻止乌龟感染某些蜱虫



我是个初学者。我已经查过编程指南词典了。我正在考虑一种双车道道路(如1号路、2号路)的模式。此外,我正在考虑一个模型,在该模型中,指定补丁((10 0)和(20 2))指定的乌龟停止10次。然而,我不知道如何为每条道路编写和指定xcor和ycor的特定参数(例如,道路1上的xcor和ycor,道路2上的xcr和ycor)。而且我也不知道如何在设置的速度语法中编写和控制参数"速度"。以下是小模型示例。为了避免复杂性,此示例模型只有一条路。这个样本模型失败了,乌龟没有停在补丁(10 0)上。也许我需要你的建议。非常感谢。

globals [ count-tick ]
turtles-own [ speed flag-A ]
to setup
clear-all
resize-world 0 50 min-pycor max-pycor
ask patches [ setup-road ]
reset-ticks
end
to setup-road
if ( pycor < 1 ) and ( pycor > -1 ) [ set pcolor white ]
end
to create-car
crt 1 [
set color blue
setxy min-pxcor 0
set heading 90
set speed 1
]
end

这是模型的主体。

to go
if (count turtles-on patch 0 0 = 0) [
create-car
ask (turtles-on patch 0 0) [
set flag-A FALSE
]
]
ask (turtles-on patch 10 0) [
set flag-A TRUE
set count-tick 10
]
if count-tick > 0 [
set count-tick count-tick - 1
ask (turtles-on patch 10 0) with [flag-A = TRUE]
[
set color red
set speed 0
]
]
if count-tick = 0 [
ask (turtles-on patch 10 0) with [flag-A = TRUE]
[
set speed 1
set flag-A FALSE
]
]
if (count turtles-on patch max-pxcor 0 > 0) [
ask min-one-of turtles [who][
die
]
]
set-speed
tick
end

这是控制速度的并行更新。

to set-speed
ask turtles with [ xcor < 10 ] [
let turtle-ahead one-of turtles-on patch-ahead 1
ifelse turtle-ahead = nobody
[ set speed 1
fd speed
]
[ set speed 0
]
]
ask turtles with [ 10 < max-pxcor ] [
let turtle-ahead one-of turtles-on patch-ahead 1
ifelse turtle-ahead = nobody
[ set speed 1
fd speed
]
[ set speed 0
]
]
end

好吧,作为一般规则,一次向模型中添加一个元素。测试该元素,然后在一切正常后才添加下一个元素。在你的情况下,你试图在没有任何一个工作的情况下做几件事——移动汽车,让它们停10次,让其中一个死在路的尽头,做一些速度不明确的事情,可能还有其他我没有立即注意到的事情。

这里还有几个概念问题——最大的问题是count tick是一个海龟变量,但您将其视为全局变量,因为if count-tick...应该在ask turtles块内。这样想吧,如果你创建了10辆车,那么变量count tick有10个副本,那么你要用if语句检查哪一个。

你也没有告诉你的乌龟移动,但这可能在你没有显示的代码中。尽可能多地保留你的代码,这就是我认为你正在尝试做的。这将在左边创建一辆车,让它向右移动,在正确的位置暂停10次,然后变红,然后再次移动,当它到达终点时杀死它。

globals [ count-tick ]
turtles-own [ speed flag-A ]
to setup
clear-all
resize-world 0 50 min-pycor max-pycor
ask patches [ setup-road ]
reset-ticks
end
to setup-road
if ( pycor < 1 ) and ( pycor > -1 ) [ set pcolor white ]
end
to create-car
crt 1 [
set color blue
setxy min-pxcor 0
set heading 90
set speed 1
set flag-A FALSE
]
end
to go
if (count turtles-on patch 0 0 = 0) [
create-car
]
ask (turtles-on patch 10 0) [
set flag-A TRUE
set count-tick 10
]
ask (turtles-on patch 10 0) with [flag-A = TRUE] [
set color red
set speed 0
set count-tick count-tick - 1
if count-tick = 0 [
set speed 1
set flag-A FALSE
]
]
if (count turtles-on patch max-pxcor 0 > 0) [
ask min-one-of turtles-on patch max-pxcor 0 [who][
die
]
]
ask turtles [ forward speed ]
tick
end

最新更新