JIT 看板生产系统 WITNESS 仿真建模和优化实现
生产流程描述
实例系统生产制造单一类型的产品——振动轮,其生产原材料为各种类型的钢板,通过
机械加工,然后组装成一个空轮(没有安装轴承座、轴承和轴)。组成振动轮的部件主要为
5 类,分别为外圈、内圈、加强筋、内隔板和封口板,以数字 1,2,3,4,5 表示;其生产
过程包括 12 个主要加工单元,分别为剪板切割(WS1)、打坡口(WS2)、卷圆(WS3)、轮
圈焊接(WS4)、找圆(WS5)、车断面(WS6)、数控切割(WS7)、调平(WS8)、油漆
(WS9)、钻孔(WS10)、内轮焊接(分装工作站)和轮子焊接(总装工作站)。其生产流程
如图 所示。
外圈原材料为特定型号的钢板,加工过程依次为两块外圈钢板通过卷板切割机切割成适
合大小,通过坡口机将钢板两端结合处内外打出坡度,通过卷圆机将钢板卷成轮圈,经过轮
圈焊接工段将轮圈接口处焊接起来,通过找圆机将轮圈找圆,然后进入轮子焊接工段,与内
轮和封口板焊接成轮子。
内圈原材料也为特定型号的钢板,加工过程为每次三块钢板通过卷板切割机切割成适合
大小的板材,然后打坡口、卷圆、焊接、找圆,同外圈加工过程一样。在经过找圆工段之后,
内轮圈再经过数控车床,进行端面对车,经过钻孔工段钻出工艺孔,到内轮焊接工段与加强
筋和内隔板焊接成内轮。
加强筋、内隔板和封口板原材料也为特定型号的钢板,首先经过数控切割机切割成型,
然后调平、油漆,内隔板和封口板需要经过钻口工段,钻制工艺孔,然后,内隔板到内轮焊
接工段进行与内圈和加强筋的焊接,封口板到轮子焊接工段与内轮和外圈焊接成轮子。
1
1,5 产成品
6
需求
3
1
4,53,4,53,4,5
1,21,21,2
WS1 WS2
1,2
WS3 WS4 WS5
WS7 WS8 WS9
W
S12
WS10 W
S11
2
物料流 看板流 WS:工作站
图 实例生产/库存系统生产流程图
4
WS6
基本生产单元的分解
该生产/库存系统包括四条串行线,分别为:
(1)外圈加工串行线:剪板切割、打坡口、卷圆、轮圈焊接、找圆;
(2)内圈加工串行线:剪板切割、打坡口、卷圆、轮圈焊接、找圆、车端面、钻孔;
(3)加强筋加工串行线:数控切割、调平、油漆;
(4)内隔板、封口板加工串行线:数控切割、调平、油漆、钻孔。
该生产/库存系统包括两个并行加工模块,分别为:
(1)内圈、加强筋、内隔板焊接为内轮的焊接工段,即分装工作站 WS11;
(2)外圈、内轮、封口板焊接为轮子的轮子焊接工段,即总装工作站 WS12。
生产流程中有资源共享和竞争的作业,如:
(1)内、外圈在进行切割、打坡口、卷圆、焊接等工序时,使用的都是相同的设备;
(2)加强筋、内隔板、封口板在进行切割、调平工序时,也是竞争使用相同的设备。
系统绩效指标设计
系统绩效指标考虑系统产出量、在制品库存、设备稼动率和订单满意度四项。在进行
Witness 仿真程序设计的时候,将通过如下的数据模型和相关的程序进行统计计算获得。
(1)系统产出量(TPUT,ThroughPUT):统计在特定时间长度内,生产/库存系统所产
出的成品数量。该指标在 Witness 中可以直接在成品缓冲区的“action on input…”中进行变量
的累计。每当一个成品进入缓冲区,执行式(5-1)的计算程序,即产出量增加了一个。
TPUT= TPUT+1 (5-1)
在仿真模型中,该统计任务由订单队列 _order 的“action on input…”和函数
来实现,具体程序参看附录 B 部分。
(2)在制品库存(WIP):用来统计某一时点上,生产/库存系统中所拥有的原材料、
半成品或成品的量,一般用价值来衡量。
由于生产线上具有多种物料,如外圈、内圈、加强筋、封口板、内隔板,每种类型物料
所具有的价值不一样,需要统计各种物料的实际价值。由于本实例并不是对实际的问题进行
研究,仅仅是提供一种研究方法,所以为了便于对各种方案进行经济性比较,根据每件产品
或部件的价值,给予它们附上对应的价值权重,然后进行统计计算。假设加强筋最便宜,以
它为 1,每件物料经过一道工序加工后,每加工 10 分钟,价值增加一个单位,不足 10 分钟
的按 10 分钟计,得出实例系统中物料的价值权重系数如表 ,表中下划线前的字符为物料
名称中文首字母。
表 物料价值权重系数表*
名
称
Jqj_WS7 Fkb_WS7Ngb_WS7 Jqj_WS8 Fkb_WS8 Ngb_WS8 Jqj_WS9 fkb_WS9ngb_WS9
权
重
1 2 2 2 4 4 3 5 5
名
称
Wq_WS1 Nq_WS1 Wq_WS2 Nq_WS2 Wq_WS3 Nq_WS3 Wq_WS4 Nq_WS4 Wq_WS5
权
重
30 30 35 34 38 37 44 42 47
名
称
Nq_WS5 Nq_WS6 Nq_WS10Fkb_WS10Ngb_WS10 WS11 WS12
权
重
44 49 52 8 8 83 151
系统中的在制品库存 WIP 计算公式如式(5-2):
(5-2)
式中: ——第 i 种物料在各工序后的缓冲区中的数量;
——第 i 种物料在各工序机器上等待加工或正在加工的数量;
——第 i 种物料在各工序间运输工具上的数量;
——第 i 种物料的价值权重。
在该系统的仿真模型中,某一仿真时点上的 QFi、QMi、QTi 都可以通过 Witness 提供的
函数直接得出。该指标的统计由目标函数 来计算,具体设计参看附录 B 部分。
(3)定单平均等待时间(AWT,Average Waiting Time):用于统计没能够及时被满足
的订单在系统中的平均等待时间,用来揭示随机生产/库存系统对订单的反应灵敏度。如果
某一订单在提前期之前得到满足,则等待时间为零;如果某一订单在提前期之后得到满足,
则等待时间为当前时间与提前期的差值。该指标数值越低,表示顾客满意度越高;该指标数
值越高,表示顾客满意度越低。计算公式如式(5-3)所示。
(5-3)
n
i
iiii WQTQMQFWIP
1
)(
iQF
iQM
iQT
iW
n
WT
n
SWT
AWT
n
i
i
1
WTi=
Ti’-Ti
0
Ti’>Ti
Ti’≤Ti
式中:n——仿真期间订单总数;
Ti’——第 i 批订单实际发运时间;
Ti——第 i 批订单预定发运时间;
WTi——第 i 批订单的等待时间;
SWT——仿真期间订单总等待时间。
在仿真模型中,这两项统计任务统一在订单处理单元中执行。执行程序体参见附录 B
中 _meet 的“Actions on finish”部分。
(4)设备平均稼动率(OR,Operation Rate):用于统计生产系统中机器利用程度,仿
真系统对机器类型的元素提供了标准状态统计函数,可以统计机器的空闲、运行、故障和维
修等状态所占时间的百分比。
在进行生产系统优化过程中,需要使用的机器时间包括下列几种:
(i) 最大操作时间:指的是设备可用的最大时间,若设备本身为厂内自购,而非租
借,且可完全由厂內自主使用,则最大操作时间一般为日历时间。
(ii) 负荷时间:为机器设备可稼动的时间,是最大操作时间扣除停机损失,停机损
失包括计划上的休止时间,如休假、教育训练、保养等。
(iii) 稼动时间:是负荷时间减去停机时间,而停机时间包括批次转换、设备异常停
止、修理、待料等时间。机器稼动率=稼动时间/负荷时间。
(iv) 故障间隔时间:机器每运转多长时间就会出现一次故障,并需要维修。
(v) 故障维修时间:机器出现故障,修复所需的时间。
因此,本系统的设备平均稼动率计算公式如式(5-4)。
(5-4)
式中:m——系统中工作单元的数量;
ORj——系统中第 j 个工作单元中机器设备的稼动率;
在仿真模型中,该统计任务通过函数来实现,程序设计参看附录 B 中的 函数
体。
生产线平衡
在进行系统仿真之前,需要将每个工作单元中机器设备的设计稼动率加以平衡,这样仿
真过程不会因为设备能力不平衡,导致某些工序过快成为瓶颈工序,使前后工序的机器设备
因为等待而导致利用不足。为了防止这一问题,将根据该系统的设计能力 2500 台/年,每年
250 个工作日来平衡生产线。由于机器对每一部件的加工时间均值确定,只能通过设计每个
加工单元中机器的数量来对生产线进行设计,使得生产线能够很好的满足设计的生产能力。
m
j
jORm
OR
1
1
对每个工作单元机器数量的计算过程涉及到如下的变量符号,首先对它们加以说明。
TWT——TotalWorkTime:每个工作单元中机器一年中的负荷时间;
QU ——QuantityUnit:每个工作单元所拥有的机器数量;
TQW——TotalQuantityofWork:每个工作单元所完成的产品套数;
TC ——TimeCycle:每个单元完成一套产品的生产平均周期时间,例如:WS3 设备完
成的一套产品为分别加工一个外圈、一个内圈,则平均周期时间为完成一个外圈的平均周期
时间(30’)+完成一个内圈的平均周期时间(30’),共 60 分钟;
TNB——TotalNumofBreakdown:全年机器发生故障的次数,每月 1 次,均值为 12 次;
RT——RepairTime:单次机器维修所需时间,均值为半天,4 小时,240 分钟;
BR——BreakdownRate:故障率,均值为 240*12/240/480=%;
BI——BreakdownInterval:机器故障发生时间间隔;
OR——Operating Rate:机器稼动率,假设为 80%。
通过该产品的 BOP,得出该系统生产单件最终产品,在各个生产单元上需要的平均周
期时间 TC 如表 所示。
表 生产系统中生产单元 TC 表
单
元
WS1 WS2 WS3 WS4 WS5 WS6 WS10 WS7 WS8 WS9 WS1
1
WS12
时
间
50 90 60 120 40 50 130 8 38 20 30 45
通过系统的设计生产能力和机器的生产周期,同时考虑故障比率较低,在计算机器台数
时将其忽略不记,设计计算公式如(5-5)所示。
(5-5)
式(5-5)中涉及四项变量,其中由于设备的故障、维修等所占时间比例忽略不记,所
以机器全年负荷时间为 TWT=250 天*480 分钟/天=120000 分钟;假设稼动率产品套数就是
生产线的年设计能力,即 TQW=2500;从表 可以得出这 12 个工作单元的单套产品生产
平均周期时间 TCi。所以根据式(5-5)可以得出每个工作站的机器数量计算公式,如式
(5-6)。
(5-6)
计算式(5-6)可以得出每个加工单元所需的设备数量,如果结果是小数,取不小于结果
480250
ii
iii
QUTWT
TWTTCTQW
TC
OR120000
TCTQW
QU iiii
的最小整数。通过计算得出每个单元需要配备的机器数量如表 所示。
表 加工单元设备台数表
加工单元 WS1 WS2 WS3 WS4 WS5 WS6 WS10WS7 WS8 WS9 WS11 WS12
设备数量 2 3 2 4 2 2 4 1 1 1 1 2
根据设备故障比率,可以计算出设备故障平均时间间隔,计算公式如式(5-7):
BI=TWT×(OR-BR)/TNB=120000× (5-7)
即每台设备加工时间累计达到 7750 分钟,就会发生故障,需要进行平均时间为 240 分
钟的维修后,才可以继续运转。
看板数量的确定
生产系统循环过程中看板的数量决定了生产、使用或转让的在制品数量,决定了系统运
作效率的高低。建立看板控制系统需要确定所需要的看板卡的数量。对于本文的单看板生产
系统需要确定生产看板的套数,以它来控制加工单元的开始生产或停止生产。得到多数研究
文献和实际应用接收的计算方式有如下两种:
文献[9]的最优看板计算公式(5-8)。
(5-8)
式中:k——看板卡套数;
D——一段时期所需产品的平均数量;
L——补充订货的提前期;
S——安全库存;
C——容器容量。
文献[10]的看板数量计算公式(5-9)。
(5-9)
式中:R——组件利用速度,如 15 件/分钟;
Tp——单件生产时间,如: 分钟/件;
Td——箱子的运输和传送时间,如: 分钟;
C——箱子的单位容量,如:45 件;
X——需求速率变化的百分比,如 10%。
使用式(5-8)来确定看板数量,由于该公式没有应对动态需求这一项的变量,有效运
用该公式的重要一步就是确定安全库存 S 的数值,而一旦动态需求的随机特征有所变化,
该公式不能相应的进行反馈;式(5-9)考虑到动态需求,在公式中设定了需求速率变化 X
这一项,但是它没有考虑到安全库存,计算出来的数值通常偏小,引起生产系统较严重的缺
C
SDL
k
)1(
CXTTRN dp /)1)((
货现象。本文研究生产/库存系统在需求和生产服务具有随机波动性时,随机变量的变异系
数对系统绩效的影响,所以根据式(5-8)和式(5-9)进行修正,在式(5-9)添加安全系数α
项,以保持看板数量能够对随机变量做出反应;同时,考虑批处理作业,添加批处理数据
项 B,保持系统的有效运行。对于生产看板数量的修正公式如(5-10)式。
(5-10)
式中:k——生产看板数量;
[]——取大于表达式数值的最小整数;
R——组件利用速度;
B——下道工序对该部件的批处理数量;
Tp——单件生产时间;
Td——箱子的运输和传送时间;
C——箱子的单位容量;
X——需求速率变化的百分比;
α——安全系数。
同一产品生产线的利用速率 R 为每天设计产出量除以每天的时间。在仿真实例中,产
出量为每天 10 套,即 R=10/480min=1/48(套/分钟);B 和 Tp 各个部件各不相同,见流程数
据表附录 A;由于不考虑工序间运输时间对系统绩效的影响,取 Td 为 0,C 为 1;X 就是需
求随机分布函数的变异系数 CV,如果是需求确定性实验,则 X=0,如果为需求随机性实验,
则 X 有需求的变异系数确定;安全系数α通过仿真优化,暂取为 。
根据看板数量计算公式(5-9),对各个部件的各工序生产看板数量计算程序见附录 B
的 Initial Actions 和看板计算函数 部分。
仿真模型的 WITNESS 实现
通过对该随机生产/库存系统流程的分析和系统配置参数的设定,设计出系统的 Witness
仿真模型,其可视化界面如图 所示。
]/)X1)((B[ CTTRk dP
图 振动轮生产/库存系统 Witness 仿真界面
其中仿真模型中变量数据的初始化设置设计于 Witness 仿真模型的 Initialize 程序中,函数的
逻辑结构、加工单元、原材料、半成品以及库存等实体元素的输入输出关系等都设计在这些
元素对应的 action 或 rule 编辑框内,具体程序参考附录部分。
模型参数优化
在计算机模型验证部分,为了证明计算机模型同理论模型是相符的,只考虑了计算机模
型在确定型和随机型两种情况下的设备稼动率和故障率,以及产品产出数量,没有考虑系统
的另外两个绩效指标:库存水平和定单平均等待时间。这两项指标与看板数量和维修人员数
量之间具有很强的相关性。因此为了研究各种可变因子变化对系统绩效的影响,需要建立一
个统一的、优化的模型参数环境,需要对模型的相关参数进行优化取值,涉及的参数有看板
安全系数α和维修工的数量,对其进行优化选择的准则是:在制品库存尽可能低、定单平均
等待时间尽可能低、维修工数量尽可能少。
将参数α和维修工的数量 Qmen 的可能取值设置如表 所示,从表上可以看出α有 13
种可选取值,Qmen 有 6 个可能取值,累积有 78 种组合,现在寻求仿真模型在这 78 种方案
的哪一种方案配置下,系统绩效最优。
表 优化参数的可能取值表
变量名称 可能取值 累积
α [,] step= 13
Qmen [1,6] step=1 78
通过 Witness 仿真优化工具包 optimize 进行优化仿真运行,将实验结果导入到 Excel 中,
按照定单平均等待时间 AWT 为第一排序字段、在制品库存 WIP 为第二排序字段,递增排
列。将排列结果的前 9 个相对最优配置方案及实验结果列入表 。
表 模型仿真参数优化结果数据表
WIP Qmen α AWT OR TPUT
4794 4 0 2520
4794 4 0 2520
5031 6 0 2520
5031 6 0 2520
5140 5 0 2520
5140 5 0 2520
5230 3 0 2520
5230 3 2 0 2520
5230 3 0 2520
从表 可以看出,在确定性情况下,α取 和 两个数值得出的系统绩效相同;再比较
WIP 数值,最低值为 4794;维修工数量直到第 7 条配置时,才为 3 人,少于第一条配置。
因此,选定第一条配置为系统的最优配置方案。在下一章进行的仿真实验研究中,如果没有
特别的说明,模型中的α和 Qmen 将确定为这两个数值( 和 4)。
附录 B Witness 仿真程序
MODEL INFORMATION:
Model Name: production and inventory system simulation
Model Title: optimize system parameters
Model Author: jiannywang
Creation Date: Thu Mar 31 11:29:17 2005
Model Notes: Industrial Engineering Department
Business Administration School
University of Jiangsu
Initial Actions: ! = 100
! = 0
=
_wl_qg = (25)
_wl_dpk = (50)
_wl_jy = (30)
_wl_hj1 = (60)
_wl_zy = (25)
_nl_qg = (20)
_nl_dpk = (40)
_nl_jy = (25)
_nl_hj1 = (50)
_nl_zy = (20)
_nl_cdm = (50)
_nl_zk = (30)
_jqj_qg = (12 * 4)
_jqj_tp = (14 * 4)
_jqj_yq = (60 * 4)
_ngb_qg = (15 * 2)
_ngb_tp = (25 * 2)
_ngb_yq = (60 * 2)
_ngb_zk = (50 * 2)
_fkb_qg = (18 * 2)
_fkb_tp = (25 * 2)
_fkb_yq = (60 * 2)
_fkb_zk = (50 * 2)
_hj2 = (30)
_hj3 = (45)
= 7750
= 240
_____________________________________________________________
ELEMENT NAME: _order
Element Type: Buffer
Quantity: 1
Capacity: 1000
Input Option: Rear
Output Option: First
Search From: Front
Actions
Input: = +
Output: = +
_____________________________________________________________
ELEMENT NAME:
Element Type: Part
Type: Variable attributes
Group number: 1
Inter Arrival Time: () + 1
First Arrival at:
Maximum Arrivals: Unlimited
Input / Output Rules
Output: PUSH to _order
Actions
Create: = TIME
= () + 1
= () + 1
_____________________________________________________________
ELEMENT NAME: _meet
Element Type: Machine
Quantity: 1
Priority: Lowest
Input / Output Rules
Input: SEQUENCE /Wait _order#(1),
Output: PUSH to SHIP
Actions
Finish: IF + + 20 < TIME
= + 1
= + TIME - - - 20
ENDIF
_____________________________________________________________
ELEMENT NAME:
Element Type: Part
Type: Variable attributes
Group number: 1
Maximum Arrivals: 0
Actions
Create: = 4
= 8
ICON = 106
= 25
= 18
= 25
_____________________________________________________________
ELEMENT NAME:
Element Type: Part
Type: Variable attributes
Group number: 1
Maximum Arrivals: 0
Actions
Create: = 4
= 8
ICON = 107
= 25
= 15
= 25
_____________________________________________________________
ELEMENT NAME:
Element Type: Part
Type: Variable attributes
Group number: 1
Maximum Arrivals: 0
Actions
Create: = 3
= 60
= 40
= 25
= 50
_____________________________________________________________
ELEMENT NAME:
Element Type: Part
Type: Variable attributes
Group number: 1
Maximum Arrivals: 0
Actions
Create: = 20
= 50
= 30
_____________________________________________________________
ELEMENT NAME:
Element Type: Part
Type: Variable attributes
Group number: 1
Maximum Arrivals: 0
Actions
Create: = 8
= 16
ICON = 105
= 12
= 14
_____________________________________________________________
ELEMENT NAME:
Element Type: Part
Type: Variable attributes
Group number: 1
Maximum Arrivals: 0
Actions
Create: = 25
_____________________________________________________________
ELEMENT NAME:
Element Type: Part
Type: Variable attributes
Group number: 1
Maximum Arrivals: 0
Actions
Create: = 2
= 50
= 50
= 30
= 60
_____________________________________________________________
ELEMENT NAME: repairmen
Element Type: Labor
Quantity always available: 4
____________________________________________________________
ELEMENT NAME:
Notes: THE AVERAGE WAITING TIME OF ORDER
Element Type: Function
Type: Real
Parameters: 0
Actions
Execution: RETURN / ()
_____________________________________________________________
ELEMENT NAME:
Notes: break time distribution funtion
Element Type: Function
Type: Real
Parameters: 2
mean,Real
ppns,Integer
Actions
Execution: = GAMMA (1 / ** 2,mean * ** 2, + ppns)
RETURN !mean
_____________________________________________________________
ELEMENT NAME:
Notes: DEMAND BATCH SIZE
Element Type: Function
Type: Integer
Parameters: 0
Actions
Execution: RETURN GAMMA (1 / ** 2,29 * ** 2, + 14)
_____________________________________________________________
ELEMENT NAME:
Notes: DEMAND INTER ARRIVAL TIME
Element Type: Function
Type: Real
Parameters: 0
Actions
Execution: RETURN GAMMA (1 / ** 2,1439 * ** 2, + 13) !1439
_____________________________________________________________
ELEMENT NAME:
Notes: DEMAND LEAD TIME
Element Type: Function
Type: Integer
Parameters: 0
Actions
Execution: RETURN GAMMA (1 / ** 2,1439 * ** 2, + 15) !1439
_____________________________________________________________
ELEMENT NAME:
Element Type: Function
Type: Integer
Parameters: 1
meantime,Real
Actions
Execution: _kbsum = 1 / 48 * meantime * (1 + + ) + 1
RETURN _kbsum
!x=the coeffection variation
!a=the safe index of kanban
!p=the process time multi batchsize
_____________________________________________________________
ELEMENT NAME:
Element Type: Function
Type: Integer
Parameters: 0
Actions
Execution: RETURN TOTALIN (_order)
_____________________________________________________________
ELEMENT NAME:
Element Type: Function
Type: Real
Parameters: 0
Actions
Execution: RETURN (SUTIL (,2) + SUTIL (,2) + SUTIL (,2) + SUTIL
(,2) + SUTIL (,2) + SUTIL (,2) + SUTIL (,2) + SUTIL
(,2) + SUTIL (,2) + SUTIL (,2) + SUTIL (,2) + SUTIL
(,2)) / 12
_____________________________________________________________
ELEMENT NAME:
Notes: process time distribution funtion
Element Type: Function
Type: Real
Parameters: 2
mean,Real
ppns,Integer
Actions
Execution: = GAMMA (1 / ** 2,mean * ** 2, + ppns)
RETURN !mean
_____________________________________________________________
ELEMENT NAME:
Notes: repair time distribution funtion
Element Type: Function
Type: Real
Parameters: 2
mean,Real
ppns,Integer
Actions
Execution: = GAMMA (1 / ** 2,mean * ** 2, + ppns)
RETURN !mean
_____________________________________________________________
ELEMENT NAME:
Element Type: Function
Type: Integer
Parameters: 0
Actions
Execution: RETURN
_____________________________________________________________
ELEMENT NAME:
Element Type: Function
Type: Real
Parameters: 0
Actions
Execution: !add all finish product WIP value
(1) = NPARTS () * 30 + NPARTS ((1)) * 35 + NPARTS
((2)) * 34 + NPARTS ((1)) * 38 + NPARTS ((2)) * 37 + NPARTS ((1))
* 44 + NPARTS ((2)) * 42 + NPARTS ((1)) * 47 + NPARTS ((2)) * 44 +
NPARTS () * 49 + NPARTS () * 83 + NPARTS () * 151
(1) = (1) + NPARTS ((1)) * 1 + NPARTS ((2)) *
2 + NPARTS ((3)) * 2 + NPARTS ((1)) * 2 + NPARTS ((2)) * 4 + NPARTS
((3)) * 4 + NPARTS ((1)) * 3 + NPARTS ((2)) * 5 + NPARTS ((3)) * 5
+ NPARTS ((1)) * 52 + NPARTS ((2)) * 8 + NPARTS ((3)) * 8 + NPARTS
(_meet) * 151
!add all material in machine value
(3) = NPARTS2 (,,0) * 27 + NPARTS2
(,,0) * 28 + NPARTS2 (,,0) * 30 + NPARTS2
(,,0) * 30 + NPARTS2 (,,0) * 35 + NPARTS2
(,,0) * 34 + NPARTS2 (,,0) * 38 + NPARTS2
(,,0) * 37 + NPARTS2 (,,0) * 44 + NPARTS2
(,,0) * 42 + NPARTS2 (,,0) * 44 + NPARTS2
(,,0) * 8 + NPARTS2 (,,0) * 47 + NPARTS2
(,,0) * 83
(3) = (3) + NPARTS () * 6 + NPARTS2
(,,0) + NPARTS2 (,,0) * 2 + NPARTS2
(,,0) * 2 + NPARTS2 (,,0) * 2 + NPARTS2
(,,0) * 4 + NPARTS2 (,,0) * 4 + NPARTS2
(,,0) * 5 + NPARTS2 (,,0) * 5 + NPARTS2
(,,0) * 49 + NPARTS2 (,,0) * 3 + NPARTS2
(,,0) * 52 + NPARTS2 (,,0) * 8
RETURN (1) + (2) + (3)
_____________________________________________________________
ELEMENT NAME:
Notes: IF NPARTS (b_finish(1)) + NPARTS2 (mach,wailunban,0) <= NPARTS (b_finish(2)) +
NPARTS2 (mach,neilunban,0) + 1 AND NPARTS (b_raw(1)) >= 2
PULL from b_raw(1)
ELSEIF NPARTS (b_finish(1)) + NPARTS2 (mach,wailunban,0) > NPARTS (b_finish(2)) +
NPARTS2 (mach,neilunban,0) AND NPARTS (b_raw(2)) >= 3
PULL from b_raw(2)
ELSE
Wait
ENDIF
Element Type: Machine
Quantity: 2
Priority: Lowest
Type: Batch
Batch Min:
Batch Max:
Cycle Time: (,1)
Input / Output Rules
Input: IF N = 1 AND NPARTS ((1)) < _wl_qg
PULL from out of WORLD
ELSEIF N = 2 AND NPARTS ((2)) < _wl_qg
PULL from out of WORLD
ELSE
Wait
ENDIF
Output: PUSH to (1), to (2)
Labor Requirements
Repair #1: repairmen#1
Breakdown
Description: Breakdown Number 1
Breakdown type: Busy Time
At Start of Cycle: Yes
Down Interval: (,21)
Repair Time: (,41)
Scrap Part: No
Set-up on repair: No
_____________________________________________________________
ELEMENT NAME:
Element Type: Machine
Quantity: 4
Priority: Lowest
Type: Single
Cycle Time: (,10)
Input / Output Rules
Input: IF NPARTS2 (,,0) + NPARTS ((1)) <
_nl_zk OR NPARTS2 (,,0) + NPARTS ((2)) <
_ngb_zk OR NPARTS2 (,,0) + NPARTS ((3)) <
_fkb_qg
IF NPARTS () > 0 AND 2 * (NPARTS2 (,,0) +
NPARTS ((1))) <= NPARTS2 (,,0) + NPARTS ((2)) AND 2
* (NPARTS2 (,,0) + NPARTS ((1))) <= NPARTS2
(,,0) + NPARTS ((3))
PULL from
ELSEIF NPARTS ((2)) > 0 AND NPARTS ((2)) <= NPARTS
((3))
PULL from (2)
ELSEIF NPARTS2 (,,0) + NPARTS ((3)) <
_fkb_qg
PULL from (3)
ENDIF
ELSE
Wait
ENDIF
Output: PUSH to (1), to (2),
to (3)
Labor Requirements
Repair #1: repairmen#1
Breakdown
Description: Breakdown Number 1
Breakdown type: Busy Time
At Start of Cycle: Yes
Down Interval: (,30)
Repair Time: (,50)
Scrap Part: No
Set-up on repair: No
_____________________________________________________________
ELEMENT NAME:
Element Type: Machine
Quantity: 1
Priority: Lowest
Type: Assembly
Assembly Qty: 7
Cycle Time: (30,11)
Input / Output Rules
Input: IF NPARTS () < _hj2
SEQUENCE /Wait (1)#(1),
(2)#(2),
(1)#(4)
ELSE
Wait
ENDIF
Output: PUSH to
Labor Requirements
Repair #1: repairmen#1
Breakdown
Description: Breakdown Number 1
Breakdown type: Busy Time
At Start of Cycle: Yes
Down Interval: (,31)
Repair Time: (,51)
Scrap Part: No
Set-up on repair: No
Actions
Finish: CHANGE ALL to
_____________________________________________________________
ELEMENT NAME:
Element Type: Machine
Quantity: 2
Priority: Lowest
Type: Assembly
Assembly Qty: 4
Cycle Time: (45,12)
Input / Output Rules
Input: IF NPARTS () < _hj3
SEQUENCE /Wait (1)#(1),
(3)#(2)
ELSE
Wait
ENDIF
Output: PUSH to
Labor Requirements
Repair #1: repairmen#1
Breakdown
Description: Breakdown Number 1
Breakdown type: Busy Time
At Start of Cycle: Yes
Down Interval: (,32)
Repair Time: (,52)
Scrap Part: No
Set-up on repair: No
Actions
Finish: CHANGE ALL to
_____________________________________________________________
ELEMENT NAME:
Element Type: Machine
Quantity: 3
Priority: Lowest
Type: Single
Cycle Time: (,2)
Input / Output Rules
Input: IF NPARTS2 (,,0) + NPARTS ((1)) <
_wl_dpk OR NPARTS2 (,,0) + NPARTS ((2)) <
_nl_dpk
IF NPARTS ((1)) > 0 AND NPARTS2 (,,0) +
NPARTS ((1)) < NPARTS2 (,,0) + NPARTS ((2))
PULL from (1)
ELSEIF NPARTS2 (,,0) + NPARTS ((2)) <
_nl_dpk
PULL from (2)
ENDIF
ELSE
Wait
ENDIF
Output: PUSH to (1), to (2)
Labor Requirements
Repair #1: repairmen#1
Breakdown
Description: Breakdown Number 1
Breakdown type: Busy Time
At Start of Cycle: Yes
Down Interval: (,22)
Repair Time: (,42)
Scrap Part: No
Set-up on repair: No
_____________________________________________________________
ELEMENT NAME:
Element Type: Machine
Quantity: 2
Priority: Lowest
Type: Single
Cycle Time: (,3)
Input / Output Rules
Input: IF NPARTS2 (,,0) + NPARTS ((1)) <
_wl_jy OR NPARTS2 (,,0) + NPARTS ((2)) < _nl_jy
IF NPARTS ((1)) > 0 AND NPARTS2 (,,0) +
NPARTS ((1)) < NPARTS2 (,,0) + NPARTS ((2))
PULL from (1)
ELSEIF NPARTS2 (,,0) + NPARTS ((2)) <
_nl_jy
PULL from (2)
ENDIF
ELSE
Wait
ENDIF
Output: PUSH to (1), to (2)
Labor Requirements
Repair #1: repairmen#1
Breakdown
Description: Breakdown Number 1
Breakdown type: Busy Time
At Start of Cycle: Yes
Down Interval: (,23)
Repair Time: (,43)
Scrap Part: No
Set-up on repair: No
_____________________________________________________________
ELEMENT NAME:
Element Type: Machine
Quantity: 4
Priority: Lowest
Type: Single
Cycle Time: (,4)
Input / Output Rules
Input: IF NPARTS2 (,,0) + NPARTS ((1)) <
_wl_hj1 OR NPARTS2 (,,0) + NPARTS ((2)) < _nl_hj1
IF NPARTS ((1)) > 0 AND NPARTS2 (,,0) +
NPARTS ((1)) < NPARTS2 (,,0) + NPARTS ((2))
PULL from (1)
ELSEIF NPARTS2 (,,0) + NPARTS ((2)) <
_nl_hj1
PULL from (2)
ENDIF
ELSE
Wait
ENDIF
Output: PUSH to (1), to (2)
Labor Requirements
Repair #1: repairmen#1
Breakdown
Description: Breakdown Number 1
Breakdown type: Busy Time
At Start of Cycle: Yes
Down Interval: (,24)
Repair Time: (,44)
Scrap Part: No
Set-up on repair: No
Actions
Finish: CHANGE to
CHANGE to
_____________________________________________________________
ELEMENT NAME:
Element Type: Machine
Quantity: 2
Priority: Lowest
Type: Single
Cycle Time: (,5)
Input / Output Rules
Input: IF NPARTS2 (,,0) + NPARTS ((1)) <
_wl_zy OR NPARTS2 (,,0) + NPARTS ((2)) < _nl_zy
IF NPARTS ((1)) > 0 AND NPARTS2 (,,0) +
NPARTS ((1)) < NPARTS2 (,,0) + NPARTS ((2))
PULL from (1)
ELSEIF NPARTS2 (,,0) + NPARTS ((2)) <
_nl_zy
PULL from (2)
ENDIF
ELSE
Wait
ENDIF
Output: PUSH to (1), to (2)
Labor Requirements
Repair #1: repairmen#1
Breakdown
Description: Breakdown Number 1
Breakdown type: Busy Time
At Start of Cycle: Yes
Down Interval: (,25)
Repair Time: (,45)
Scrap Part: No
Set-up on repair: No
_____________________________________________________________
ELEMENT NAME:
Element Type: Machine
Quantity: 2
Priority: Lowest
Type: Single
Cycle Time: (50,6)
Input / Output Rules
Input: IF NPARTS2 (,,0) + NPARTS () <
_nl_cdm
PULL from (2)
ELSE
Wait
ENDIF
Output: PUSH to
Labor Requirements
Repair #1: repairmen#1
Breakdown
Description: Breakdown Number 1
Breakdown type: Busy Time
At Start of Cycle: Yes
Down Interval: (,26)
Repair Time: (,46)
Scrap Part: No
Set-up on repair: No
_____________________________________________________________
ELEMENT NAME:
Element Type: Machine
Quantity: 1
Priority: Lowest
Type: General
Input Quantity: 2
Output Quantity:
Inherit Attributes: No
Cycle Time: (,7)
Input / Output Rules
Input: IF NPARTS ((1)) < _jqj_qg OR NPARTS ((2)) <
_ngb_qg OR NPARTS ((3)) < _fkb_qg
IF NPARTS ((1)) <= 2 * NPARTS ((2)) AND NPARTS
((1)) <= 2 * NPARTS ((3))
PULL from out of WORLD
ELSEIF NPARTS ((2)) <= NPARTS ((3))
PULL from out of WORLD
ELSEIF NPARTS ((3)) < _fkb_qg
PULL from out of WORLD
ENDIF
ELSE
Wait
ENDIF
Output: PUSH to (1),
to (2), to (3)
Labor Requirements
Repair #1: repairmen#1
Breakdown
Description: Breakdown Number 1
Breakdown type: Busy Time
At Start of Cycle: Yes
Down Interval: (,27)
Repair Time: (,27)
Scrap Part: No
Set-up on repair: No
_____________________________________________________________
ELEMENT NAME:
Element Type: Machine
Quantity: 1
Priority: Lowest
Type: Batch
Batch Min:
Batch Max:
Cycle Time: (,8)
Input / Output Rules
Input: IF NPARTS ((1)) < _jqj_tp OR NPARTS ((2)) <
_ngb_tp OR NPARTS ((3)) < _fkb_tp
IF NPARTS ((1)) <= 2 * NPARTS ((2)) AND NPARTS
((1)) <= 2 * NPARTS ((3))
MATCH/ANY out of (1) #(8)
ELSEIF NPARTS ((2)) <= NPARTS ((3))
MATCH/ANY out of (2) #(4)
ELSEIF NPARTS ((3)) < _fkb_tp
MATCH/ANY out of (3) #(4)
ENDIF
ELSE
Wait
ENDIF
Output: PUSH to (1),
to (2), to (3)
Labor Requirements
Repair #1: repairmen#1
Breakdown
Description: Breakdown Number 1
Breakdown type: Busy Time
At Start of Cycle: Yes
Down Interval: (,28)
Repair Time: (,48)
Scrap Part: No
Set-up on repair: No
_____________________________________________________________
ELEMENT NAME:
Element Type: Machine
Quantity: 1
Priority: Lowest
Type: Batch
Batch Min: 24
Batch Max: 24
Cycle Time: (60,9)
Input / Output Rules
Input: IF NPARTS ((1)) < _jqj_yq OR NPARTS ((2)) <
_ngb_yq OR NPARTS ((3)) < _fkb_yq
SEQUENCE /Wait out of (1)#(12),
out of (2)#(6),
out of (3)#(6)
ELSE
Wait
ENDIF
Output: PUSH to (1),
to (2), to (3)
Labor Requirements
Repair #1: repairmen#1
Breakdown
Description: Breakdown Number 1
Breakdown type: Busy Time
At Start of Cycle: Yes
Down Interval: (,29)
Repair Time: (,49)
Scrap Part: No
Set-up on repair: No
_____________________________________________________________