0

タートルのそれぞれの視点から、タートルがどのタートルを「相棒」として割り当てるかを決定する関数を実行する必要があります。

現在、以下のコードがありますが、効果がありません。

foreach sort other turtles [
      ask ? [
        if Smin < Sim myself ? and self != ? [
        ]
      ]
 ]

C/Java では、単純な for ループだけで済み、それで終わりです。どうやら、NetLogo の foreach 関数と '?' の統合を理解するのに苦労しているようです。ループ中。これどうやってするの?

4

1 に答える 1

1

投稿したコードサンプルからは、正確に何をしようとしているのかは不明です。

役立つかもしれないいくつかのこと:

  • 特定の順序でタートルに話しかける場合を除き、通常は を使用する必要はありませんforeach。するだけask other turtles [ ... ]で全体を置き換えることができforeach sort other turtles [ ask ? [ ... ] ]ます。
  • ask ?あなたがブロックの中にいることを考えると、常にself != ?false になるため、あなたの. 内部ブロック内のコードには到達しません。andif
  • myself「外側」の ask ブロックからエージェントを参照します (例: in ask x [ ask y [ ... ] ]selfwould be ymyselfwould be x)。の影響も受けず、影響myselfも受けません。selfforeach?ask

私の推測では、おそらくあなたはただしたいだけです:

ask other turtles [
  if Smin < Sim myself self [
  ]
]

しかし、特に何が何なのかわからないので、はっきりとはわかりませSminSim。詳細を投稿していただければ、さらにお手伝いできるかもしれません。

最後に: NetLogo コードは通常、同等の C/Java コードよりもはるかに単純になりますが、「NetLogo 方式」を採用することを学ぶ必要があります。Java/C で考えてから NetLogo で翻訳しようとすると、通常は道に迷います。

于 2013-09-03T16:48:25.257 に答える