2017-10-05 12 views
0

私は、患者の手術室のモデルを作成しています。ここでは、中央の手術室に入るのを待っているパッチの左側に外科医が並んでいて、右側の病院で待っている患者を示す必要があります。netlogoでwho番号の昇順または降順にエージェントを並べる方法は?

私は彼らのwho

S1 S2 S3ごとに外科医と患者がパッチに配置することにしたい - 私は、私は以下のクエリを使用P1 P2 P3

- >手術室<あなたがそれらをラインアップした後、あなたはmove-toを持って

to lineup-patients 
    LET gapp 10      
    LET directions 
    [45 90 230 180 45 90 230 180 45 90 45 90 230 180 45 90 230 180 45 90 45 90 ] 
    LET jj 0      ; counter/index 
    REPEAT initial-number-patients 
    [ create-PATIENTS 1 
    [ SETXY (0 + jj * gapp) 20 
     set shape "person" 
     SET size 1.2 
     SET label who 
     SET label-color black 
     SET heading item jj directions 
    ] 
    SET jj jj + 1 
    ASK patients [ 
     MOVE-TO ONE-OF PATCHES WITH [ PCOLOR = yellow ] 
    ] ] 
END 
+0

を、私は、netlogoに新しいですまた、リストを使用してみましたが、それらは、パッチの上に並んで取得することはできませんよリストアップする患者数 - リストの数を3にするlist-per-list 7をgapp 10にするjj 0 REPEAT initial-number-patients [create-patients initial-number-patients [SETXY(0 + jj * gapp)20 グループを設定[]; セットグループlput空のリスト誰[ "数のリスト"] セット形 "人" ] SET色ランダム126] エンド[pcolorの=黄色WITH MOVE-TO ONE-OF PATCHES]患者をASK – user8666670

+0

次にコードの各行に4つの先頭スペースを追加して、コードをフォーマットすることを忘れないでください。 – SteveFest

+0

はい、ありがとうございます – user8666670

答えて

1

に番号を誰組み込むことがどこかわかりません。そして、それは常に既存のすべての患者を動かす。物を清潔に保つために、別のlineup procを書きます。

to lineup [#patients #patch #gap] 
    let _x ([pxcor] of #patch) 
    let _y ([pycor] of #patch) 
    let _xqs n-values (count #patients) [[n] -> _x + n * #gap] 
    (foreach sort #patients _xqs [ 
    [p x] -> ask p [setxy x _y] 
    ]) 
end 

次のようにあなたがNetLogoの新しいインスタンスでこれをテストすることができます。

to test 
    ca 
    crt 20 
    lineup turtles one-of patches 0.5 
end 
+0

ありがとうアラン。それは整列した患者を与える。私はちょうど_xqsと[p x]が何かを理解していませんでした。 – user8666670

+0

'_xqs'は、待ち行列に入れられた患者のx軸位置です。 'n値 'のドキュメントを参照してください。 '[p x]'はループ内で使われるローカル変数(患者とX軸の位置)です。複数のリストで 'foreach'を使う方法については、ドキュメントを参照してください。 Hth。 – Alan

+0

それは..おかげでアラン – user8666670

関連する問題