我有一个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
]
]
]
]
端
答案 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)
)。在这种情况下,由于只有两个参数,您甚至不需要括号。