如何在AnyLogic动态事件中访问Agent参数?现有方法失效求助
动态事件访问Agent参数失效的解决办法
- 先把传入的Agent存进事件实例里
你的create_Calc事件得先把调用时传的Agent存成自己的成员变量,不然每次执行事件时拿不到正确的Agent引用。比如在事件的代码开头加:this.agent = agent; // 前提是事件类里已经定义了Agent类型的成员变量 - 用调度方法替代直接创建事件
在Unload-Wait模块里,别用create_Calc(1,SECOND,agent),改成scheduleCreate_Calc(1, SECOND, agent)——create是创建单次事件,要重复执行得用调度方法配合内部判断。 - 在事件里加终止判断逻辑
在create_Calc的执行代码里,直接通过存好的Agent实例访问参数,满足条件就停止调度:// 这里写你要执行的计算逻辑,比如更新Unloader的值 agent.Unloader += 5; // 按你的实际需求调整 // 判断是否继续执行 if (agent.Unloader != agent.MaxWeight) { scheduleCreate_Calc(1, SECOND, agent); } - 检查Agent参数的访问权限
确认Unloader和MaxWeight是Agent的公共参数,或者事件能访问到这些参数(比如用getter方法,或者把参数设为protected)。
内容的提问来源于stack exchange,提问作者Jahidul Hasan Razib
相关产品推荐
相关产品推荐

