Anylogic:如何使用代理的特殊连接号作为变量?

问题描述 投票:0回答:1

我有一个代理类型

Household
,及其组
households
。它们有一个字符串变量
identity
,它将在运行时动态赋值,例如
"Volunteer"
"Initiator"
等等。

现在我想在家庭之间建立一些特殊的联系。其中之一是

neibNet
,它让志愿者寻找离他们最近的发起者。然后我想读取每个启动器上存在的neibNet 连接数

当我运行模型时,问题就像[this](https://i.stack.imgur.com/HI8eO.png)。连接已成功应用,每个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++;
    }
}
java anylogic
1个回答
0
投票

我解决了我的问题。函数

neibNet.getConnections().size()
或其他类似方法可用于读取链接到特定代理的特殊连接的数量。但是,我在形成连接时读取了该值,因此该函数没有时间捕获值。这是我的逻辑错误。

© www.soinside.com 2019 - 2024. All rights reserved.