AnyLogic中修改Agent变量报错‘vaPe无法解析’的解决方法
解决AnyLogic队列「On exit」修改Agent变量的报错问题
报错原因
队列默认的agent是通用基础Agent类实例,而你定义的vaPe是自定义Ari Agent专属的变量,编译器无法识别通用Agent有这个字段,因此报错。另外注意,AnyLogic动作里的参数名是小写的agent,你写的大写Agent也可能是问题诱因之一。
具体解决办法
强制转换Agent类型
把通用agent强制转换成Ari类型后再赋值,代码改成:((Ari)agent).vaPe = 1;指定队列的Agent类型
选中目标队列,在右侧属性面板找到「Agent type」选项,选择Ari作为该队列处理的Agent类型。设置完成后,直接写agent.vaPe = 1;即可,无需强制转换——编译器已经明确队列内的Agent都是Ari类型。检查变量访问权限
确认AriAgent中的vaPe变量权限为public(默认是包级权限,若队列与Ari不在同一包下也会导致访问失败),如果是private权限,直接改成public最省事,也可以添加get/set方法来间接修改。
修改完成后运行模型,若不再报错且vaPe成功被赋值为1,说明问题已解决。
内容的提问来源于stack exchange,提问作者jorge salas herranz
相关产品推荐
相关产品推荐

