Разделение переменной Turtle на переменную Patch дает ошибку - PullRequest
0 голосов
/ 09 сентября 2018

Я пишу несколько кодов. Черепахи и патчи имеют значения. Ни один из них не имеет нулевого значения. Я пытаюсь разделить поверхностные воды (принадлежащие фермеру) со средними значениями DWS (патч-переменной) вокруг фермера. Я получаю ошибку деления на ноль, хотя я полагаю, что никакое значение не равно нулю. Прошу выявить ошибку и помочь мне сделать исправление. вот коды

Globals [ Water-Availbility]
Breed [farmers farmer]
farmers-own [ WA sw ]  

patches-own [
GW wtd DWS] 
to setup
   clear-all
    setup-farmers
    ask patches [ ifelse random 4 = 0 [
    set dws  distance-from-water-source + random-float 50
    set WTD DWS / depth-WT + random-float 1
    set GW Ground-water + random-float 5.005  +  (100 / wtd)
    set pcolor blue
  ]

     [ set dws  distance-from-water-source + random-float 100 
       set WTD DWS / depth-WT + 5 + random-float 5 
       set GW Ground-water + random-float 5.005  +  (100 / wtd)
       set pcolor red]]
end
to setup-farmers

create-farmers num-farmers [move-to one-of patches
                             set shape "person"
                              set sw  random 100 + surface-water / sum [DWS] of patches in-radius 1 / count patches in-radius 1 
                              SET WA  sw +  sum [gw] of patches in-radius 1 / count patches in-radius 1 + [gw] of self
]
end

Interface of codes

1 Ответ

0 голосов
/ 09 сентября 2018

Похоже, что это просто проблема планирования в вашем setup - вы звоните setup-farmers, прежде чем настраивать свои патчи, поэтому все патчи имеют DWS, равный нулю, когда фермеры запрашивают это значение. Поэтому sum [DWS] of patches in-radius 1 равно 0, что делает ваш знаменатель нулевым Измените ваши настройки на что-то вроде ниже, и вы должны быть в порядке.

to setup
  clear-all
  ask patches [ 
    ifelse random 4 = 0 [
      set dws  50 + random-float 50
      set WTD DWS / 50 + random-float 1
      set GW 50 + random-float 5.005  +  (100 / wtd)
      set pcolor blue
    ] [ 
      set dws  50 + random-float 100 
      set WTD DWS / 50 + 5 + random-float 5 
      set GW 50 + random-float 5.005  +  (100 / wtd)
      set pcolor red 
    ]
  ]
  setup-farmers
  reset-ticks
end
...