这是问题所在。有许多类型的海龟,人,楼梯,电梯和自动扶梯。
我也有数据,数据是不同时间点人员的追踪位置。我想通过agent-id变量将t-list,x-list和y-list放在不同的人之下。问题是,如果只有一只乌龟,即人,那么下面的代码就可以了。
globals [ num-agent t-list x-list y-list agent-id ]
to-report read-trace[ file ]
.....
end
to setup
let listInput read-trace "filename.csv"
let param item 0 listInput
set num-agent item 0 param
set listInput but-first listInput
create-turtles num-agent [
set t-list []
set x-list []
set y-list []
set size 2
set shape "person"
set speed random-float (1)
]
foreach listInput [
let t item 0 ?
set agent-id item 1 ? - 1
let locationid item 2 ?
let x item 3 ?
let y item 4 ?
ask turtles agent-id [
set t-list sentence t-list t
; scale x-y to fit in the world size (100 x 100)
set x-list sentence x-list x
set y-list sentence y-list y
]
]
end
但是,如果繁殖其他类型的代理,我只想把t-list,x-list和y-list放在turtle-person下不同的agent-id,这是行不通的!
globals [ num-agent t-list x-list y-list agent-id ]
breed [ persons person ]
breed [ stairs stair ]
breed [ elevators elevator]
breed [ escalators escalator ]
breed [ nextlocations nextlocation ]
to-report read-trace[ file ]
.....
end
to setup
let listInput read-trace "filename.csv"
let param item 0 listInput
set num-agent item 0 param
set listInput but-first listInput
create-persons num-agent [
set t-list []
set x-list []
set y-list []
set size 2
set shape "person"
set speed random-float (1)
]
foreach listInput [
let t item 0 ?
set agent-id item 1 ? - 1
let locationid item 2 ?
let x item 3 ?
let y item 4 ?
ask persons agent-id [
set t-list sentence t-list t
; scale x-y to fit in the world size (100 x 100)
set x-list sentence x-list x
set y-list sentence y-list y
]
]
end
问题来自于ask agent-id! 有人可以帮帮我吗?非常感谢你!非常感谢!
答案 0 :(得分:3)
可以按号码访问座席,但一般来说,您不应该这样做。出现这个问题有三个原因。
who
号码,在所有海龟(不仅仅是一个品种)中是唯一的turtle
而不是turtles
,或person
而不是persons
。who
号码。您不能使用其他标识符(例如agent-id
),除非您确定它对应于其who
号码。因此,如果您复制并粘贴了代码,ask persons agent-id
会因各种原因失败:您正在努力尝试。 ask persons
,这是所有人,b。通过单个号码agent-id
询问,最多可以识别一只乌龟,以及c。使用agent-id
的值,该值可能与who
person
的{{1}}对应,也可能不对应(取决于您是否在任何其他龟之前创建人员)。原则上,您可以通过确保在任何其他海龟之前创建persons
并更改为ask person agent-id
来解决所有这些问题。但同样,操纵who
数字通常是不明智的。
假设您没有杀死或创建更多的海龟,您可以在创建人员后立即引入全局sorted-persons
并将其设置为列表sort persons
。然后你可以ask item agent-id sorted-persons
做任何你想做的事,如果你真的觉得你必须通过agent-id
访问它们。