2017-03-01 7 views
0

答えが非常に明白な場合は疑いがあり、謝罪します。私は次のコードを作成しました。かなりシンプル&単純明快:エージェントセット内のエージェントの順序が一致しません

patches-own [ tl ls ls2 ls3 ls4 tsl] 
turtles-own [mysize] 

to setup 
    clear-all 
    reset-ticks 
    crt 5 
    ask turtles [ set heading random 360 jump random 20 set mysize random-float 1] 
    asd 
    inspect patch 0 0 
end 

to asd 
    let old sum [mysize] of turtles 
    ask patches [ set tl other turtles 
    set tsl [self] of tl 
    set ls [distance myself] of tl 
    set ls2 [distance myself^2] of tl 
    set ls3 [(mysize)/old] of tl 
    ] 
    ;print tl 

end 

to initial 
    set heading random 360 jump random 20 set mysize 1 
end 

to go 
    inspect patch 0 0 
    ask turtles [ fd 1 set mysize mysize + random-float 1] 
    let qwe random-float 1 
    print qwe 
    if qwe < 0.2 and count turtles > 2 [ask one-of turtles [die]] 
    if qwe > 0.8 [ ask one-of patches [sprout 1 [initial]]] 
    asd 
    tick 
end 

あなたが見ることができるように、私はコード内の関数を検査し、以下のスナップショットである:順序のうちlsls2薬である理由

enter image description here 私の質問は。 Agentset TSLはカメの順番を示しているので、それに基づいて作成された他のエージェントセットは同じ順序に従わないようにしてください。

答えて

1

何らかの理由でソートしない限り、Netlogoはエージェントセット内のエージェントをランダムな順序でクエリします。機能的には、ask tlask turtlesと同じロジックに従います。また、エージェントセットから変数を取得する場合も同じです。たとえば、コマンド・センターを使用して(コードsetupおよびasdを実行した後で)コードを数回試してみると、問合せされるエージェントの順序は毎回同じではないことに気づくでしょう。

ask patch 0 0 [ print [distance myself] of tl ]

パッチの「TSL」リストの作成はあなたの他のリストの作成とは無関係であることを言ってこのすべて。これは順序リストではなく、エージェントセット "tl"からランダムに呼び出されたカメのリストです。エージェントセットの一貫した順序付けを行う1つの方法は、sortプリミティブの1つを使用することです。

+0

その場合、エージェントセットの1つに最小値を持つカメを見つけるような操作を行う場合、 'min-one-of'を使用すると、すべてのエージェントセットが同様に順序付けされていないか、Netlogoが正しい結果は? – Yuvaraj

+0

'ask patch 0 0 [ask min-one-of tl [distance myself] [set size 3]]'のようなエージェントセットを照会している限り、正しい結果を返すはずです。また、あなたの例のスクリーンショットでは、「tl」のみがエージェントセットであり、残りはリストです。エージェントのリストとは、エージェントセットとは異なる方法でクエリを実行します。 –

+0

あなたは 'tlがエージェントセットである 'と言っているので、他はすべてリストです。リストの中の 'min'値が' ls'というカメを見つけたいのなら、 'lput'を正しく使うことができません。私はリスト内の最小値のインデックスまたは 'position'を得ることができるかもしれませんが、私がエージェントセット内のカメを識別するために位置を参照すると、エラーがスローされます。たとえば、 'set tl other turtles tl のset ls [distance myself^2]をセットインデックス位置(min ls)ls'に設定します。これまでは 'lput item index tl'を使うと動作します。 – Yuvaraj

関連する問題