如何在AnyLogic中按名称连接代理?

时间:2019-12-10 18:56:45

标签: simulation anylogic agent-based-modeling

我正在尝试通过名称连接不同的代理类型。因此,例如,我有一个数据集,其中有一个患者姓名和他们的医生姓名的列表。首先,我想创建两个不同的患者和医生群体,其中从数据集中为每个个体分配一个名称。然后,我需要根据数据中的相应连接在两个不同总体之间创建连接。有人知道怎么做吗?任何帮助表示赞赏!

AT

3 个答案:

答案 0 :(得分:0)

以下是一些简短的想法,希望对您的过程有所帮助: 1)如果您想让医生和患者保持联系,则可以将代理人设计成医患二重体-这可能在很大程度上取决于您的研究问题;要么 2)如果一位医生可以治疗一位以上的病人,那么您也可以考虑建立一个以医生为中心节点的,实际上是网络式安排的代理人,同样,这取决于您的研究问题以及数据的外观;要么 3)如果您要基于某些规则将医生与患者联系起来,请考虑通过使用“过程建模库”选项板中的“匹配”功能来使用离散事件方法。 最好的祝愿, LCG

答案 1 :(得分:0)

您应该使用“代理链接”对象。这正是您需要的。

在您的情况下,您将需要编写一些遍历数据的代码,并相应地设置链接。使用AgentLink对象检查示例模型以了解它并阅读帮助,其中包含很多内容。

答案 2 :(得分:0)

让我们假设您的医生和患者代理人口已创建,并且患者的参数名为DoctorName,而医生的参数名为name。您必须根据从何处获取信息来弄清楚该如何做。我还将假设所有医生的姓名都不同。

医生将有一个链接到代理对象的链接(从代理选项板),称为PatientLink,它是链接的集合和双向的,但在患者侧是单个链接(在患者侧称为DoctorLink)。

现在您可以使用以下功能连接它们:

for(Patient p : patients){
     Doctor doctor=findFirst(doctors,d->d.name.equals(p.doctorName));
     p.doctorLink.connectTo(doctor);
}