如何通过编程访问AnyLogic中ResourcePool的资源选择方法?
AnyLogic资源选择策略参数访问方案
- 你提供的
_collectOperator_resourceSelectionMode_xjal是私有方法,默认无法直接调用,但有更简单稳定的方式获取资源选择策略:
直接访问Seize块的属性(推荐)
不用依赖自动生成的私有方法,直接获取Seize块的resourceSelectionMode属性即可。假设你的Seize块名为collectOperator,代码示例:ResourceSelectionMode selectionMode = collectOperator.resourceSelectionMode;当资源选择策略设为“基于评分”时,
selectionMode的值就是你要的RESOURCE_SELECTION_BASED_ON_RATING_VALUE(这是ResourceSelectionMode枚举的一个常量)。通过反射调用私有方法(不推荐)
如果你一定要调用这个私有方法,可以用Java反射机制,但风险较高——AnyLogic版本更新可能会修改自动生成的方法名或逻辑,导致代码失效。示例代码:try { // 获取方法对象,注意参数类型要匹配 Method method = collectOperator.getClass().getDeclaredMethod( "_collectOperator_resourceSelectionMode_xjal", Seize.class, call.class, ResourcePool.class ); method.setAccessible(true); // 允许访问私有方法 // 调用方法,传入所需参数 ResourceSelectionMode mode = (ResourceSelectionMode) method.invoke( collectOperator, collectOperator, null, yourResourcePoolObject ); // 后续可将mode输出至Excel } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); }注意替换代码中的
yourResourcePoolObject为实际的资源池对象,agent参数可传null(如果方法内部未用到)。输出到Excel的处理
获取到ResourceSelectionMode后,可通过以下方式转成适合写入Excel的字符串:- 用
selectionMode.name()获取枚举常量名(如"RESOURCE_SELECTION_BASED_ON_RATING_VALUE") - 用
selectionMode.getPresentationName()获取可视化界面显示的名称(如"基于评分")
- 用
内容的提问来源于stack exchange,提问作者Anthony Clissold
相关产品推荐
相关产品推荐

