选择输出故障
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 提供额外的时间步来放宽参数并正确评估条件
使用 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 提供额外的时间步来放宽参数并正确评估条件