考虑同物料差异:返修件沿原产线无停留通过工位的仿真实现问题
解决方案
你之前的方案失效核心原因是将工件个体的状态属性定义为了工位全局共享变量,同时没有正确获取当前流经工位的工件实例属性,导致逻辑不匹配。可按以下步骤调整:
- 自定义工件Agent属性
给你的工件Agent新增布尔类型属性isReworked,默认值设为false。在返修区完成返修、将工件送回产线起点的逻辑中,添加代码工件实例.isReworked = true;,完成返修状态标记。 - 修改工位延迟时间配置
删除原工位延迟时间使用全局变量乘法的逻辑,替换为按当前工件属性判断的表达式:
该逻辑作用为:当前进入工位的是返修完成工件时,延迟时间为0直接通过,否则执行正常加工时间分布计算。无需在Main agent中单独调用该标识,在工位的流程模块内直接使用默认关键字agent.isReworked ? 0 : triangular(109.1, delaytime_bec, 307.6)agent即可访问当前流经工件的所有自定义属性。 - 逻辑验证(可选)
若需要确认属性判断是否生效,可在工位的**进入时(On enter)**动作栏添加日志输出代码,仿真运行时通过控制台查看对应输出即可:traceln("工件ID:"+agent.id+" 进入工位,是否为返修件:"+agent.isReworked);
注意:不要为每个工位设置独立的状态变量,返修标记是工件自身的固有属性,所有工位共用同一个工件的标记值即可,可避免多工位变量状态不一致的问题。
内容的提问来源于stack exchange,提问作者Manu_CS
相关产品推荐
相关产品推荐

