选择输出故障

SelectOutput malfunctioning

使用 selectOutput 我遇到了问题(我认为这是故障)。 条件如下:

main.controlLot[agent.orderID][workcenterID]==
  main.alreadyEntered[agent.orderID][workcenterID] || 
  agent.numberProductsInPallet ==
    ((int) selectFrom(routings)
      .where(routings.work_center.eq(Name))
      .where(routings.component_id.eq(agent.component))
      .firstResult(routings.palletization))

进入时我正在检查 self.condition(agent) 并且当它被条件 (main.controlLot[agent.orderID][workcenterID]==main.alreadyEntered[agent.orderID][workcenterID]) 的第一段验证时它不会通过 True 端口。但是,self.condition(agent) returns 是的。

我将以下代码放在退出 (False) 上以确认条件是否可以更改中间逻辑:

traceln(main.controlLot[agent.orderID][workcenterID] + " " + main.alreadyEntered[agent.orderID][workcenterID]);
traceln(agent.numberProductsInPallet);
traceln(self.condition(agent));

并且 traceln(self.condition(agent) 打印为真。我不明白为什么它会将条件评估为真但通过错误端口发送代理。

这可能与您使用的系统类型有关。
如果您使用 "pull" 协议(参见:http://www.anylogic.com/blog?page=post&id=157),代理将在输入之前向前看并评估 selectoutput。由于在 selectoutput 对象中花费的时间为 0,因此它必须这样做。
如果条件在 after 它已经评估了 selectoutput 函数,它仍然会选择错误的路径,即使它是正确的。 要修复它,根据您的代码,您可以使用 queue 对象。这将为代理 1 提供额外的时间步来放宽参数并正确评估条件