AnyLogic状态机退出动作关联资源池:释放资源报错求助
问题解决线索
第一个代码错误原因及修正
你的第一段代码里,resourceUnitsOfPool(IK) = 1使用了赋值操作符=,而判断相等需要用比较操作符==,这是基础语法错误。不过即使修正这个符号,还存在函数使用不当的问题,继续看下面的说明。
第二个代码错误原因
resourceUnitOfPool(IK)函数的作用是获取资源池中的单个资源单元(返回类型为Agent),并非数值类型,所以无法直接和整数0用>=比较,这就是报错的原因。
正确实现方式
在AnyLogic中,操作ResourcePool的资源单元数量,需要调用其内置的API方法:
- 若要判断是否有已分配的资源单元可以释放,使用
getAllocatedUnits()获取已分配单元数 - 释放资源单元用
freeUnits(1)是正确的
修正后的代码如下:
if (IK.getAllocatedUnits() > 0) { IK.freeUnits(1); } else { trace("No resources available in IK to remove."); }
补充说明
你之前尝试的hasUnits、resourceUnitsAvailable并非ResourcePool类的标准方法,所以会提示未定义。请使用AnyLogic官方API中ResourcePool类提供的方法来操作资源单元。
内容的提问来源于stack exchange,提问作者LAPT
相关产品推荐
相关产品推荐

