在AnyLogic中将一个代理移动到连续空间中的另一个代理时发生意外行为

时间:2018-12-21 10:11:25

标签: anylogic

在一个模型中,我让病人去医院。这些特工生活在连续的空间中。更具体地说,它们放置在折线中。初始患者人数为零,但事件不断产生新患者。医院的初始人口为10,之后没有新的人口。我想要实现的是,在生成新患者时,他选择了距离患者最近的医院,并将该医院设置为myHospital。

要选择最近的医院,我试图在“患者”中创建功能,并在状态图中使用myHospital将患者转移到myHospital:

Hospital myHospital = this.getNearestAgent(main.hospitals);
return myHospital;

到目前为止,所有患者都选择了与最近的医院相同的医院,这是错误的,特别是考虑到我可以检查患者的X和Y坐标。

哪种方法可以解决此问题?

1 个答案:

答案 0 :(得分:1)

当您调用该函数以获取最近的医院时,您的代理可能仍处于x = 0 y = 0,因此您将获得到该地点的最近的医院。

在活动中应该执行的操作顺序如下:

Patient p=add_patients(); //generate a patient
p.setXY(uniform(0,500),uniform(0,500)); //define your patient initial position FIRST
p.hospital=p.getHospital();// or just do p.getNearestAgent(hospitals);
p.moveTo(p.hospital); //

这肯定可以工作