我有一个代理类型
Household
,及其组 households
。它们有一个字符串变量identity
,它将在运行时动态赋值,例如"Volunteer"
、"Initiator"
等等。
现在我想在家庭之间建立一些特殊的联系。其中之一是
neibNet
,它让志愿者寻找离他们最近的发起者。然后我想读取每个启动器上存在的neibNet 连接数。
当我运行模型时,问题就像。连接已成功应用,每个Initiator
的
neibNet连接数已被记录并显示,但我无法引用此数字来计算
raisedDonation
。
我尝试了以下方法来获取值,它们都返回0:
// test 1, told by AI that it's the overall neibNet links rather than one agent
raisedDonation = this.neibNet.getConnectionsNumber() + 1;
// test 2
raisedDonation = this.neibNet.getConnections().size() +1;
// test 3
raisedDonation = this.neibNet.size() + 1;
// test 4
raisedDonation = 1;
for (int i = 0; i < main.households.size(); i++) {
if (main.households.get(i).identity == "Volunteer") {
int ii = i;
Household raised = findFirst(main.households, h -> h.householdid == ii);
if (raised.neibNet.isConnectedTo(this) == true) raisedDonation++;
}
}
我解决了我的问题。函数
neibNet.getConnections().size()
或其他类似方法可用于读取链接到特定代理的特殊连接的数量。但是,我在形成连接时读取了该值,因此该函数没有时间捕获值。这是我的逻辑错误。