Я работаю над симуляцией социального поведения в чрезвычайной ситуации, используя анонимные данные о реальном событии. Ниже приведен фрагмент кода, который я использую для создания черепах-«людей».
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) и чем-то, что делает код значительно менее применимым к другим сценариям.
Как заставить Netlogo создавать связи между членами одной группы на основе содержимого CSV?
Собственно, ответ мечты: как мне заставить 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