问题描述
我正在尝试制作一个 Seize 块,以根据通过该块的代理类型从不同的资源池中进行选择。
我的第一次尝试是在 Seize 块中创建资源集参数的动态引用,如图所示:
image of dynamic value in Resource set
if(agent instanceof Pala || agent instanceof Torre){
Extensibles;
}else{
Camabajas3e;
}
其中 Extensibles 和 Camabajas3e 是资源池名称。
但我收到错误消息:“类型不匹配:无法从 ResourcePool 转换为 ResourcePool[][]。”
我的第二次尝试是将两个资源池都包含在列表中,而是使用参数“资源选择条件”和以下代码:
agent.vehículo==unit.vehículo
是vehículo 是流程图中每种代理类型和资源池中每种资源类型内的参数。
但我收到错误消息:“vehículo connot be resolve or is not a field”但它是代理和资源内部的参数。
我做错了什么?我该如何解决?
谢谢。
解决方法
使用同一个池的单位而不是(替代)资源发送
并在代码中这样写:
(agent instanceof Pala || agent instanceof Torre) ? Extensibles : Camabajas3e
对于第二个选项,您实际上可以使用您所做的,但您需要告诉 anylogic 您的代理类型是什么..
agent.vehiculo==((ResourceType)unit).vehiculo