我试图用参数expansion rate
创建“分层”或“树”网络结构。首先,将一个节点放置在顶部,并且网络中的每个节点都连接到等于其下的多个节点,等于expansion rate
。目前我的代码看起来是这样的:Netlogo:创建具有正确节点数的分层(树)网络
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
变量,因为我后来想以某种固定概率重新连接某些分支中的节点。稍后可能会发布一个问题;)
谢谢,我认为这应该工作。但Netlogo给我一个'预期的命令'错误,同时突出显示num-nodes,我无法让它工作。似乎我不能在这种情况下使用'min'过程? 编辑:我想我通过使用 '孵化最小列表扩展率(num-nodes-count nodes)' – ELC
是的,有时NetLogo会对订购感到困惑。你应该不需要'list',因为它正好是两个,但是你可能需要额外的括号,所以它是'hatch min(扩展速率(num-nodes-count nodes))'。如果这样做不起作用,请尝试'hatch min(列表扩展速率(num-nodes-count nodes))'。请注意,在这里,括号内的原始'list'的位置。 – JenB