如何在 netlogo 中按代理人编号的升序或降序排列代理人?

how to lineup the agents in the ascending or descending order of their who number in netlogo?

我正在创建一个患者-外科医生-手术床模型,其中我需要显示外科医生在贴片左侧排队等候进入中间的手术室,患者在右侧排队等候.

我希望根据他们的 who 编号

将外科医生和患者定位在贴片上

S1 S2 S3 --> 手术室 < -- P1 P2 P3

我使用下面的查询,我不确定在哪里合并 who 号码

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

你把它们排成一行后就有了move-to。它总是感动所有现有的病人。为了让事情更干净,写一个单独的 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