NetLogoのハングアップを試みていて、何か助けが必要です。私はカメをもっているパッチを選んで、それが最も価値のあるものに基づいています。値は、パッチを選ぶコストのメリットとコストによって決まるので、私は少しの計算をするためにカメが必要です。基本的には、タートルには次のものが必要です:NetLogo:カメにパッチセットの計算を依頼する
- 利用可能なパッチ(未所有のパッチ)のパッチセットを特定します。
- 利用可能な各パッチの便益を決定します。各パッチには0-1のメリットがあります。メリット・ツー・ミーを判断するには、利用可能なパッチの平均メリットと、半径方向2のそのパッチの隣接パッチを計算する必要があります(ムービングウィンドウ方式の高ベネフィットパッチのクラスタを識別するため)。
- 利用可能な各パッチの費用対価を決定します。今のところ、これはカメからのパッチの距離です。 (このモデルの将来のバージョンでは、コスト・トゥ・ミーには今後の考慮事項が含まれます)
- メリット・トゥ・マイ・マイ・コスト/
これは(またはので、私はこの--isが、私はそれが何を考えてやってと思う?)作品:
patches-own [
benefit
owner ]
to go
ask turtles [pick-patch]
end
to pick-patch
move-to highest-value
end
to-report highest-value
let available-destinations patches with [owner = 0] ;; I think this accomplishes step 1.
report max-one-of available-destinations [(mean [benefit] of patches in-radius 2)/(distance myself + 1)] ;; and I believe(?) this accomplishes step 2-4. (Note, "distance myself + 1" seems required since can't divide by 0.)
end
しかし、私は利益とコストを分離したいのですが部分:
to-report highest-value
let available-destinations patches with [owner = 0]
let benefit-to-me ...?? ;; code to assess "(mean [benefit] of patches in-radius 2)" for the patch-set of available-destinations?
let cost-to-me ...?? ;; and code to assess "(distance myself + 1)" of available destinations?
report max-one-of available-destinations (benefit-to-me/cost-to-me) ...?? ;; code to perform calculations based on benefit-to-me and cost-to-me?
end
私は望ましい効果を達成するために、このコードを完了するにはどうすればよいです?そして私はこのタイプのコーディングに近づくには複数の方法があると思います。カメは「最高値」の何千回も繰り返すことを考えれば、どのオプションが最も速く走るのだろうか?前もって感謝します!
コードに改正をしようとしました:(。以下、ルークの答えからフォローアップ)
patches-own [
benefit
owner ]
to setup
ask patches [ set owner nobody ]
end
to go
ask turtles [pick-patch]
tick
end
to pick-patch ;;<-----noticing turtle will change _destination midway to traveling there...why?
let _destination highest-value
ifelse _destination != nobody [
ask _destination [set pcolor red] ;; added this as a check, and yes, red patch switches around before the turtle gets there sometimes.
face _destination forward 1
if patch-here = _destination
[ claim-patch _destination ]
]
[stop] ;; if there is no _destination
end
to claim-patch [_patch]
ask _patch [set owner myself]
;; and etc., turtle does several more things to claim patch, e.g., turn patch color of turtle
end
;;;; --reporters for calculations:--
to-report highest-value
let available-destinations patches with [owner = nobody]
report max-one-of available-destinations [benefit-to-me/cost-to-me]
end
to-report benefit-to-me
report mean [benefit] of patches in-radius 2
end
to-report cost-to-me
report distance myself
end
ありがとうございました。 Re。 "自分自身の距離+ 1"、私は+1の部分が必要ないと思う。ありがとう!そして、 "owner = 0"の良いコール、私はそれも修正しました。だから、これは私に利益をもたらすと費用対効果を打ち砕く主要な部分に私をもたらします。コストには最終的に距離以外のものも含まれます(これを表示するために私の質問を編集しました)。あなたの答えに基づいて、私は私の質問の最後に新しいコードを試みました。これは私の目標を達成するように見えますか? (そしてこれに他の問題はありますか?)もう一度ありがとう! – User847462
私が設定したフレームワークに上記で追加したコードを適用すると、私の言うことができる限り、私のコードのために機能します!あなたはたぶん世界のすべてのパッチを真剣にチェックしていることを確認する必要があります。手動ですべてのカメから離れたパッチに手作業で非常に高い利益を与え、次のカメの動きがそのパッチにぴったり合っていることを確認してください。もう1つの問題は、連続していない家の範囲を生成することですが、それは実際にこの質問の範囲ではありません。 –