已成功向trainPopulation添加Train,求移除该对象的有效方法
解决方法
- 选对事件触发时机:不要在trainDispose的「On exit field」中操作,因为Train Agent离开Dispose后会被立即销毁,此时种群中已经找不到对应的实例。应该改用「Actions/On enter」事件,此时Train还处于活跃状态,能准确定位到要移除的对象。
- 正确的移除代码:在trainDispose的「On enter」事件中,直接写入以下代码:
这里的remove_trainPopulation(agent);agent是AnyLogic在该事件上下文自动提供的变量,对应当前进入Dispose的Train实例,和你的trainPopulation类型完全匹配。 - 更稳妥的备选方案:如果上述方法仍有问题,可直接在Train Agent的「On destroy」事件中添加代码:
当Train被销毁时,remove_trainPopulation(this);this指向当前Train对象,调用该方法能确保从种群中移除对应实例。
额外检查:确认你的trainPopulation是Population<Train>类型,保证和Agent类型一致,避免因类型不匹配导致移除失败。
内容的提问来源于stack exchange,提问作者Tasheng Liu
相关产品推荐
相关产品推荐

