2017-06-12 63 views
0

我試圖用參數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變量,因爲我後來想以某種固定概率重新連接某些分支中的節點。稍後可能會發佈一個問題;)

回答

2

hatch expansion-rate替換爲hatch min expansion-rate (num-nodes - count nodes),這樣它會創建兩個數字的最小值 - 擴展率和您仍需要的總數。

+0

謝謝,我認爲這應該工作。但Netlogo給我一個'預期的命令'錯誤,同時突出顯示num-nodes,我無法讓它工作。似乎我不能在這種情況下使用'min'過程? 編輯:我想我通過使用 '孵化最小列表擴展率(num-nodes-count nodes)' – ELC

+0

是的,有時NetLogo會對訂購感到困惑。你應該不需要'list',因爲它正好是兩個,但是你可能需要額外的括號,所以它是'hatch min(擴展速率(num-nodes-count nodes))'。如果這樣做不起作用,請嘗試'hatch min(列表擴展速率(num-nodes-count nodes))'。請注意,在這裏,括號內的原始'list'的位置。 – JenB

相關問題