所以我有几种不同的代理人类型:人,工厂,医院,家庭,医生。 现在,除Person之外的所有这些代理都通过网络连接,而Person的初始填充大小= 0。
现在,当模型运行时,将以给定的速率生成Person代理。我想要完成的是Person的每个实例确定Factory,Hospital或Home的哪个实例是最近的,然后建立与该特定代理的连接。
我将如何做到这一点?
到目前为止,我已经能够将Person的实例连接到最近的医院,最近的工厂或最近的家庭。我在Person的状态图的输入操作框中编写了以下代码:
Hospital nearestHospital = this.getNearestAgent(main.Hospital); this.connectTo(nearestHospital);
但我一直无法让Person的实例同时确定最近的Hospital,Factory,Home实例。
答案 0 :(得分:1)
在您的Person代理中,您必须创建3个代理链接,如下图所示:您将在代理选项板中找到它们。
之后,您必须为医院,家庭和工厂独立创建连接。 (因为他们是不同的代理人)
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);
这就是它必须要完成的方式......你以后用它做什么......我不知道