私のモデルでは、直接リンクを使用して各タートルの相互作用値を他のタートルに保持し、各リンクはリンクの両端に異なる値を持ちます。これはまさに私が望んでいるものであり、実装は非常に簡単でした。問題が発生し、モデルが動作すると思うほど速く動作しません。
現在、計算の必要性を減らすためにさまざまな方法を試しています。私の頭をよぎったことの 1 つは、すべての有向リンクを無向リンクに統合し、 end1-end2-Relationship-Valueおよびend2-end1-Relationship-などのリンク属性として、end1 と end2 の相互作用値の値を相互に配置することです。値と頻度 1 頻度 2。この実装により、リンクの順序を追跡するのがはるかに難しくなり、これらの値の計算を頻繁に使用するため、モデル全体のデバッグが少し難しくなります。パフォーマンス :)
これが良いと思った理由は、リンクの数が半分に減るからです。別の方法は、リンクを忘れることです (古いリンクまたはあまり重要でない関係 (重要でない関係の値と関係の頻度が低い) のリンクを削除します) ですが、これはそうではありません私のモデル設定と完全に互換性があります。
agents-own [Belongs_to My-home popularity ]
patches-own [label_ storage]
links-own[Value-Of-The-Relationship frequency]
to Update_link_Values [Self_Agent Other_Agent Value]
ask Self_Agent
[ ifelse any? links with [end1 = Self_Agent and End2 = Other_Agent]
[ask out-link-to Other_Agent [ set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true]
[create-link-to Other_Agent [set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true ]
]
end
to SeTPoPularity
set Popularity sum[Value-Of-The-Relationship] of links with [end2 = mySelf]
end
更新 2 : 人気を設定するためのより良い方法 (明白な方法! 最初に行うべきでした) を既に見つけたと思います。すべてのティックを呼び出すのではなく、変更された場合にのみ更新できます。必要ありません 「popularity」と呼ばれる変数は必要になるたびに my-in-links を呼び出すだけです
*更新 3 : *
to Update_link_Values [Self_Agent Other_Agent Value]
ask Self_Agent
[ ifelse out-link-neighbor? Other_Agent
[ask out-link-to Other_Agent [ set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true]
[create-link-to Other_Agent [set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true ]
]
end
セスのコメントに感謝
ありがとう 。マージー。