Netlogo:使用正确数量的节点创建分层(树)网络

时间:2017-06-12 13:47:36

标签: netlogo social-networking agent-based-modeling

我正在尝试使用参数expansion rate创建“Hierarchical”或“Tree”网络结构。首先,一个节点位于顶部,网络中的每个节点都连接到他下面的多个节点,等于expansion rate。目前我的代码如下所示:

to wire-tree
  clear-all
  ask patches [ set pcolor white ]
  create-nodes 1 [         ; create root node of tree
    set shape "circle"
    set color red
    set branch 0
    expand-network
    rewire-branches
  ]

  radial-layout


  reset-ticks
end

to expand-network

  if expansion-rate = 0 [ stop ]
  while [count nodes < num-nodes] [
     ask nodes with-max [branch] [
      hatch expansion-rate [
      create-edge-with myself
      set branch branch + 1
      ]
    ]
  ]

end

网络当前具有正确的结构,但网络中的节点数超过了num-nodes滑块选择的节点数。这是因为首先检查是否count nodes < num-nodes之后执行最后一个填充。但是,我想要的是,最后一个节点孵化执行直到达到num-nodes然后停止。因此,虽然最后一个层次结构之前的层次结构中的每个层次包含等于expansion rate幂的节点数,但如果总体未正确划分,则最后一个层次可能少于此值。

我怎样才能做到这一点?

我需要海龟拥有的branch变量,因为我后来想要以固定概率重新连接某些分支中的节点。可能稍后会发布一个问题;)

1 个答案:

答案 0 :(得分:2)

hatch expansion-rate替换为hatch min expansion-rate (num-nodes - count nodes),以便创建至少两个数字 - 扩展速度和您仍需要的总数。