如何按netlogo中谁的号码的升序或降序排列代理?

时间:2017-10-05 03:28:57

标签: netlogo agent

我正在创建一个患者 - 外科医生 - 手术床模型,其中我需要显示在贴片左侧排队的外科医生等待进入中心的手术室并且患者从右侧等待排队。 / p>

我希望外科医生和患者按照他们的who

找到补丁 S1 S2 S3 - >手术室< - P1 P2 P3

我使用下面的查询,我不知道在哪里加入谁编号

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

1 个答案:

答案 0 :(得分:1)

排队后你有一个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