Netlogo 你可以';不要在海龟上下文中使用Migrate,因为Migrate只是一个观察者
我设法建立了我的小模型,但我确实得到了一个错误,但不知道为什么 附言:我是一个该死的初学者 错误代码为: 不能在海龟上下文中使用migrate,因为migarte只是一个观察者 那我该怎么办 谢谢你的回答Netlogo 你可以';不要在海龟上下文中使用Migrate,因为Migrate只是一个观察者,netlogo,Netlogo,我设法建立了我的小模型,但我确实得到了一个错误,但不知道为什么 附言:我是一个该死的初学者 错误代码为: 不能在海龟上下文中使用migrate,因为migarte只是一个观察者 那我该怎么办 谢谢你的回答 breed [fish a-fish] breed [boats boat] boats-own [profit] to setup clear-all ask patches [set pcolor blue] set-default-shape fish "fish"
breed [fish a-fish]
breed [boats boat]
boats-own [profit]
to setup
clear-all
ask patches [set pcolor blue]
set-default-shape fish "fish"
create-fish initial-number-fish
[
set color grey
set size 1.0
setxy random-xcor random-ycor
]
set-default-shape boats "boat"
create-boats initial-number-boats
[
set color black
set size 1.5
set profit random (1 * profit-per-fish)
setxy random-xcor random-ycor
]
reset-ticks
end
to go
if not any? turtles [stop]
ask fish
[
move
fish-reproduce
]
ask boats
[
move-boats
catch-fish
death
reproduce-boats
migrate
]
tick
end
to move
rt random 50
lt random 50
fd 1
end
to fish-reproduce
if random-float 100 < fish-growth
[hatch 1 [rt random-float 360 fd 1]]
end
to move-boats
rt random 50
lt random 50
fd 1
set profit profit - 0.1
end
to catch-fish
let prey one-of fish-here
if prey != nobody
[ask prey [die]
set profit profit + profit-per-fish]
end
to death
if profit < 0 [die]
end
to reproduce-boats
if profit > 1
[
set profit (profit / 2)
hatch 1 [rt random-float 360 fd 1]]
end
to migrate
if random-float 100 < random-spawn-rate
[create-turtles 2 [rt random-float 360 fd 1]]
end
养殖[鱼与鱼]
繁殖[船]
自有[利润]
设置
清除所有
询问补丁[设置颜色为蓝色]
设置默认形状鱼“鱼”
创建fish初始编号fish
[
设置颜色为灰色
设置大小为1.0
setxy随机xcor随机ycor
]
将默认形状设置为“船”
创建船只初始编号船只
[
将颜色设置为黑色
套装尺寸1.5
随机设置利润(每条鱼1*利润)
setxy随机xcor随机ycor
]
重置滴答声
结束
外带
如果没有?乌龟[停]
问鱼
[
移动
鱼繁殖
]
问船
[
划船
捕鱼
死亡
复制船只
迁移
]
打上钩
结束
移动
rt随机50
lt随机50
fd 1
结束
鱼繁殖
如果随机浮动100<鱼类生长
[舱口1[rt随机浮动360 fd 1]]
结束
划船
rt随机50
lt随机50
fd 1
设定利润-0.1
结束
捕鱼
让我们在这里捕食一条鱼吧
如果是猎物!=没有人
[问猎物[死]
设定利润+每条鱼的利润]
结束
至死
如果利润<0[死亡]
结束
复制船只
如果利润>1
[
设定利润(利润/2)
图案填充1[rt随机浮动360 fd 1]]
结束
迁移
如果随机浮动100<随机繁殖率
[创建海龟2[rt随机浮动360 fd 1]]
结束
在NetLogo中创建新海龟有3种不同的原语:
create
(观察者)、hatch
(海龟)和sprout
(补丁)。
每一个都只在特定的上下文中起作用。
这意味着您必须了解调用过程的上下文
在您的示例中,您正在询问海龟
(特别是询问船只
)上下文中调用创建海龟
原语。这意味着您处于海龟上下文中,而不是观察者上下文中,因此不允许使用创建海龟
要解决您的问题,您只需将创建海龟
替换为孵化
(或孵化
,如孵化鱼
,如果您想在特定品种中繁殖新的代理)