在 AnyLogic 中连续 space 将一个代理移动到另一个代理时出现意外行为

Unexpected behavior when moving one agent to another in continuous space in AnyLogic

在一个模型中,我让病人去医院。这些特工连续 space 生活。更具体地说,它们被放置在多段线中。初始患者人数为零,但一个事件会不断产生新患者。医院的初始人口为 10,此后不再产生新人口。我要实现的是,在生成新患者的那一刻,他selects是距离患者最近的医院,并在参数中将该医院设置为myHospital。

去 select 最近的医院 我尝试在 Patient 中创建一个函数,并在状态图中使用 myHospital 将患者转移到 myHospital:

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

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

什么方法可以解决这个问题?

有可能当您调用获取最近医院的函数时,您的代理仍在 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); //

这肯定有效