我正在使用来自实际事件的匿名数据,在紧急情况下模拟社交行为。以下是我用来创建“人物”的代码部分。海龟。
to read-people-from-file [filename]
let rows bf csv:from-file filename
foreach rows
[[row] ->
create-people 1
[
set size .46
setxy (item 0 row) (item 1 row)
set age (item 2 row)
set gender (item 3 row)
set visited? (item 4 row)
set group-number (item 6 row)
set group-type (item 7 row)
if group-number < 300 and ((person group-number) = (other group-number))) [create-links-with other person]
]
]
end
除基于组号的链接外,一切都有效。我尝试了一些不同的变体,没有运气,除了我尝试if group-number <300 [create-links-with other people
创建链接但功能无用的地方。我想要做的是设置它,以便每个聚集在一起的人(具有相同的组号)与其他组成员有链接。它特别少于300,因为300或以上的数字适用于单独或其他指定的人。
理论上,我可以在创建海龟之后手工创建链接,但这似乎都浪费时间(我有超过400的数据集),并且喜欢使代码明显不太适用于其他场景的东西。
如何根据CSV中的内容使Netlogo在同一组的成员之间创建链接?
实际上,梦想的答案是:如何让Netlogo根据CSV中的内容在同一组号的成员之间创建不同的链接品种(基于组类型)?
编辑: 最后,我不得不从初始代理设置中分离创建链接。 这是有效的:
to soclink ;;groups that came together have links based type of relationship
ask people [if group-number < 300
[
if group-type = 1 [ask other people with [group-number = [group-number] of myself] [create-coworker-with myself]]
if group-type = 2 [ask other people with [group-number = [group-number] of myself] [create-friend-with myself]]
if group-type = 3 [ask other people with [group-number = [group-number] of myself] [create-partner-with myself]]
if group-type = 4 [ask other people with [group-number = [group-number] of myself] [create-family-with myself]]
if group-type = 5 [ask other people with [group-number = [group-number] of myself] [create-multiple-with myself]]
show count links]]
end
答案 0 :(得分:2)
对于第一部分,也许这可行 - 一旦您的人员被创建,他们的号码被分配到group-number
:
to group-link
ask people [
let my-group other people with [ group-number = [ group-number] of myself ]
create-links-with my-group
]
end
对于梦想的答案 - 它可能取决于您需要多少链接品种。据我所知,链接品种必须是预定义的 - 你不能以编程方式生成不同组所需的链接(虽然我不是专家 - 可能有办法)。如果您已定义链接品种,例如:
undirected-link-breed [ link-as link-a ]
undirected-link-breed [ link-bs link-b ]
现在假装你的group-type
是“a”或“b”,你可以做点什么
to specific-link-breeds
ask people [
let my-group other people with [ group-number = [ group-number] of myself ]
if group-type = "a" [
create-link-as-with my-group
]
if group-type = "b" [
create-link-bs-with my-group
]
]
ask link-as [
set color red
]
ask link-bs [
set color blue
]
end
修改:将turtles
更改为people
,因为它应该是 - 感谢Mattsap。