1

各ティックで各タートルの資産変数を更新する必要があります。これは、呼び出しの数がプロファイラー リストの一番上にあります。

ほとんどの計算時間は、家に同じパッチを使用している他のエージェントの数を計算し、各タートルのシェアを計算することに費やされると確信しています。food_carrying と my-home は turtle のプロパティで、Storage は patch のプロパティです。

to update-wealth
  let h my-home
  set wealth ([Storage] of my-home / (Count agents with [my-home = h]))  + food_carrying
end

それを行うためのより良い方法を考えられますか?

Name                               Calls Incl T(ms) Excl T(ms) Excl/calls
UPDATE-WEALTH                    9744912 831703.608 461086.654      0.047
4

1 に答える 1

2

パッチ上の各タートルは同じ富の値を計算しているように見えるので、タートルではなくパッチでこれを行う方がはるかに高速だと思います。おそらく次のようなものです:

ask patches [
  let my-turtles turtles-here
  if any? my-turtles [
    let w Storage / count my-turtles
    ask my-turtles [set wealth w + food_carrying]
    ]
  ]
]

タートル ホームを含む一連の実行中のパッチを保持している場合は、そのサブセットを確認するだけで、パッチに何もないことやゼロによる除算が発生することを心配する必要はありません。

于 2013-12-28T02:16:32.033 に答える