1

私のモデルでは、直接リンクを使用して各タートルの相互作用値を他のタートルに保持し、各リンクはリンクの両端に異なる値を持ちます。これはまさに私が望んでいるものであり、実装は非常に簡単でした。問題が発生し、モデルが動作すると思うほど速く動作しません。

現在、計算の必要性を減らすためにさまざまな方法を試しています。私の頭をよぎったことの 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

セスのコメントに感謝

ありがとう 。マージー。

4

2 に答える 2

1

最初に有向リンクを無向リンクに変更したことの結果を要約するためだけに、その後多くの問題が発生したため、引き続き有向リンクを使用します。

これは私が使用したコードです:

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] ;IF already has a link 
         [create-link-to Other_Agent [set Value-Of-The-Relationship Value-Of-The-Relationship + Value set Frequency Frequency + 1 ] set hidden? true ] ;If they meet for the first time

     ] 

end

;Update_Friendship_Values 
to Update_Friendship_Values  [Self_Agent Other_Agent Value]
  ask Self_Agent 
    [     
      ifelse any? Friendships with [end1 = Self_Agent and End2 = Other_Agent]

      [
        ask Friendships with [end1 = Self_Agent and End2 = Other_Agent] 
        [ 
          set End1-End2-Value-Of-The-Relationship End1-End2-Value-Of-The-Relationship + Value  
          set End1-End2-Frequency End1-End2-Frequency + 1  
        ]  
       ; set hidden? true
      ] ;IF already has a link and first agent is end1
      [  
        ifelse any? Friendships with [end2 = Self_Agent and End1 = Other_Agent]

          [
            ask Friendships with [end2 = Self_Agent and End1 = Other_Agent] 
            [ 
              set End2-End1-Value-Of-The-Relationship End2-End1-Value-Of-The-Relationship + Value  
              set End2-End1-Frequency End2-End1-Frequency + 1
            ]  
            ;set hidden? true
          ] ;IF already has a link and first agent is end2 
          [ ifelse count Other_Agent = 1 
            [create-Friendship-with Other_Agent [
              set End1-End2-Value-Of-The-Relationship End1-End2-Value-Of-The-Relationship + Value
              set End1-End2-Frequency End1-End2-Frequency + 1 
            ]] [
            create-Friendships-with Other_Agent [
              set End1-End2-Value-Of-The-Relationship End1-End2-Value-Of-The-Relationship + Value
              set End1-End2-Frequency End1-End2-Frequency + 1]
            ;set hidden? true 
          ] ]
      ]
    ] 

end

Seth が提案した修正により、適切な無向リンク (ここでは Friendships と呼ばれます) を見つけるためのより複雑な計算を行うよりも、より多くのリンクを作成する方が良いと思います。

于 2013-11-05T03:03:42.100 に答える