私はask
を使用して、私のカメのすべてを巡回したいですが、ではなく、はランダムであることを望みます。私のソリューションは、このリストの上に自分のIDでソートされたリスト、その後、ループにカメのすべてを追加することです:リスト内のすべてのカメを尋ねる方法
let sorted-turtles sort-on [who] turtles
foreach sorted-turtles [
x -> ask x [ ; x is the turtle
; do something
]
]
正しく動作
が、が大幅は私のモデルが遅くなります。
私の質問は:これは、すべてのカメに事前定義された順序で何かをするように頼むための最良の方法ですか?
私が直接リストにask
を使用しようとしている(例えばask sorted-turtles [ print who ]
しかしNetLogoがask
がリストではなくagentsetを必要としていることを言います。事前に
おかげで、 ニック
"...ソート済みリストを再作成する"またはリストを更新する。たとえば、新しいカメを作成する場合は、既にソートされたリストの正しい位置にカメを挿入します。 – mattsap
@mattsap良い点。挿入が簡単なのは、おそらくリストの終わり(O(1))に起こるためですが、O(n)という正しいエージェントのリストをスキャンする必要があるため、削除が手間がかかります。あるいは、あなたは死んだエージェントをリストに残して、ループに '!= nobody'のチェックを追加することができますが、多くのエージェントが作成/殺されると管理が難しくなる可能性があります...状況によっては、それは価値がありません... –
私が正しく思い出した場合、 'sort turtles'は既に内部的にソートされた順序であるので、実際にカメを並べ替える必要はありません –