NETLOGO: пропуск воды по узлам речной сети - PullRequest
0 голосов
/ 12 ноября 2018

Я бы хотел смоделировать поток воды вдоль реки с помощью NETLOGO. Поэтому у меня есть много водных узлов, которые связаны друг с другом; и каждый водный узел имеет переменную «сумма_воды». Каждый тик, переменная "amount_water" должна быть передана следующему водному узлу. В каждом узле водопользователи (различные агенты) могут взаимодействовать с потоком потока и извлекать немного воды, что изменило бы переменную "amount_water"; но теперь я хотел бы показать вам только моделируемый речной сток без водопользователей.

если у вас есть модельный мир с min-pycor -6 и max-pycor 6:

breed [waternodes waternode]

waternodes-own
[
  amount_water
]

to setup  

  clear-all
  reset-ticks

  ; create the waternodes

  create-waternodes 13 [setxy 0 (who - 6) set shape "dot" set color blue]
  ask waternodes 
     [
     let neighborbelow waternodes-on neighbors4 with [pycor < [ycor] of myself]
     create-links-to waternodes-on neighborbelow
     ]

end

to go
  move-water
  update-inflow
  tick
end

to move-water
  ask waternodes 
  [
  ask out-link-neighbors [set amount_water [amount_water] of myself]
  ]

end

to update-inflow
  ask waternode 12 [set amount_water ticks]
end

(в моей модели приток, конечно, не количество тиков, но считывается из csv-файла)

Моя проблема: с этим кодом количество воды НЕ непрерывно передается от узла к узлу (и я не знаю почему !!) ????

И вообще, я не уверен, что эта сеть - лучшая идея для представления потокового потока. Можете ли вы придумать другие решения?

Большое спасибо

1 Ответ

0 голосов
/ 13 ноября 2018

Я уже решил проблему.Кажется, что когда я просто называю ватероды в move-water следующим образом

to move-water
   ask waternodes 
   [
   ask out-link-neighbors [set amount_water [amount_water] of myself]
   ]
end

, ватероды не всегда вызываются в порядке от 0 до 11.

Поэтому я изменил код на

to move-water
  (foreach sort-on [who] waternodes
    [the-turtle -> ask the-turtle [ask out-link-neighbors [set amount_water [amount_water] of myself]]])
end

и теперь он работает!

...