Netlogo 你可以';不要在海龟上下文中使用Migrate,因为Migrate只是一个观察者

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"

我设法建立了我的小模型,但我确实得到了一个错误,但不知道为什么

附言:我是一个该死的初学者

错误代码为:

不能在海龟上下文中使用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"
  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
(补丁)。 每一个都只在特定的上下文中起作用。 这意味着您必须了解调用过程的上下文

在您的示例中,您正在
询问海龟
(特别是
询问船只
)上下文中调用
创建海龟
原语。这意味着您处于海龟上下文中,而不是观察者上下文中,因此不允许使用
创建海龟

要解决您的问题,您只需将
创建海龟
替换为
孵化
(或
孵化
,如
孵化鱼
,如果您想在特定品种中繁殖新的代理)