Netlogo 请代理id做点什么
问题就在这里。有许多种类的海龟、人、楼梯、电梯和自动扶梯 我也有数据,数据是人们在不同时间的追踪位置。我想通过agent id变量将t-list、x-list和y-list放在不同的人下面。问题是,如果只有一只海龟,那就是人,下面的代码就是工作Netlogo 请代理id做点什么,netlogo,Netlogo,问题就在这里。有许多种类的海龟、人、楼梯、电梯和自动扶梯 我也有数据,数据是人们在不同时间的追踪位置。我想通过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 "
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
但是,如果繁殖其他类型的代理,我只想通过不同的代理id将t-list、x-list和y-list放在海龟人下面,这是行不通的
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
问题来自询问人员代理id!
有人能帮我吗?非常感谢你!非常感谢 可以按编号访问代理,但一般来说,您不应该这样做。这里出现问题有三个原因
who
号,这在所有海龟中是独一无二的(不仅仅是在一个品种中)turtle
notturtles
,或者这里的person
notpersons
)who
号码。你不能使用其他标识符(如agent id
),除非你确定它的who
号码对应询问人员代理id
失败的原因有多种:您试图a.询问人员
,这是所有人;b.通过单个数字询问,代理id
,这最多可以识别一只海龟;c.使用代理id
的值,这可能对应于也可能不对应于to一个人的谁
编号(取决于你是否在其他海龟之前创造人).原则上,你可以通过确保人
都是在其他海龟之前创建的,并更改为询问人员代理id
,来解决所有这些问题。但同样,操纵谁
号码通常是不明智的
假设您从未杀死或创建过更多海龟,您可以引入一个全局排序人员
,并在创建人员后立即将其设置到列表排序人员
。然后,如果您确实觉得必须通过代理id访问他们,您可以要求物品代理id排序人员
做任何您想做的事情
非常感谢!您确实帮助了我,并给了我解决问题的提示。我确实需要代理id来说明代理是否仍在环境中。谢谢!!