パラメータ「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
を必要とします。 )
ありがとう、私はこれがうまくいくと思います。しかし、Netlogoはnum-nodeをハイライト表示しているときに私に「期待されたコマンド」エラーを出し、それを動作させることができません。この文脈では 'min'手続きを使うことができないようですね。 編集:私は 'hatch min list expansion-rate(num-nodes - count nodes)'を使用して動作させると思います。 – ELC
はい、時々NetLogoは注文について混乱します。 'list'は必要なものではありません。ちょうど2つですが、' hatch min(展開率(ノード数 - ノード数)) 'のように余分な角括弧が必要な場合があります。 min(リスト展開率(ノード数 - ノード数)) '。角括弧の中に、プリミティブ 'list'の配置をここに示します。 – JenB