我只是在学习使用netlogo,并且我正在尝试编写一个简单的模型,以使不同的代理(品种)执行不同的任务。通过选择器选择出现在界面/ 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
就像我说的那样,代码似乎没有任何问题,但是当我按下设置按钮时,只会出现不同颜色的补丁...
答案 0 :(得分:1)
您有ask turtles [create-bichos]
行。这有三个问题。 (1)您还没有乌龟,所以没有乌龟要问,因此不会调用create-bichos过程。 (2)如果您确实已经有一些乌龟,那么这些乌龟中的每一个都会调用该过程,因此它们会要求补丁多次执行操作。 (3)breed
是乌龟的装束,您不能将其用作选择器的名称。
作为一名学习者,您需要编写更小的代码,并确保每个代码都可以工作,然后再继续。因此,让我们想象一下,从创建海龟开始(因为这是您的问题),您的选择器被称为“繁殖选择”。解决方案是简单地删除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
答案 1 :(得分:0)
使用create agent command private void MainForm_Activated(object sender, EventArgs e)
{
if (partner!= null)
partner.WindowState = FormWindowState.Normal;
}
或create-escarabajos <number>
创建自定义品种的新代理