NetLogo:代理商可以拥有列表吗?

时间:2015-01-29 15:14:50

标签: list netlogo agents

我有一个NetLogo出租车模型,可以接载乘客并带他们到达目的地。我目前对出租车品种的定义如下:

taxis-own [
  route                     ; List of destinations in order, each an x y pair
  destin_x                  ; Coordinates of the taxis current destination
  destin_y
  trip_distance             ; Distance of current trip in Netlogo cells = 100 meters 
  speed                     ; Travel speed in Netlogo cells = 100 meters per minute
  time_left                 ; Time left in current trip until arrival
  status                    ; Waiting ; Picking Up ; Psngr Boarding; En Route ; Psngr Alighting ; Dropping off
  vmt                       ; Vehicle miles traveled
]

destin_x destin_y 分别是出租车当前目的地的x和y坐标。

我想在每辆出租车内存储一条路线,或每辆出租车的目的地列表。即[[x1 y1],[x2 y2] [x3 y3] ...]。

代理可以拥有这样的列表结构吗?我可以在代理的 ask 命令中使用列表命令,例如 lput 吗?有没有其他方法可以解决这个问题?

到目前为止,我尝试这样做是行不通的。见下文:

to hail-taxi ;
  let available-taxis taxis with [status = "waiting"] ; Create a set of available taxis
  let hailing-psngrs psngrs with [status = "hailing"] ; Create list of hailing passengers
  foreach sort-by [ [wait_time] of ?1 > [wait_time] of ?2] hailing-psngrs [
    ask ? [
      let free-taxi min-one-of available-taxis [distance myself] ; Find the closest available taxi
      let picked-taxi free-taxi
      if ( picked-taxi != nobody )[
        set status "waiting"
        create-link-with picked-taxi
        ask picked-taxi [
          set status "picking up"
          set available-taxis taxis with [status = "waiting"] ; Revise set of available taxis
; NEXT LINE DOES NOT WORK
          lput list ( [xcor] of myself [ycor] of myself ) route
      ]
    ]
  ]
]

1 个答案:

答案 0 :(得分:2)

  

代理可以拥有这样的列表结构吗?

  

我可以在代理的ask命令中使用list命令,例如lput吗?

; NEXT LINE DOES NOT WORK
lput list ( [xcor] of myself [ycor] of myself ) route

怎么样:

set route lput [ list xcor ycor ] of myself route

我认为你可能对list的括号的位置感到有些困惑。它们通常围绕整个表达式(例如(list a b c d))。在这种情况下,由于只有两个参数,您甚至不需要括号。