连接到集合中最近的代理

Connect to nearest agent in collection

所以我有几种不同的代理类型:Person、Factory、Hospital、Home、Doctor。 现在,除了 Person 之外,所有这些代理都通过网络连接,而 Person 的初始种群大小 = 0.

现在,当模型运行时,Person 代理将以给定的速率生成。我想要完成的是,Person 的每个实例都确定 Factory、Hospital 或 Home 的哪个实例最近,然后与该特定代理建立连接。

我该如何完成?

到目前为止,我已经能够让 Person 实例连接到最近的医院、最近的工厂或最近的家。我在Person的状态图中的entry action box中写了下面的代码:

Hospital nearestHospital = this.getNearestAgent(main.Hospital); this.connectTo(nearestHospital);

但是一直无法让Person的实例同时判断最近的Hospital、Factory、Home实例。

在您的 Person 代理中,您必须创建 3 个 link 代理,如下图所示:您将在代理面板中找到它们。

之后,您必须分别为医院、家庭和工厂创建连接。 (因为他们是不同的代理人)

Hospital nearestHospital = this.getNearestAgent(main.hospitals);
Home nearestHome = this.getNearestAgent(main.homes);
Factory nearestFactory = this.getNearestAgent(main.factories);
double distanceToHospital=distanceTo(nearestHospital);
double distanceToHome=distanceTo(nearestHome);
double distanceToFactory=distanceTo(nearestFactory);

hospitalLink.disconnectFromAll();
homeLink.disconnectFromAll();
factoryLink.disconnectFromAll();

if(distanceToHospital<distanceToHome && distanceToHospital<distanceToFactory)
   hospitalLink.connectTo(neareastHospital);
else if(distanceToHome < distanceToFactory)
   homeLink.connectTo(neareastHome);
else
   factoryLink.connectTo(nearestFactory);

这就是它必须完成的方式......你以后用它做什么......我不知道