2017-06-12 7 views
0

パラメータ「expansion rate」を使用して「階層型」または「ツリー型」ネットワーク構造を作成しようとしています。最初に、1つのノードが最上部に配置され、ネットワークの各ノードは、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-ratehatch min expansion-rate (num-nodes - count nodes)に置き換えて、最低2つの数値(拡張率とまだ必要な合計)を作成するようにしてください。

+0

ありがとう、私はこれがうまくいくと思います。しかし、Netlogoはnum-nodeをハイライト表示しているときに私に「期待されたコマンド」エラーを出し、それを動作させることができません。この文脈では 'min'手続きを使うことができないようですね。 編集:私は 'hatch min list expansion-rate(num-nodes - count nodes)'を使用して動作させると思います。 – ELC

+0

はい、時々NetLogoは注文について混乱します。 'list'は必要なものではありません。ちょうど2つですが、' hatch min(展開率(ノード数 - ノード数)) 'のように余分な角括弧が必要な場合があります。 min(リスト展開率(ノード数 - ノード数)) '。角括弧の中に、プリミティブ 'list'の配置をここに示します。 – JenB

関連する問題