bRam
bRam

Reputation: 33

You can't use Migrate in a turtle context, because migrate is observer-only

I managed to build my small model, but i do get an error, but don't know why?

Ps: i'm a bloody beginner

The Error code is:

You can't use migrate in a turtle context, because migarte ia observer-only.

So what can I do?

Thank you for your answers.

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

Upvotes: 2

Views: 791

Answers (1)

nldoc
nldoc

Reputation: 1199

There are 3 different primitives for creating new turtles in NetLogo: create (observer), hatch (turtle) and sprout (patch). Each one works only in a specific context. This means you have to be aware of the context in which you are calling your procedure.

In your example, you are calling the create-turtles primitive inside of an ask turtles (specifically ask boats) context. Which means you are in a turtle context and not in an observer context and therefore create-turtles is not allowed to use.

To solve your problem, you just have to replace create-turtles by hatch (or hatch-<breed>, like hatch-fish if you want to spawn new agents in a specific breed).

Upvotes: 3

Related Questions