在一个模型中,我让病人转移到医院。这些智能体生活在连续的空间中。更具体地说,它们被放置在多段线中。初始患者数量为零,但一个事件会不断生成新的患者。医院的初始人口为10人,此后不会产生新的人口。我想要实现的是,在生成新患者的那一刻,他选择离患者最近的医院,并在参数中将该医院设置为myHospital。
为了选择最近的医院,我尝试在Patient中创建一个函数,并在状态图中使用myHospital让patient移动到myHospital:
Hospital myHospital = this.getNearestAgent(main.hospitals);
return myHospital;到目前为止,所有患者都选择了与最近的医院相同的医院,这是错误的,特别是考虑到我可以检查患者的X和Y坐标。
什么方法可以解决这个问题?
发布于 2018-12-21 21:27:49
当您调用该函数以获得最近的医院时,您的代理可能仍在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); //这肯定能行得通
https://stackoverflow.com/questions/53882841
复制相似问题