2

現在、netlogoランド内をトラックが走行するためのルートを構築しています。トラックが配送先のショップ パッチの隣にある場合、トラックはその動作を変更する必要があります。

ただし、私のiforifelseステートメントはうまく応答していないようで、答えは出力によって異なります。いくつかのテストで:

*turtles> ifelse ((patch (first dirx) (first diry)) = one-of neighbors4) [write "11"] [write "22"]
 "11"*

*turtles> ifelse ((patch (first dirx) (first diry)) = one-of neighbors4) [write "111"] [write "122"]
"122"*

*turtles> ifelse (patch (first dirx) (first diry)) = one-of neighbors4 [write "111"] [write "122"]
 "122"*

*turtles> ifelse (patch (first dirx) (first diry)) = one-of neighbors4 [write "11"] [write "12"]
 "12"*

*turtles> ifelse (patch (first dirx) (first diry)) = one-of neighbors4 [write "11"] [write "22"]
 "11"*

この間、私はトラックを動かさず、コマンド センターを使用してこれらの質問をします (タートル トラックの観点から)。

私はこれについて非常に混乱しています。私が変更するのはアクション(何を書くか)だけです。これは、true/false ステートメント自体に影響を与えるべきではありません。

ここで何が起こっているのか、なぜifelse奇妙な反応をするのか、誰にも手がかりがありますか?

4

1 に答える 1

2

これone-ofは、 がその引数の 1 つをランダムに選択し、それを返すためです。

neighbors44 つのパッチ (タートルのパッチの N、S、E、および W) を持つエージェントセットを返します。したがって、one-of neighbors4これらの 4 つからランダムに選択されるため、呼び出すたびに異なる値が返される可能性があります。

于 2010-06-03T18:38:15.293 に答える