まず、私の主な勧告は、NWが働いて得ることです。私はそれを手伝ってうれしいです。
これを除いて、以下は、あなたが無向のネットワークで作業していることを前提としています。それがキャストじゃないなら、私に知らせてください。
あなたが記述する方法の問題は、いくつかの近隣隣接者を複数回カウントすることです。代わりに、あなたは隣人・オブ・隣人のエージェントセットを取得することができ、その後、それを数える:
to-report neighbors-of-neighbors
report turtle-set [ link-neighbors ] of link-neighbors
end
その後、[ count neighbors-of-neighbors ] of turtle 0
はturtle 0
の隣人の隣人の数を与えます。今
、いくつかのポイント:
亀は常にそのリンクネイバーのリンクネイバーであるので、これは、カメ自体が含まれます。あなた自身がカメを入れたくない場合はother
を[ count other neighbors-of-neighbors ] of turtle 0
に投げてください。
to-report turtles-in-link-radius [ n ]
let result turtle-set self
repeat n [
set result (turtle-set result [ link-neighbors ] of result)
]
report result
end
:
このはは、このような手順を検討するかもしれない、それらを中に追加するには亀0のリンク隣人ですが、亀0の任意の他の隣人にリンクされていないカメは含まれません
これは、例えば、以下のように使用することができます:[ count turtle-in-link-radius 2 ] of turtle 0
は、すべてのカメをタートル0から最大2ホップカウントします。このレポーターは、かなり遅くなりますが、nw:turtles-in-radius
と同じ動作をします。
今、私は最初にあなたのアイデアはいくつかのカメを数えると指摘しました。あなたが固有ベクトル中心性のようなものに興味があることを考えれば、これはあなたが望むものかもしれません。その場合、あなたはこれを行うことができます:[ sum [ count link-neighbors ] of link-neighbors ] of turtle 0
亀の所有者を気にすることなくそれを得るために。固有ベクトル中心性すべてのカメを計算する
turtles-own [
...
next-ec ;; helper variable for iteratively computing eigenvector-centrality
eigenvector-centrality
...
]
to calculate-eigenvector-centralities
ask turtles [
set eigenvector-centrality 1
]
repeat 100 [ ;; the higher this number, the more accurate the value. NW uses 100
ask turtles [
set next-ec sum [ eigenvector-centrality ] of link-neighbors
]
let max-ec max [ next-ec ] of turtles
ask turtles [
set eigenvector-centrality next-ec/max-ec ;; normalize
]
]
end
コールcalculate-eigenvector-centralities
:あなたはカメ-自身が、あなたが実際に固有ベクトル中心性自体を計算することができます使用しない場合には、言いました。カメの固有ベクトルの中心は、eigenvector-centrality
に格納されます。このコードは、接続されていないネットワークではで動作しません。各コンポーネントはNWとは独立して正規化する必要がありますが、NWを使用しないでNetLogoで簡単に行うことはできません。
私は現在NW拡張のメンテナーです。あなたはそれでどんな問題を抱えていますか? 'nw:eigenvector-centrality'は、切断されたネットワークでは動作しませんでしたが、最新バージョンではうまく動作するはずです。あなたが見ている問題は何ですか?どのバージョンのNetLogoを使用していますか? –