JIT看板生产系统与WITNESS仿真程序_第1页
JIT看板生产系统与WITNESS仿真程序_第2页
JIT看板生产系统与WITNESS仿真程序_第3页
JIT看板生产系统与WITNESS仿真程序_第4页
JIT看板生产系统与WITNESS仿真程序_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

73/73JIT看板生产系统WITNESS仿真建模和优化实现1.1生产流程描述实例系统生产制造单一类型的产品——振动轮,其生产原材料为各种类型的钢板,通过机械加工,然后组装成一个空轮(没有安装轴承座、轴承和轴)。组成振动轮的部件主要为5类,分别为外圈、内圈、加强筋、内隔板和封口板,以数字1,2,3,4,5表示;其生产过程包括12个主要加工单元,分别为剪板切割(WS1)、打坡口(WS2)、卷圆(WS3)、轮圈焊接(WS4)、找圆(WS5)、车断面(WS6)、数控切割(WS7)、调平(WS8)、油漆(WS9)、钻孔(WS10)、内轮焊接(分装工作站)和轮子焊接(总装工作站)。其生产流程如图5.1所示。111,5产成品6需求314,53,4,53,4,51,21,21,2WS1WS21,2WS3WS4WS5WS7WS8WS9WS12WS10WS112物料流看板流WS:工作站图5.1实例生产/库存系统生产流程图4WS6外圈原材料为特定型号的钢板,加工过程依次为两块外圈钢板通过卷板切割机切割成适合大小,通过坡口机将钢板两端结合处内外打出坡度,通过卷圆机将钢板卷成轮圈,经过轮圈焊接工段将轮圈接口处焊接起来,通过找圆机将轮圈找圆,然后进入轮子焊接工段,与内轮和封口板焊接成轮子。内圈原材料也为特定型号的钢板,加工过程为每次三块钢板通过卷板切割机切割成适合大小的板材,然后打坡口、卷圆、焊接、找圆,同外圈加工过程一样。在经过找圆工段之后,内轮圈再经过数控车床,进行端面对车,经过钻孔工段钻出工艺孔,到内轮焊接工段与加强筋和内隔板焊接成内轮。加强筋、内隔板和封口板原材料也为特定型号的钢板,首先经过数控切割机切割成型,然后调平、油漆,内隔板和封口板需要经过钻口工段,钻制工艺孔,然后,内隔板到内轮焊接工段进行与内圈和加强筋的焊接,封口板到轮子焊接工段与内轮和外圈焊接成轮子。1.2基本生产单元的分解该生产/库存系统包括四条串行线,分别为:(1)外圈加工串行线:剪板切割、打坡口、卷圆、轮圈焊接、找圆;(2)内圈加工串行线:剪板切割、打坡口、卷圆、轮圈焊接、找圆、车端面、钻孔;(3)加强筋加工串行线:数控切割、调平、油漆;(4)内隔板、封口板加工串行线:数控切割、调平、油漆、钻孔。该生产/库存系统包括两个并行加工模块,分别为:(1)内圈、加强筋、内隔板焊接为内轮的焊接工段,即分装工作站WS11;(2)外圈、内轮、封口板焊接为轮子的轮子焊接工段,即总装工作站WS12。生产流程中有资源共享和竞争的作业,如:(1)内、外圈在进行切割、打坡口、卷圆、焊接等工序时,使用的都是相同的设备;(2)加强筋、内隔板、封口板在进行切割、调平工序时,也是竞争使用相同的设备。1.3系统绩效指标设计系统绩效指标考虑系统产出量、在制品库存、设备稼动率和订单满意度四项。在进行Witness仿真程序设计的时候,将通过如下的数据模型和相关的程序进行统计计算获得。(1)系统产出量(TPUT,ThroughPUT):统计在特定时间长度内,生产/库存系统所产出的成品数量。该指标在Witness中可以直接在成品缓冲区的“actiononinput…”中进行变量的累计。每当一个成品进入缓冲区,执行式(5-1)的计算程序,即产出量增加了一个。TPUT=TPUT+1(5-1)在仿真模型中,该统计任务由订单队列DMD.b_order的“actiononinput…”和函数UF.tput来实现,具体程序参看附录B部分。(2)在制品库存(WIP):用来统计某一时点上,生产/库存系统中所拥有的原材料、半成品或成品的量,一般用价值来衡量。由于生产线上具有多种物料,如外圈、内圈、加强筋、封口板、内隔板,每种类型物料所具有的价值不一样,需要统计各种物料的实际价值。由于本实例并不是对实际的问题进行研究,仅仅是提供一种研究方法,所以为了便于对各种方案进行经济性比较,根据每件产品或部件的价值,给予它们附上对应的价值权重,然后进行统计计算。假设加强筋最便宜,以它为1,每件物料经过一道工序加工后,每加工10分钟,价值增加一个单位,不足10分钟的按10分钟计,得出实例系统中物料的价值权重系数如表5.1,表中下划线前的字符为物料名称中文首字母。表5.1物料价值权重系数表*名称Jqj_WS7Fkb_WS7Ngb_WS7Jqj_WS8Fkb_WS8Ngb_WS8Jqj_WS9fkb_WS9ngb_WS9权重122244355名称Wq_WS1Nq_WS1Wq_WS2Nq_WS2Wq_WS3Nq_WS3Wq_WS4Nq_WS4Wq_WS5权重303035343837444247名称Nq_WS5Nq_WS6Nq_WS10Fkb_WS10Ngb_WS10WS11WS12权重4449528883151系统中的在制品库存WIP计算公式如式(5-2):(5-2)式中:——第i种物料在各工序后的缓冲区中的数量;——第i种物料在各工序机器上等待加工或正在加工的数量;——第i种物料在各工序间运输工具上的数量;——第i种物料的价值权重。在该系统的仿真模型中,某一仿真时点上的QFi、QMi、QTi都可以通过Witness提供的函数直接得出。该指标的统计由目标函数UF.wip来计算,具体设计参看附录B部分。(3)定单平均等待时间(AWT,AverageWaitingTime):用于统计没能够及时被满足的订单在系统中的平均等待时间,用来揭示随机生产/库存系统对订单的反应灵敏度。如果某一订单在提前期之前得到满足,则等待时间为零;如果某一订单在提前期之后得到满足,则等待时间为当前时间与提前期的差值。该指标数值越低,表示顾客满意度越高;该指标数值越高,表示顾客满意度越低。计算公式如式(5-3)所示。WTi=WTi=Ti’-Ti0Ti’>TiTi’≤Ti式中:n——仿真期间订单总数;Ti’——第i批订单实际发运时间;Ti——第i批订单预定发运时间;WTi——第i批订单的等待时间;SWT——仿真期间订单总等待时间。在仿真模型中,这两项统计任务统一在订单处理单元中执行。执行程序体参见附录B中DMD.demand_meet的“Actionsonfinish”部分。(4)设备平均稼动率(OR,OperationRate):用于统计生产系统中机器利用程度,仿真系统对机器类型的元素提供了标准状态统计函数,可以统计机器的空闲、运行、故障和维修等状态所占时间的百分比。在进行生产系统优化过程中,需要使用的机器时间包括下列几种:最大操作时间:指的是设备可用的最大时间,若设备本身为厂内自购,而非租借,且可完全由厂內自主使用,则最大操作时间一般为日历时间。负荷时间:为机器设备可稼动的时间,是最大操作时间扣除停机损失,停机损失包括计划上的休止时间,如休假、教育训练、保养等。稼动时间:是负荷时间减去停机时间,而停机时间包括批次转换、设备异常停止、修理、待料等时间。机器稼动率=稼动时间/负荷时间。故障间隔时间:机器每运转多长时间就会出现一次故障,并需要维修。故障维修时间:机器出现故障,修复所需的时间。因此,本系统的设备平均稼动率计算公式如式(5-4)。(5-4)式中:m——系统中工作单元的数量;ORj——系统中第j个工作单元中机器设备的稼动率;在仿真模型中,该统计任务通过函数来实现,程序设计参看附录B中的UF.OR1函数体。1.4生产线平衡在进行系统仿真之前,需要将每个工作单元中机器设备的设计稼动率加以平衡,这样仿真过程不会因为设备能力不平衡,导致某些工序过快成为瓶颈工序,使前后工序的机器设备因为等待而导致利用不足。为了防止这一问题,将根据该系统的设计能力2500台/年,每年250个工作日来平衡生产线。由于机器对每一部件的加工时间均值确定,只能通过设计每个加工单元中机器的数量来对生产线进行设计,使得生产线能够很好的满足设计的生产能力。对每个工作单元机器数量的计算过程涉及到如下的变量符号,首先对它们加以说明。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=2.5%;BI——BreakdownInterval:机器故障发生时间间隔;OR——OperatingRate:机器稼动率,假设为80%。通过该产品的BOP,得出该系统生产单件最终产品,在各个生产单元上需要的平均周期时间TC如表5.2所示。表5.2生产系统中生产单元TC表单元WS1WS2WS3WS4WS5WS6WS10WS7WS8WS9WS11WS12时间5090601204050130838203045通过系统的设计生产能力和机器的生产周期,同时考虑故障比率较低,在计算机器台数时将其忽略不记,设计计算公式如(5-5)所示。(5-5)式(5-5)中涉及四项变量,其中由于设备的故障、维修等所占时间比例忽略不记,所以机器全年负荷时间为TWT=250天*480分钟/天=120000分钟;假设稼动率产品套数就是生产线的年设计能力,即TQW=2500;从表5.2可以得出这12个工作单元的单套产品生产平均周期时间TCi。所以根据式(5-5)可以得出每个工作站的机器数量计算公式,如式(5-6)。(5-6)表5.3加工单元设备台数表加工单元WS1WS2WS3WS4WS5WS6WS10WS7WS8WS9WS11WS12设备数量232422411112根据设备故障比率,可以计算出设备故障平均时间间隔,计算公式如式(5-7):BI=TWT×(OR-BR)/TNB=120000×0.775/12=7750(5-7)即每台设备加工时间累计达到7750分钟,就会发生故障,需要进行平均时间为240分钟的维修后,才可以继续运转。1.5看板数量的确定生产系统循环过程中看板的数量决定了生产、使用或转让的在制品数量,决定了系统运作效率的高低。建立看板控制系统需要确定所需要的看板卡的数量。对于本文的单看板生产系统需要确定生产看板的套数,以它来控制加工单元的开始生产或停止生产。得到多数研究文献和实际应用接收的计算方式有如下两种:文献[9]的最优看板计算公式(5-8)。(5-8)式中:k——看板卡套数;D——一段时期所需产品的平均数量;L——补充订货的提前期;S——安全库存;C——容器容量。文献[10]的看板数量计算公式(5-9)。(5-9)式中:R——组件利用速度,如15件/分钟;Tp——单件生产时间,如:1.5分钟/件;Td——箱子的运输和传送时间,如:2.5分钟;C——箱子的单位容量,如:45件;X——需求速率变化的百分比,如10%。使用式(5-8)来确定看板数量,由于该公式没有应对动态需求这一项的变量,有效运用该公式的重要一步就是确定安全库存S的数值,而一旦动态需求的随机特征有所变化,该公式不能相应的进行反馈;式(5-9)考虑到动态需求,在公式中设定了需求速率变化X这一项,但是它没有考虑到安全库存,计算出来的数值通常偏小,引起生产系统较严重的缺货现象。本文研究生产/库存系统在需求和生产服务具有随机波动性时,随机变量的变异系数对系统绩效的影响,所以根据式(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有需求的变异系数确定;安全系数α通过仿真优化,暂取为1.7。根据看板数量计算公式(5-9),对各个部件的各工序生产看板数量计算程序见附录B的InitialActions和看板计算函数UF.KB部分。1.6仿真模型的WITNESS实现通过对该随机生产/库存系统流程的分析和系统配置参数的设定,设计出系统的Witness仿真模型,其可视化界面如图5.4所示。图5.4振动轮生产/库存系统Witness仿真界面其中仿真模型中变量数据的初始化设置设计于Witness仿真模型的Initialize程序中,函数的逻辑结构、加工单元、原材料、半成品以及库存等实体元素的输入输出关系等都设计在这些元素对应的action或rule编辑框内,具体程序参考附录部分。1.7模型参数优化在计算机模型验证部分,为了证明计算机模型同理论模型是相符的,只考虑了计算机模型在确定型和随机型两种情况下的设备稼动率和故障率,以及产品产出数量,没有考虑系统的另外两个绩效指标:库存水平和定单平均等待时间。这两项指标与看板数量和维修人员数量之间具有很强的相关性。因此为了研究各种可变因子变化对系统绩效的影响,需要建立一个统一的、优化的模型参数环境,需要对模型的相关参数进行优化取值,涉及的参数有看板安全系数α和维修工的数量,对其进行优化选择的准则是:在制品库存尽可能低、定单平均等待时间尽可能低、维修工数量尽可能少。将参数α和维修工的数量Qmen的可能取值设置如表5.8所示,从表上可以看出α有13种可选取值,Qmen有6个可能取值,累积有78种组合,现在寻求仿真模型在这78种方案的哪一种方案配置下,系统绩效最优。表5.8优化参数的可能取值表变量名称可能取值累积α[1.2,2.4]step=0.113Qmen[1,6]step=178通过Witness仿真优化工具包optimize进行优化仿真运行,将实验结果导入到Excel中,按照定单平均等待时间AWT为第一排序字段、在制品库存WIP为第二排序字段,递增排列。将排列结果的前9个相对最优配置方案及实验结果列入表5.9。表5.9模型仿真参数优化结果数据表WIPQmenαAWTORTPUT479441.7052.0122520479441.8052.0122520503161.7052.0542520503161.8052.0542520514051.7052.0532520514051.8052.0532520523031.9052.0612520523032052.0612520523032.1052.0612520从表5.9可以看出,在确定性情况下,α取1.7和1.8两个数值得出的系统绩效相同;再比较WIP数值,最低值为4794;维修工数量直到第7条配置时,才为3人,少于第一条配置。因此,选定第一条配置为系统的最优配置方案。在下一章进行的仿真实验研究中,如果没有特别的说明,模型中的α和Qmen将确定为这两个数值(1.7和4)。附录BWitness仿真程序MODELINFORMATION: ModelName: productionandinventorysystemsimulation ModelTitle: optimizesystemparameters ModelAuthor: jiannywang CreationDate: ThuMar3111:29:172005ModelNotes: IndustrialEngineeringDepartment Business University InitialActions: !pm_var.mypns=100 !pm_var.cv=0 Uvar.kbsafe=1.7 Uvar.PK_wl_qg=UF.KB(25) Uvar.PK_wl_dpk=UF.KB(50) Uvar.PK_wl_jy=UF.KB(30) Uvar.PK_wl_hj1=UF.KB(60) Uvar.PK_wl_zy=UF.KB(25) Uvar.PK_nl_qg=UF.KB(20) Uvar.PK_nl_dpk=UF.KB(40) Uvar.PK_nl_jy=UF.KB(25) Uvar.PK_nl_hj1=UF.KB(50) Uvar.PK_nl_zy=UF.KB(20) Uvar.PK_nl_cdm=UF.KB(50) Uvar.PK_nl_zk=UF.KB(30) Uvar.PK_jqj_qg=UF.KB(12*4) Uvar.PK_jqj_tp=UF.KB(14*4) Uvar.PK_jqj_yq=UF.KB(60*4) Uvar.PK_ngb_qg=UF.KB(15*2) Uvar.PK_ngb_tp=UF.KB(25*2) Uvar.PK_ngb_yq=UF.KB(60*2) Uvar.PK_ngb_zk=UF.KB(50*2) Uvar.PK_fkb_qg=UF.KB(18*2) Uvar.PK_fkb_tp=UF.KB(25*2) Uvar.PK_fkb_yq=UF.KB(60*2) Uvar.PK_fkb_zk=UF.KB(50*2) Uvar.PK_hj2=UF.KB(30) Uvar.PK_hj3=UF.KB(45) Uvar.breakinterval=7750 Uvar.repairtime=240_____________________________________________________________ELEMENTNAME:DMD.b_orderElementType: BufferQuantity: 1Capacity: 1000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: Uvar.totaldemand=Uvar.totaldemand+DMD.batchsize Output: Uvar.outpart=Uvar.outpart+DMD.batchsize_____________________________________________________________ELEMENTNAME:DMD.demandElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: UF.DIT()+1FirstArrivalat: 310.0MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtoDMD.b_orderActions Create: DMD.arrivaltime=TIME DMD.batchsize=UF.DBS()+1 DMD.leadtime=UF.DLT()+1_____________________________________________________________ELEMENTNAME:DMD.demand_meetElementType: MachineQuantity: 1Priority: LowestInput/OutputRules Input: SEQUENCE/WaitDMD.b_order#(1), WS12.store#(DMD.batchsize) Output: PUSHtoSHIPActions Finish: IFDMD.arrivaltime+DMD.leadtime+20<TIME Uvar.Nunsatisfy=Uvar.Nunsatisfy+1 Uvar.waittime=Uvar.waittime+TIME-DMD.arrivaltime-DMD.leadtime-20 ENDIF_____________________________________________________________ELEMENTNAME:pm_part.fengkoubanElementType: PartType: VariableattributesGroupnumber: 1MaximumArrivals: 0Actions Create: Uatt.tpnum=4 Uatt.qgnum=8 ICON=106 Uatt.skqgtime=25 Uatt.tptime=18 Uatt.zktime=25_____________________________________________________________ELEMENTNAME:pm_part.neigebanElementType: PartType: VariableattributesGroupnumber: 1MaximumArrivals: 0Actions Create: Uatt.tpnum=4 Uatt.qgnum=8 ICON=107 Uatt.skqgtime=25 Uatt.tptime=15 Uatt.zktime=25_____________________________________________________________ELEMENTNAME:pm_part.neilunbanElementType: PartType: VariableattributesGroupnumber: 1MaximumArrivals: 0Actions Create: Uatt.jbqgnum=3 Uatt.jbqgtime=60 Uatt.dpktime=40 Uatt.jytime=25 Uatt.hj1time=50_____________________________________________________________ELEMENTNAME:pm_part.neiquanElementType: PartType: VariableattributesGroupnumber: 1MaximumArrivals: 0Actions Create: Uatt.zytime=20 Uatt.cdmtime=50 Uatt.zktime=30_____________________________________________________________ELEMENTNAME:pm_part.strengthbanElementType: PartType: VariableattributesGroupnumber: 1MaximumArrivals: 0Actions Create: Uatt.tpnum=8 Uatt.qgnum=16 ICON=105 Uatt.skqgtime=12 Uatt.tptime=14_____________________________________________________________ELEMENTNAME:pm_part.wailunElementType: PartType: VariableattributesGroupnumber: 1MaximumArrivals: 0Actions Create: Uatt.zytime=25_____________________________________________________________ELEMENTNAME:pm_part.wailunbanElementType: PartType: VariableattributesGroupnumber: 1MaximumArrivals: 0Actions Create: Uatt.jbqgnum=2 Uatt.jbqgtime=50 Uatt.dpktime=50 Uatt.jytime=30 Uatt.hj1time=60_____________________________________________________________ELEMENTNAME:repairmenElementType: LaborQuantityalwaysavailable: 4____________________________________________________________ELEMENTNAME:UF.AWTNotes: THEAVERAGEWAITINGTIMEOFORDER ElementType: FunctionType: RealParameters: 0Actions Execution: RETURNUvar.waittime/UF.numD()_____________________________________________________________ELEMENTNAME:UF.btNotes: breaktimedistributionfuntion ElementType: FunctionType: RealParameters: 2 mean,Real ppns,IntegerActions Execution: Uvar.funpt=GAMMA(1/Uvar.cv**2,mean*Uvar.cv**2,Uvar.mypns+ppns) RETURNUvar.funpt!mean_____________________________________________________________ELEMENTNAME:UF.DBSNotes: DEMANDBATCHSIZE ElementType: FunctionType: IntegerParameters: 0Actions Execution: RETURNGAMMA(1/Uvar.cv**2,29*Uvar.cv**2,Uvar.mypns+14)_____________________________________________________________ELEMENTNAME:UF.DITNotes: DEMANDINTERARRIVALTIME ElementType: FunctionType: RealParameters: 0Actions Execution: RETURNGAMMA(1/Uvar.cv**2,1439*Uvar.cv**2,Uvar.mypns+13)!1439_____________________________________________________________ELEMENTNAME:UF.DLTNotes: DEMANDLEADTIME ElementType: FunctionType: IntegerParameters: 0Actions Execution: RETURNGAMMA(1/Uvar.cv**2,1439*Uvar.cv**2,Uvar.mypns+15)!1439_____________________________________________________________ELEMENTNAME:UF.KBElementType: FunctionType: IntegerParameters: 1 meantime,RealActions Execution: Uvar.fun_kbsum=1/48*meantime*(1+Uvar.cv+Uvar.kbsafe)+1 RETURNUvar.fun_kbsum !x=thecoeffectionvariation !a=thesafeindexofkanban !p=theprocesstimemultibatchsize_____________________________________________________________ELEMENTNAME:UF.numDElementType: FunctionType: IntegerParameters: 0Actions Execution: RETURNTOTALIN(DMD.b_order)_____________________________________________________________ELEMENTNAME:UF.OR1ElementType: FunctionType: RealParameters: 0Actions Execution: RETURN(SUTIL(WS9.mach,2)+SUTIL(WS1.mach,2)+SUTIL(WS8.mach,2)+SUTIL(WS5.mach,2)+SUTIL(WS6.mach,2)+SUTIL(WS10.mach,2)+SUTIL(WS7.mach,2)+SUTIL(WS12.mach,2)+SUTIL(WS4.mach,2)+SUTIL(WS11.mach,2)+SUTIL(WS3.mach,2)+SUTIL(WS2.mach,2))/12_____________________________________________________________ELEMENTNAME:UF.ptNotes: processtimedistributionfuntion ElementType: FunctionType: RealParameters: 2 mean,Real ppns,IntegerActions Execution: Uvar.funpt=GAMMA(1/Uvar.cv**2,mean*Uvar.cv**2,Uvar.mypns+ppns) RETURNUvar.funpt!mean_____________________________________________________________ELEMENTNAME:UF.rtNotes: repairtimedistributionfuntion ElementType: FunctionType: RealParameters: 2 mean,Real ppns,IntegerActions Execution: Uvar.funpt=GAMMA(1/Uvar.cv**2,mean*Uvar.cv**2,Uvar.mypns+ppns) RETURNUvar.funpt!mean_____________________________________________________________ELEMENTNAME:UF.TPUTElementType: FunctionType: IntegerParameters: 0Actions Execution: RETURNUvar.outpart_____________________________________________________________ELEMENTNAME:UF.WIPElementType: FunctionType: RealParameters: 0Actions Execution: !addallfinishproductWIPvalue Uvar.valwip(1)=NPARTS(WS1.store)*30+NPARTS(WS2.store(1))*35+NPARTS(WS2.store(2))*34+NPARTS(WS3.store(1))*38+NPARTS(WS3.store(2))*37+NPARTS(WS4.store(1))*44+NPARTS(WS4.store(2))*42+NPARTS(WS5.store(1))*47+NPARTS(WS5.store(2))*44+NPARTS(WS6.store)*49+NPARTS(WS11.store)*83+NPARTS(WS12.store)*151 Uvar.valwip(1)=Uvar.valwip(1)+NPARTS(WS7.store(1))*1+NPARTS(WS7.store(2))*2+NPARTS(WS7.store(3))*2+NPARTS(WS8.store(1))*2+NPARTS(WS8.store(2))*4+NPARTS(WS8.store(3))*4+NPARTS(WS9.store(1))*3+NPARTS(WS9.store(2))*5+NPARTS(WS9.store(3))*5+NPARTS(WS10.store(1))*52+NPARTS(WS10.store(2))*8+NPARTS(WS10.store(3))*8+NPARTS(DMD.demand_meet)*151 !addallmaterialinmachinevalue Uvar.valwip(3)=NPARTS2(WS1.mach,pm_part.wailunban,0)*27+NPARTS2(WS1.mach,pm_part.neilunban,0)*28+NPARTS2(WS2.mach,pm_part.wailunban,0)*30+NPARTS2(WS1.mach,pm_part.neilunban,0)*30+NPARTS2(WS3.mach,pm_part.wailunban,0)*35+NPARTS2(WS3.mach,pm_part.neilunban,0)*34+NPARTS2(WS4.mach,pm_part.wailunban,0)*38+NPARTS2(WS4.mach,pm_part.neilunban,0)*37+NPARTS2(WS5.mach,pm_part.wailun,0)*44+NPARTS2(WS5.mach,pm_part.neiquan,0)*42+NPARTS2(WS6.mach,pm_part.neiquan,0)*44+NPARTS2(WS12.mach,pm_part.fengkouban,0)*8+NPARTS2(WS12.mach,pm_part.wailun,0)*47+NPARTS2(WS12.mach,pm_part.neilun,0)*83 Uvar.valwip(3)=Uvar.valwip(3)+NPARTS(WS7.mach)*6+NPARTS2(WS8.mach,pm_part.strengthban,0)+NPARTS2(WS8.mach,pm_part.fengkouban,0)*2+NPARTS2(WS8.mach,pm_part.neigeban,0)*2+NPARTS2(WS9.mach,pm_part.strengthban,0)*2+NPARTS2(WS9.mach,pm_part.fengkouban,0)*4+NPARTS2(WS9.mach,pm_part.neigeban,0)*4+NPARTS2(WS10.mach,pm_part.fengkouban,0)*5+NPARTS2(WS10.mach,pm_part.neigeban,0)*5+NPARTS2(WS10.mach,pm_part.neiquan,0)*49+NPARTS2(WS11.mach,pm_part.strengthban,0)*3+NPARTS2(WS11.mach,pm_part.neiquan,0)*52+NPARTS2(WS11.mach,pm_part.neigeban,0)*8 RETURNUvar.valwip(1)+Uvar.valwip(2)+Uvar.valwip(3)_____________________________________________________________ELEMENTNAME:WS1.machNotes: IFNPARTS(b_finish(1))+NPARTS2(mach,wailunban,0)<=NPARTS(b_finish(2))+NPARTS2(mach,neilunban,0)+1ANDNPARTS(b_raw(1))>=2 PULLfromb_raw(1) ELSEIFNPARTS(b_finish(1))+NPARTS2(mach,wailunban,0)>NPARTS(b_finish(2))+NPARTS2(mach,neilunban,0)ANDNPARTS(b_raw(2))>=3 PULLfromb_raw(2) ELSE Wait ENDIF ElementType: MachineQuantity: 2Priority: LowestType: BatchBatchMin: Uatt.jbqgnumBatchMax: Uatt.jbqgnumCycleTime: UF.pt(Uatt.jbqgtime,1)Input/OutputRules Input: IFN=1ANDNPARTS(WS1.store(1))<Uvar.PK_wl_qg PULLfrompm_part.wailunbanoutofWORLD ELSEIFN=2ANDNPARTS(WS1.store(2))<Uvar.PK_wl_qg PULLfrompm_part.neilunbanoutofWORLD ELSE Wait ENDIF Output: PUSHpm_part.wailunbantoWS1.store(1),pm_part.neilunbantoWS1.store(2)LaborRequirements Repair#1: repairmen#1Breakdown Description: BreakdownNumber1 Breakdowntype: BusyTime AtStartofCycle: Yes DownInterval: UF.bt(Uvar.breakinterval,21) RepairTime: UF.rt(Uvar.repairtime,41) ScrapPart: No Set-uponrepair: No_____________________________________________________________ELEMENTNAME:WS10.machElementType: MachineQuantity: 4Priority: LowestType: SingleCycleTime: UF.pt(Uatt.zktime,10)Input/OutputRules Input: IFNPARTS2(WS10.mach,pm_part.neiquan,0)+NPARTS(WS10.store(1))<Uvar.PK_nl_zkORNPARTS2(WS10.mach,pm_part.neigeban,0)+NPARTS(WS10.store(2))<Uvar.PK_ngb_zkORNPARTS2(WS10.mach,pm_part.fengkouban,0)+NPARTS(WS10.store(3))<Uvar.PK_fkb_qg IFNPARTS(WS6.store)>0AND2*(NPARTS2(WS10.mach,pm_part.neiquan,0)+NPARTS(WS10.store(1)))<=NPARTS2(WS10.mach,pm_part.neigeban,0)+NPARTS(WS10.store(2))AND2*(NPARTS2(WS10.mach,pm_part.neiquan,0)+NPARTS(WS10.store(1)))<=NPARTS2(WS10.mach,pm_part.fengkouban,0)+NPARTS(WS10.store(3)) PULLfromWS6.store ELSEIFNPARTS(WS9.store(2))>0ANDNPARTS(WS10.store(2))<=NPARTS(WS10.store(3)) PULLfromWS9.store(2) ELSEIFNPARTS2(WS10.mach,pm_part.fengkouban,0)+NPARTS(WS10.store(3))<Uvar.PK_fkb_qg PULLfromWS9.store(3) ENDIF ELSE Wait ENDIF Output: PUSHpm_part.neiquantoWS10.store(1),pm_part.neigebantoWS10.store(2), pm_part.fengkoubantoWS10.store(3)LaborRequirements Repair#1: repairmen#1Breakdown Description: BreakdownNumber1 Breakdowntype: BusyTime AtStartofCycle: Yes DownInterval: UF.bt(Uvar.breakinterval,30) RepairTime: UF.rt(Uvar.repairtime,50) ScrapPart: No Set-uponrepair: No_____________________________________________________________ELEMENTNAME:WS11.machElementType: MachineQuantity: 1Priority: LowestType: AssemblyAssemblyQty: 7CycleTime: UF.pt(30,11)Input/OutputRules Input: IFNPARTS(WS11.store)<Uvar.PK_hj2 SEQUENCE/WaitWS10.store(1)#(1), WS10.store(2)#(2), WS9.store(1)#(4) ELSE Wait ENDIF Output: PUSHtoWS11.storeLaborRequirements Repair#1: repairmen#1Breakdown Description: BreakdownNumber1 Breakdowntype: BusyTime AtStartofCycle: Yes DownInterval: UF.bt(Uvar.breakinterval,31) RepairTime: UF.rt(Uvar.repairtime,51) ScrapPart: No Set-uponrepair: NoActions Finish: CHANGEALLtopm_part.neilun_____________________________________________________________ELEMENTNAME:WS12.machElementType: MachineQuantity: 2Priority: LowestType: AssemblyAssemblyQty: 4CycleTime: UF.pt(45,12)Input/OutputRules Input: IFNPARTS(WS12.store)<Uvar.PK_hj3 SEQUENCE/WaitWS5.store(1)#(1), WS11.store#(1), WS10.store(3)#(2) ELSE Wait ENDIF Output: PUSHtoWS12.storeLaborRequirements Repair#1: repairmen#1Breakdown Description: BreakdownNumber1 Breakdowntype: BusyTime AtStartofCycle: Yes DownInterval: UF.bt(Uvar.breakinterval,32) RepairTime: UF.rt(Uvar.repairtime,52) ScrapPart: No Set-uponrepair: NoActions Finish: CHANGEALLtopm_part.lunzi_____________________________________________________________ELEMENTNAME:WS2.machElementType: MachineQuantity: 3Priority: LowestType: SingleCycleTime: UF.pt(Uatt.dpktime,2)Input/OutputRules Input: IFNPARTS2(WS2.mach,pm_part.wailunban,0)+NPARTS(WS2.store(1))<Uvar.PK_wl_dpkORNPARTS2(WS2.mach,pm_part.neilunban,0)+NPARTS(WS2.store(2))<Uvar.PK_nl_dpk IFNPARTS(WS1.store(1))>0ANDNPARTS2(WS2.mach,pm_part.wailunban,0)+NPARTS(WS2.store(1))<NPARTS2(WS2.mach,pm_part.neilunban,0)+NPARTS(WS2.store(2)) PULLfromWS1.store(1) ELSEIFNPARTS2(WS2.mach,pm_part.neilunban,0)+NPARTS(WS2.store(2))<Uvar.PK_nl_dpk PULLfromWS1.store(2) ENDIF ELSE Wait ENDIF Output: PUSHpm_part.wailunbantoWS2.store(1),pm_part.neilunbantoWS2.store(2)LaborRequirements Repair#1: repairmen#1Breakdown Description: BreakdownNumber1 Breakdowntype: BusyTime AtStartofCycle: Yes DownInterval: UF.bt(Uvar.breakinterval,22) RepairTime: UF.rt(Uvar.repairtime,42) ScrapPart: No Set-uponrepair: No_____________________________________________________________ELEMENTNAME:WS3.machElementType: MachineQuantity: 2Priority: LowestType: SingleCycleTime: UF.pt(Uatt.jytime,3)Input/OutputRules Input: IFNPARTS2(WS3.mach,pm_part.wailunban,0)+NPARTS(WS3.store(1))<Uvar.PK_wl_jyORNPARTS2(WS3.mach,pm_part.neilunban,0)+NPARTS(WS3.store(2))<Uvar.PK_nl_jy IFNPARTS(WS2.store(1))>0ANDNPARTS2(WS3.mach,pm_part.wailunban,0)+NPARTS(WS3.store(1))<NPARTS2(WS3.mach,pm_part.neilunban,0)+NPARTS(WS3.store(2)) PULLfromWS2.store(1) ELSEIFNPARTS2(WS3.mach,pm_part.neilunban,0)+NPARTS(WS3.store(2))<Uvar.PK_nl_jy PULLfromWS2.store(2) ENDIF ELSE Wait ENDIF Output: PUSHpm_part.wailunbantoWS3.store(1),pm_part.neilunbantoWS3.store(2)LaborRequirements Repair#1: repairmen#1Breakdown Description: BreakdownNumber1 Breakdowntype: BusyTime AtStartofCycle: Yes DownInterval: UF.bt(Uvar.breakinterval,23) RepairTime: UF.rt(Uvar.repairtime,43) ScrapPart: No Set-uponrepair: No_____________________________________________________________ELEMENTNAME:WS4.machElementType: MachineQuantity: 4Priority: LowestType: SingleCycleTime: UF.pt(Uatt.hj1time,4)Input/OutputRules Input: IFNPARTS2(WS4.mach,pm_part.wailunban,0)+NPARTS(WS4.store(1))<Uvar.PK_wl_hj1ORNPARTS2(WS4.mach,pm_part.neilunban,0)+NPARTS(WS4.store(2))<Uvar.PK_nl_hj1 IFNPARTS(WS3.store(1))>0ANDNPARTS2(WS4.mach,pm_part.wailunban,0)+NPARTS(WS4.store(1))<NPARTS2(WS4.mach,pm_part.neilunban,0)+NPARTS(WS4.store(2)) PULLfromWS3.store(1) ELSEIFNPARTS2(WS4.mach,pm_part.neilunban,0)+NPARTS(WS4.store(2))<Uvar.PK_nl_hj1 PULLfromWS3.store(2) ENDIF ELSE Wait ENDIF Output: PUSHpm_part.wailuntoWS4.store(1),pm_part.neiquantoWS4.store(2)LaborRequirements Repair#1: repairmen#1Breakdown Description: BreakdownNumber1 Breakdowntype: BusyTime AtStartofCycle: Yes DownInterval: UF.bt(Uvar.breakinterval,24) RepairTime: UF.rt(Uvar.repairtime,44) ScrapPart: No Set-uponrepair: NoActions Finish: CHANGEpm_part.wailunbantopm_part.wailun CHANGEpm_part.neilunbantopm_part.neiquan_____________________________________________________________ELEMENTNAME:WS5.machElementType: MachineQuantity: 2Priority: LowestType: SingleCycleTime: UF.pt(Uatt.zytime,5)Input/OutputRules Input: IFNPARTS2(WS5.mach,pm_part.wailunban,0)+NPARTS(WS5.store(1))<Uvar.PK_wl_zyORNPARTS2(WS5.mach,pm_part.neilunban,0)+NPARTS(WS5.store(2))<Uvar.PK_nl_zy IFNPARTS(WS4.store(1))>0ANDNPARTS2(WS5.mach,pm_part.wailunban,0)+NPARTS(WS5.store(1))<NPARTS2(WS5.mach,pm_part.neilunban,0)+NPARTS(WS5.store(2)) PULLfromWS4.store(1) ELSEIFNPARTS2(WS5.mach,pm_part.neilunban,0)+NPARTS(WS5.store(2))<Uvar.PK_nl_zy PULLfromWS4.store(2) ENDIF ELSE Wait ENDIF Output: PUSHpm_part.wailuntoWS5.store(1),pm_part.neiquantoWS5.store(2)LaborRequirements Repair#1: repairmen#1Breakdown Description: BreakdownNumber1 Breakdowntype: BusyTime AtStartofCycle: Yes DownInterval: UF.bt(Uvar.breakinterval,25) RepairTime: UF.rt(Uvar.repairtime,45) ScrapPart: No Set-uponrepair: No_____________________________________________________________ELEMENTNAME:WS6.machElementType: MachineQuantity: 2Priority: LowestType: SingleCycleTime: UF.pt(50,6)Input/OutputRules Input: IFNPARTS2(WS6.mach,pm_part.neilunban,0)+NPARTS(WS6.store)<Uvar.PK_nl_cdm PULLfromWS5.store(2) ELSE Wait ENDIF Output: PUSHtoWS6.storeLaborRequirements Repair#1: repairmen#1Breakdown Description: BreakdownNumber1 Breakdowntype: BusyTime AtStartofCycle: Yes DownInterval: UF.bt(Uvar.breakinterval,26) RepairTime: UF.rt(Uvar.repairtime,46) ScrapPart: No Set-uponrepair: No_____________________________________________________________ELEMENTNAME:WS7.machElementType: MachineQuantity: 1Priority: LowestType: GeneralInputQuantity: 2OutputQuantity: Uatt.qgnumInheritAttributes: NoCycleTime: UF.pt(Uatt.skqgtime,7)Input/OutputRules Input: IFNPARTS(WS7.store(1))<Uvar.PK_jqj_qgORNPARTS(WS7.store(2))<Uvar.PK_ngb_qgORNPARTS(WS7.store(3))<Uvar.PK_fkb_qg IFNPARTS(WS7.store(1))<=2*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论