NETLOGO:沿河网节点传递水量

NETLOGO:沿河网节点传递水量,netlogo,Netlogo,我想用NETLOGO模拟沿河的水流。因此,我有许多水节点,它们相互链接;以及具有可变“水量”的每个水节点。每个滴答声,变量“水的数量”都应该传递给下一个水节点。在每个节点,水用户(各种代理)可以与水流相互作用并提取一些水,这将改变变量“水量”;但现在我想给大家展示的只是模拟的河流流量,没有水用户 如果您有一个具有min pycor-6和max pycor 6的模型世界: breed [waternodes waternode] waternodes-own [ amount_water ]

我想用NETLOGO模拟沿河的水流。因此,我有许多水节点,它们相互链接;以及具有可变“水量”的每个水节点。每个滴答声,变量“水的数量”都应该传递给下一个水节点。在每个节点,水用户(各种代理)可以与水流相互作用并提取一些水,这将改变变量“水量”;但现在我想给大家展示的只是模拟的河流流量,没有水用户

如果您有一个具有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
繁殖[水节点水节点]
水节点拥有
[
水量
]
设置
清除所有
重置滴答声
; 创建waternodes
创建waternodes 13[setxy 0(who-6)设置形状“点”设置蓝色]
询问水节点
[
让neighborbelow waternodes在邻居4上,使用[pycor<[ycor]自己]
在下面的邻居上创建指向waternodes的链接
]
结束
外带
开水
更新流入量
打上钩
结束
运水
询问水节点
[
询问链接邻居[设置自己的水量]
]
结束
更新流入
询问waternode 12[设置水量]
结束
(在我的模型中,流入量当然不是滴答数,但它是从csv文件中读取的)

我的问题是:在这个代码中,水的量并没有从一个节点持续传递到另一个节点(我不知道为什么!!)

一般来说,我不太确定这个网络是否是表示流的最好方法。你能想出其他解决办法吗


非常感谢

到目前为止,我已经解决了这个问题。当我调用waternodes时,看起来像这样移动水

to move-water
   ask waternodes 
   [
   ask out-link-neighbors [set amount_water [amount_water] of myself]
   ]
end
,并不总是按0到11的顺序调用waternodes

所以我把密码改成

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

现在它开始工作了

对[who]waternodes进行排序
可以缩短为只对waternodes进行排序