У меня есть агенты двух типов в Netlogo (фирмы и работники), и они связаны через общий идентификатор, который, однако, является свойством агента (называемый ID для фирм и FirmID для работников).Я заинтересован в том, чтобы попросить фирмы отобразить свою рабочую силу, выполнив запрос для фирм, попросив их отобразить число всех работников, чтобы переменная «firmID» работников равнялась переменной «ID» фирмы, как описано ниже:
Я пытался попросить фирмы подсчитать всех работников так, чтобы идентификаторы фирм идентифицировали идентификаторы запрашивающих фирм, но это не работает в рамках процедуры запроса.Если я попробую один за другим, то, как ни странно, это сработает.
какой-нибудь воспроизводимый игрушечный код:
breed [Firms firm]
breed [Workers worker]
Firms-own[
ID
]
Workers-own[
FirmID
]
to agent-creation
create-workers 3; There are 3 workers
create-firms 2; There are 2 firms
ask worker 0 [set FirmID "333-1"]
ask worker 1[set FirmID "333-1"]
ask worker 2[set FirmID "444-1"]
ask firm 3 [set ID "333-1"]
ask firm 4 [set ID "444-1"]
end
; Thus, firm 333-1 has 2 workers, 444-1 has only one.
и теперь
to matching-procedure
ask firms [show count workers with [FirmID = [ID] of self]]
end
не работает, но
ask firms with [ID = "333-1"][show count workers with [FirmID = "333-1"]]
делает.
Процедура должна вывести [2 1] (я положу результат в список, но ясно, что идея состоит в том, что на фирме 333-1 работают 2 работника, а на 444-1 только один). Таким образом, фирма 333-1 должнаобъявить 2 и 444-1 только один.