我的 netlogo 代码似乎没有任何问题,但我的代理没有出现
my netlogo code doesnt seem to have any problems, but my agents dont appear
我刚刚开始学习使用 netlogo,我正在尝试编写一个简单的模型来让不同的代理 [breeds] 执行不同的任务。 interface/universe 上出现的代理是使用选择器选择的...
这是我在代码中写的:
breed [escarabajos escarabajo]; type of beetles that survive in forests
breed [beetles beetle]; type of beetles that survive in agricultural areas
;For each breed there are three sub-types of beetles, depending on how far they can move (vagility) this is also selected with a chooser.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SETUP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
to setup
ca
setup-patches
set-default-shape turtles "bug"
ask turtles [create-bichos]
reset-ticks
end
to setup-patches
ask n-of 100 patches [ set pcolor green ]
ask n-of 500 patches [set pcolor yellow]
end
to create-bichos
if breed = "escarabajo" [
ask patches with [ pcolor = green ] [
let k forest-carrying-capacity ; what I want is to create the maximum amount of beetles ;possible per patch, and this maximum is determined with a carrying capacity value, which is set ;with a slider....
sprout-escarabajos k [set color 116 set size 6]
]
]
if breed = "beetle" [
ask patches with [ pcolor = yellow ] [
let k agricultural-carrying-capacity
sprout-beetles k [set color 76 set size 6]
]
]
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
to go
if ticks = 72 [stop]
ask turtles [rt random 360
move
]
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;; PROCEDURES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
to move
if vagility = "High"
[ask turtles [
move-to one-of patches in-radius 2
]
]
if vagility = "medium"
[ask turtles [
move-to one-of neighbors
]
]
if vagility = "low"
[ask turtles [
move-to one-of neighbors4
]
]
end
就像我说的,代码似乎没有任何问题,但是当我点击设置按钮时,只出现了不同颜色的补丁...
使用 create agent command create-escarabajos <number>
或 create-beetles <number>
创建自定义品种的新代理人
您有行 ask turtles [create-bichos]
。这有三个问题。 (1) 你还没有海龟,所以没有要问的海龟,所以没有调用create-bichos过程。 (2) 如果你已经有了一些海龟,那么每只海龟都会调用这个过程,所以它们会多次要求补丁做事情。 (3) breed
是海龟的属性,不能作为选择器的名字。
作为初学者,您需要编写更小的代码,并确保每个代码都能正常工作,然后再继续。因此,让我们假设您从创建海龟开始(因为这是您的问题)并且您的选择器称为 'breed-select'。解决方案是简单地删除 ask turtles
,但作为第一步,您应该在引入更多代码之前简单地创建固定数量的海龟。
breed [escarabajos escarabajo]; type of beetles that survive in forests
breed [beetles beetle]; type of beetles that survive in agricultural areas
to setup
clear-all
setup-patches
set-default-shape turtles "bug"
create-bichos
reset-ticks
end
to setup-patches
ask n-of 100 patches [ set pcolor green ]
ask n-of 500 patches [set pcolor yellow]
end
to create-bichos
if breed-selector = "escarabajo"
[ ask patches with [ pcolor = green ]
[ sprout-escarabajos 5 [set color 116 set size 6]
]
]
if breed-selector = "beetle"
[ ask patches with [ pcolor = yellow ]
[ sprout-beetles 5
]
]
end
我刚刚开始学习使用 netlogo,我正在尝试编写一个简单的模型来让不同的代理 [breeds] 执行不同的任务。 interface/universe 上出现的代理是使用选择器选择的...
这是我在代码中写的:
breed [escarabajos escarabajo]; type of beetles that survive in forests
breed [beetles beetle]; type of beetles that survive in agricultural areas
;For each breed there are three sub-types of beetles, depending on how far they can move (vagility) this is also selected with a chooser.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SETUP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
to setup
ca
setup-patches
set-default-shape turtles "bug"
ask turtles [create-bichos]
reset-ticks
end
to setup-patches
ask n-of 100 patches [ set pcolor green ]
ask n-of 500 patches [set pcolor yellow]
end
to create-bichos
if breed = "escarabajo" [
ask patches with [ pcolor = green ] [
let k forest-carrying-capacity ; what I want is to create the maximum amount of beetles ;possible per patch, and this maximum is determined with a carrying capacity value, which is set ;with a slider....
sprout-escarabajos k [set color 116 set size 6]
]
]
if breed = "beetle" [
ask patches with [ pcolor = yellow ] [
let k agricultural-carrying-capacity
sprout-beetles k [set color 76 set size 6]
]
]
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
to go
if ticks = 72 [stop]
ask turtles [rt random 360
move
]
end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;; PROCEDURES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
to move
if vagility = "High"
[ask turtles [
move-to one-of patches in-radius 2
]
]
if vagility = "medium"
[ask turtles [
move-to one-of neighbors
]
]
if vagility = "low"
[ask turtles [
move-to one-of neighbors4
]
]
end
就像我说的,代码似乎没有任何问题,但是当我点击设置按钮时,只出现了不同颜色的补丁...
使用 create agent command create-escarabajos <number>
或 create-beetles <number>
创建自定义品种的新代理人
您有行 ask turtles [create-bichos]
。这有三个问题。 (1) 你还没有海龟,所以没有要问的海龟,所以没有调用create-bichos过程。 (2) 如果你已经有了一些海龟,那么每只海龟都会调用这个过程,所以它们会多次要求补丁做事情。 (3) breed
是海龟的属性,不能作为选择器的名字。
作为初学者,您需要编写更小的代码,并确保每个代码都能正常工作,然后再继续。因此,让我们假设您从创建海龟开始(因为这是您的问题)并且您的选择器称为 'breed-select'。解决方案是简单地删除 ask turtles
,但作为第一步,您应该在引入更多代码之前简单地创建固定数量的海龟。
breed [escarabajos escarabajo]; type of beetles that survive in forests
breed [beetles beetle]; type of beetles that survive in agricultural areas
to setup
clear-all
setup-patches
set-default-shape turtles "bug"
create-bichos
reset-ticks
end
to setup-patches
ask n-of 100 patches [ set pcolor green ]
ask n-of 500 patches [set pcolor yellow]
end
to create-bichos
if breed-selector = "escarabajo"
[ ask patches with [ pcolor = green ]
[ sprout-escarabajos 5 [set color 116 set size 6]
]
]
if breed-selector = "beetle"
[ ask patches with [ pcolor = yellow ]
[ sprout-beetles 5
]
]
end