+ ожидаемый ввод будет числом, но вместо этого получил значение ИСТИНА / ЛОЖЬ - PullRequest
0 голосов
/ 09 февраля 2019

Продолжайте получать эту ошибку, но переменные не являются истинными / ложными ... они являются числами.Прилагается полный код для модели ниже.Раздел с ошибкой прикрепляется первым, за которым следует весь код (включая раздел об ошибке)

Модель показывает черепах в виде коров и пятен в виде травы.Ошибка возникает из-за функции Grow-Grass, где каждый тик, патчи растут на определенную величину.Раньше это работало, но теперь возвращает ошибку ...

"+ ожидалось, что ввод будет числом, но вместо этого получил TRUE / FALSE true."

to grow-grass
      ask patches [
        set grass-energy grass-energy + regrow-energy
      ]
    end


turtles-own [energy]
patches-own [grass-energy]


to setup
  clear-all
  setup-patches
  setup-turtles
  reset-ticks
end

to scatter
  clear-turtles
  setup-turtles
end


to go
  if ticks >= time-limit [ stop ]
  move-turtles
  check-patches
  eat-grass
  grow-grass
  reproduce
  check-death
  tick
end

to move-turtles
  ask turtles [
  ifelse move-left?
  [ left random 45
    forward 1
    set energy energy - move-energy ]
  [ right random 360
    forward 1
    set energy energy - move-energy ]
  ]
end

to eat-grass
  ask turtles [
    if pcolor = green [
      set energy energy + energy-from-grass
      set grass-energy grass-energy - energy-from-grass
    ]
    ifelse show-energy?
    [ set label energy ]
    [set label "" ]
  ]
end

to reproduce
  ask turtles [
    if energy >= reproduce-energy [
      set energy energy - birth-energy
      hatch 1 [ set energy birth-energy ]]
  ]
end

to check-death
  ask turtles [
    if energy <= 0 [ die ]
  ]
end

to check-patches
  ask patches with [count turtles-here >= 2] 
  [ ask one-of turtles-here [ ask other turtles-here[set energy     energy - (energy / 2)]]]
end

to grow-grass
  ask patches [
    set grass-energy grass-energy + regrow-energy
  ]
end

to setup-patches
  ask n-of green-patches patches [ set pcolor green set grass-energy     grass-energy + grass-alive ]
  ask patches [ 
    if pcolor = black [ set pcolor brown set grass-energy grass-    energy = 0 ]
  ]
end

to setup-turtles
  create-turtles number [ setxy random-xcor random-ycor ]
  ask turtles [ set energy energy + birth-energy set shape "cow" set     size 1.5 ]
end

1 Ответ

0 голосов
/ 09 февраля 2019

Я думаю, что проблема исходит от вашей setup-patches процедуры, где вы говорите:

set grass-energy grass-energy = 0

Это устанавливает значение переменной grass-energy равным значению выражения grass-energy = 0,который сообщает true или false.

Я думаю, вы, вероятно, хотели просто написать set grass-energy 0.

Тот факт, что NetLogo использует set variable value вместо variable = value для измененияЗначение переменной может иногда сбивать с толку людей из других языков, но обычно к этому достаточно быстро привыкаешь.

...