我試圖用參數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