资源描述
前 言
1.1课题研究背景及意义
随着世界经济全球一体化发展和科学技术的飞速发展,现代物流,被西方国家称为“第三利润源泉”,被各国所广泛重视,并获得迅速发展。与此同时,物资流通的速度和效率成为经济景气指数的又一个重要衡量指标,以高效运转、分工合理、配套服务的现代物流业成为世界各国竞相发展的新的经济增长点。众多工商企业都将其作为降低成本、提高企业效益和企业综合竞争能力的重要手段,将物流上升到企业战略高度来加以重视。物流在现代社会中的作用与地位越来越突出,已成为我国未来经济发展的强劲动力。
物流分为社会物流和企业物流两大方向。社会物流研究的事物质流转的全过程,而不是从物流某一个构成环节来看物流。企业内部物流可分为五个部分:供应物流、生产物流、销售物流、回收物流和废弃物流。生产物流是与企业联系最紧密的,是最不容易进行“外包”的,并且它里面蕴藏的利润是比较容易被忽视的。
离散型制造以不同的物料经过非连续的移动,通过不同路径,生产出不同的物料和产品。具有产品类型多,结构复杂,工艺流程长,制造周期相对较长等特点。
生产并不是一步工序就能完成的,而需要进行多道工序,在离散型制造企业中产品的加工工序又有所不同,而生产工序的不同及多道工序的限制,不同的生产工序或在同一区域,或不在同一工序,总而言之,在离散型生产过程中,随着产品的不同,产品所经过的加工路线不同,在不同时刻所在加工区域不同,所以需要小车搬运,需要运到下一加工区域的产品部件应当在加工能力足够的情况下应及时送到下一加工区域,进而达到缩短整体加工时间。
生产物流系统是企业物流系统的子系统, 同时也是制造系统的重要组成部分物料存储及供应是生产物流系统的核心. 物料存储的目的在于保障物料的及时供应通过建立仿真模型,利用计算机仿真软件将物流系统的运行情况记录下来,从而对系统的预测和改进提供重要的参考, 通过计算机的形象的演示, 使仿真结果更直观的表达。
与应用数学分析方法求解问题相比较,仿真方法求解问题的缺点是很明显的,即它只能给出问题的特解而不能给出问题的通解。然而,能用数学分析法求解的问题的范围毕竟是有限的。用数学分析法求解问题时,要对系统加以抽象和近似处理,以使模型适于用数学分析方法求解。在许多方面,理想情况下是把仿真方法的应用作为已经得到的、因过于简化的数学分析解答的一种补充。系统、模型与仿真三者之间有着十分密切的关系,系统是研究对象,模型是系统特性的描述,仿真则包含建立模型及对模型进行试验两个过程。
当生产方案确定后,细节的明细十分重要,通过计算机仿真技术将所实施方案过程模拟下来,建立仿真模型,通过对细节的设定,进行仿真,并根据特定的评价标准进行评价,确立最佳方案。
1.2现代生产物流技术的研究现状
1.2.1物流系统仿真技术
20世纪40年代末伴随着计算机技术的发展,系统仿真逐步发展为一门新兴学科。仿真就是通过建立实际系统模型并利用所建模型对实际系统进行实验研究的过程。仿真技术在诸如设备参数分析、资源排班分析、时间分析、厂内外物流分析、企业流程再造、企业生产调度等方面均有广泛应用前景。比如,对于企业生产物流系统的优化,可以通过运行仿真模型,评价不同方案的优劣并修改直至给出最优方案,可避免不合理的方案带来的资金、人力和时间的浪费。物流系统仿真技术的研究,日益受到人们的重视并做了大量的研究工作,武汉理工大学高玮借助witness仿真语言对某码头当前的生产能力和未来扩建后的生产能力做了仿真实验分析[1],为生产实际提供了决策基础。武汉理工大学张新艳将虚拟现实技术引入到港口集装箱物流系统仿真研究当中,得出了基于虚拟现实的港口集装箱物流系统仿真的四层逻辑支撑结构[2]。武汉理工大学黄国梁研究了建立散货煤码头工艺系统仿真模型的方法和步骤,开发了散货煤码头工艺系统的仿真平台,分析了散货煤码头工艺系统的堆存策略对码头作业效率的影响情况[3]。吉林大学金凤花利用基于离散事件的仿真机制与面向对象的消息传递机制相结合的方式来实现了装配生产线系统对象类间的消息传递和系统的动态运行[4]。
系统仿真在生产物流中的应用主要有:
(1)面向生产流程的仿真,主要解决瓶颈分析、生产线平衡、暂存区大小设定、产出分析、接单分析、生产排程、及时生产系统、存货政策等方面问题。
(2)面向生产物流规划与设计的仿真,主要解决物流网点布局、生产物流流程设计、车辆路线规划、设施定位的规划设计等问题。
(3)面向物流设备系统的仿真,主要解决设备布局、设备配置、设备参数选择等问题。
(4)面向生产物流管理的仿真,主要解决控制策略、运输流程的计划和调度、库存控制与管理、物流成本管理等问题。
1.2.2动态规划
动态规划是一种解决多阶段决策过程最优化问题的方法,此方法在20世纪50年代由美国数学家贝尔曼等人提出。动态规划可用于解决最优路径问题、资源分配问题、生产计划与库存、装载、投资、排序等问题及生产过程的最优控制等[5]。
1.3 论文结构
本文前言部分介绍了企业物流的国内外研究现状,第二章对企业物流现状进行了描述与分析,第三章对于本文的核心工具witness做了相关介绍,第四章对企业物流建立仿真模型,第五章得出结论,并对当前模型的不足做出总结,并提出以后的研究方向。
2某企业生产物流分析
2.1物流现状分析
按产品产量的多少划分,分为少品种大批量生产,具有工艺流程固定、生产作业连续稳定、计划制定与日常管理比较容易的特点;多品种小批量生产产品品种变换频繁、工艺流程不固定,使得生产准备、日常管理比较困难,但如果采用先进的管理手段,先进的生产模式,可以很好的满足市场需求;中品种(中)批量生产。
设施布置按产品在制造过程中的位置状态分为两大类[6]:
1.产品移动式 2.产品固定式
产品移动式布置按设备组合形式的不同分为:
a.产品原则布置 b.工艺原则布置 c.成组布置
但工艺原则布置,也叫机群式布置布置原则是根据工艺特点,把同种类型的一群设备和人员集中布置在一个地方。各类机床间也有一定的顺序安排,通常按照大多数零件的加工路线来排列。
综上,厂区采取工艺原则布置。
设施布置分为九大模块,从左至右,从上至下依次为暂存区、大件加工区、镗区、镗铣区、精加工区,轴加工区、车区、附具加工区、成品区,如图2.1。
产品加工原料由暂存区取出,按工艺路线依次送往相应加工区,最后运至成品区。完成加工。
图2.1
2.2调度问题
生产物流与企业联系最为紧密且不容易外包,减少生产物料库存及在制品数量,能够减少流动资金占用,降低产品制造成本;降低整个生产过程中的物流成本(人力中的物流成本,加工过程中的物流成本等)可以提高整个生产的水品和素质,减少消耗和占用,降低生产成本并提高工作效率。
产品品种的多样化,必然使工艺程序多样化,在企业采取了工艺原则进行设施及厂区布置之后,物流就变成了从一个区域到另一个区域的区域间流动行为,当产品到加工区域时,加工中心对产品进行加工,加工后推入存储缓存,这时候就需要运输工具将存储缓存中的产品根据产品特性运送到其它区域。
在企业生产过程中,能够利用更多的时间进行加工就意味着更多的效益,而在实际生产过程中,往往在生产过程中的时间比重较低,而大部分时间用于物流,所以提高企业物流能力可以使生产过程更加优化,提高时间利用率及机器利用率。
一个企业的物流不仅仅取决于运输工具的多少,而在于它的物流方案,企业应当使自己的物流方案优化,而本企业由于产品的限制,运力只能达到装载一件产品,所以重中之重便是确定小车数量,观察在不同小车辆数的情况下,生产产品的总时间。
如果为每个产品配备一辆小车,无疑会增加加工中心的时间利用率(在此之前假设加工中心的加工能力足够,使得产品到达时即可进入到加工状态),但是一个企业的最终目标是为了盈利,而一味的增加小车数量必然会使成本增加,这正是企业所不愿意看到的,所以为了满足企业的生产效率提高的要求及生产成本最低的要求,合理地控制小车的数量机器运行路线变成了当务之急。
小车运行时时有路线设计的因素,小车当未装货时该怎么运行,当小车装载产品后用该怎么运行,在装载产品的时候,此时产品的种类及加工到第几部分是已知的,所以小车行驶的目标是已知的,在轨道上就应当给轨道和小车明确的信息,因此在每条路径上应当根据小车上的产品特性确定小车的流动方向,这样就能决定小车运行的最短路径。
在调度问题上,东南大学王玥,张永,毛海军等人进行了汽车生产线物流仿真研究[7],重庆大学刘纪岸, 周康渠, 夏敏, 张瑞娟等人也进行了某摩托车企业发动机装配线物料配送仿真与优化的研究[8],武汉理工大学龚波也就基于WITNESS的生产物流系统仿真进行了研究[9]。刘华琼、甘淑萍二人也就港口物流系统的调度进行了仿真研究[10].
3 witness仿真软件
Witness仿真软件简介
Witness软件是英国Lanner集团集数十年经验开发的流程仿真平台,广泛应用于生产和流程系统运营管理与优化、流程改进、工厂物流模拟与规划、供应链建模与优化等。Witness是目前国际上领先的面向企业流程 的建模仿真平台,其可视化建模与仿真优化技术广泛应用于汽车制造、港口物流、钢铁制造、电子制造、空港规划设计等行业。在现代工业工程领域,计算机仿真一直是不可缺少的决策支持工具,它在大型工程项目的前期规划、投资平衡分析、生产物流的运行控制、供应链与库存管理、作业排序、资源分配、流程再造等众多方面发挥了巨大作用。
3.1离散型元素
1.零部件(Part)
零部件是最基本得离散型元素之一,运用零部件可以代表各种可以移动的离散型事物,例如在路上川流不息的行人,电话交流中的请求,而零部件进入模型的方式有两种,一是主动式的,零部件的主动到达方式可以是active、active with profile,二是被动式的passive,零件的使用方法有很多种,可以一个生成多个,也可以多个转化成一个,也可以进一个出一个。
2.机器(Machine)
机器元素是一种用来获取、处理零部件并将其送往目的离散型元素,而机器可以建立不同的模型,机器在Witness中有七类:
单处理机(single),批处理机(batch),装配机(assembly),生产机(production),通用机(general),多周期处理机(multiple cycle),多站点机(multiple station)
3.缓冲区(Buffer)
缓冲区是用来存放部件的离散元素,通常缓冲区用来存储,如用来存储生产结束后的成品,公交车站等。缓冲区是一种被动型元素,不能主动地将元素推出Buffer,也不能主动的将元素拉入Buffer,而在缓冲区的进入或推出可以先进先出,也可以先进后出,同时可以随时进随时出。在缓冲区中可以设置延迟,当零部件在缓冲区的时间在限定时间推出。
4.车辆(Vehicle)
车辆也是一种离散型元素,主要是用来建立可以将若干个部件从一地点运载至另一个地点的模型,在现实中往往代表厂区的运输车,或一些物流公司的运输车辆,还可以代表铲车,起重机等。
车辆需要轨道才能运动,所以在使用小车时应当先建立轨道,并指明车辆的移动速度,分别为装载情况下和空载情况下的速度。并且在车辆上可以设置装载过程的行为及被调用过程中的规则。
5.轨道(Track)
轨道为车辆提供了运动的路线,只有在轨道上,小车才可以移动,是一种代表车辆运输时所遵循的路径的离散元素,在轨道上可以定义轨道的物理长度及显示的长度,并且轨道上还可以用来完成装载和卸载的工作,而装载和卸载动作都是车辆行驶到轨道的末端front时进行装载和卸载。在设置装载和卸载时应当选中Loading Enabled对勾,并且设定装载和卸载的数量及时间。
6.模块(Module)
模块是用来将一些元素整体集合起来,可以clone整个模块,模块内部具有独立处理的功能模型。
7.逻辑元素
逻辑元素是用来处理数据、建立复杂逻辑结构的元素,通过这些元素可以提高模型的质量和实现对具有复杂结构的系统的建模
8.属性(Attribute)
用在零部件上主要表示零部件的状态属性,用户还可以自定义属性,模型中包括系统属性PEN,ICON,DESC and TYPE等。
9.变量(Variable)
变量分为四种分别为整型、实型、名型、字符串型。
Witness共有三种类型
a.系统变量
系统变量有I,M,N,TIME,VTYPE,ELEMENT具有特殊意义而不能被用户所定义。
b.全局变量
全局变量是用户自定义下的变量,Define变量并设置变量类型及数量。
c.局部变量
局部变量是一个用户在使用它的活动中所创建的变量,且局部变量只能是一个数,而不能是带有下标的数组。
局部变量的定义格式为:
DIM 变量名 {AS 数据类型} {!注释}系统默认数据类型为整型Integer.
3.2规则
1.输入规则(Input Rule)
输入规则控制零部件或车辆进入系统中的流动过程,当零部件为主动生成时,零部件可以主动推入模型,当零部件是被动拉入时,零部件进入模型可以使用pull 零部件名称 out of world。
输入规则有,BUFFER,FLOW,LEAST, MATCH,MOST, PERCENT,PULL,RECIPE,SELECT, SEQUENCE,WAIT。
2.输出规则(Output Rule)
输出规则是用来控制零部件及车辆流出系统的流动过程,输出规则有BUFFER,FLOW,DESTINATION,CONNECT,LEAST,MOST, PERCENT,PUSH,RECIPE,SELECT,SEQUENCE,WAIT等。
输入输出规则设置方式可以通过单击元素,点击可视化按钮输入规则输出规则弹出可视化窗口,如图3.1
图3.1
然后单击目标元素,或者右击元素选中detail弹出窗口选中From或To弹出如下窗口,如图3.2。
图3.2
然后进行编辑,编辑后点击OK,完成编辑。
3.3常用系统函数
1.Mod( )函数
使用格式 Mod(integer_number1, integer_number2)
函数功能 该函数用来求 integer_number1 关于integer_number2 余数,返回值类型为整型。
2.Str2num( )函数
使用格式 Str2num(string)
函数功能 将字符串转化为实数
3.Inputdlg( )函数
使用格式 Inputdlg (title,dialog_text,field_default,field_width,type_id)
函数功能 该函数用来产生用户可进行编辑的交互窗口。
返回字符串型
参数:
title 字符串型,用来产生交互窗口的标题;
dialog_text 字符串型,用来产生交互窗口的要进行编辑的提示信息;
field_default 字符串型,在交互窗口要输入的默认值;
field_width 整数型,交互窗口要输入的文本的宽度;
type_id 整数型;交互窗口要输入的类型,若type_id =0,则应该输入字符串型;若type_id =1,则应该输入整数型;若type_id =2,则应该输入实数型
模型交互窗口如图3.3所示
图3.3
4.NPARTS( )函数
函数功能 返回模型中特定元素中部件(part)的数量。
使用格式 NPARTS(element_name)。
返回整数型
5.NPARTS2( )函数
函数功能 返回模型中指定元素中指定部件(part)的数量。
使用格式 NPARTS(element_name,part_name,mode)。
返回整数型。
参数:
element_name 名型,用于指定要统计部件(part)的元素的名称。
part_name 名型,用于指定要统计的部件(part)的名称。
mode 整数型,用于指定要统计模式。当mode=0 时,则统计包括输入和输出缓冲区的指定部件;当mode=1 时,则只统计指定元素的指定部件,不包括输入和输出缓冲区的指定部件;当mode=2 时,只统计指定元素的输入缓冲区的指定部件;当mode=3 时,只统计指定元素的输出缓冲区的指定部件。
4 witness仿真建模
系统仿真的研究对象是具有独立行为规律的系统。所谓系统是指相互联系又相互作用着的对象的有机组合。
对于一个系统来说,不论它是大还是小,都必然存在三个要素,即实体、属性和活动。所谓实体是指组成系统的具体对象。例如,在商品销售系统中的实体有经理、部门、商品货币、仓库等。系统中的各个实体既具有一定的相对独立性,又相互联系构成一个整体。所谓属性是指实体所具有的每一项有效特性。例如,商品的属性有生产日期、进货价格、销售日期、售价等。所谓活动是指随着时间的推移,在系统内部由于各种原因而发生的变化过程。例如零售商品价格的增长等。
系统是在不断地运动、发展、变化的。由于组成系统的实体之间相互作用而引起实体属性的变化,使得在不同的时刻,系统中的实体和实体属性都可能会有所不同,这种变化通常用状态的概念来描述。在任意给定时刻,系统中实体、属性以及活动的信息总和称为系统在该时刻的状态。用于表示系统状态的变量称为状态变量。使用 witness建模时使用离散型元素、规则、模型交互元素等。
系统不是孤立存在的。自然界中的一切事物都存在着相互联系和相互影响。任何一个系统都将经常由于系统之外出现的变化而受到影响。这种对系统的活动结果产生影响的外界因素称为系统的环境。在对一个系统进行分析时,必须考虑系统所处的环境,而首要的便是划分系统与其所处环境之间的边界。系统边界包围系统中的所有实体。系统边界的划分在很大程度上取决于系统研究的目的。例如在商品销售系统中,如果仅考虑商品仓库库存量的变化情况,那么系统只需包括采购部门、仓库以及销售部门即可。但若要研究商品进货与销售的关系时,系统中还要包括市场调查部门,因为商品销售状况及对进货的影响这部分职能是由该部门完成的。
为了达到系统研究的目的,用于收集和描述系统有关信息的实体。模型是对相应的真实对象和真实关系中那些有用的和令人感兴趣的特性的抽象;是对系统某些本质方面的描述;它以各种可用的形式提供被研究系统的信息。模型描述可视为是对真实世界中的物体或过程相关信息进行形式化的结果。模型在所研究系统的某一侧面具有与系统相似的数学描述或物理描述。从某种意义上说,模型是系统的代表,同时也是对系统的简化。另一方面,模型应足够详细,以便从模型的实验中取得关于实际系统的有效结论。一般来说,系统模型的结构具有相似性、简单性、多面性等性质。
建模活动是通过对实际系统的观测和检测,在忽略次要因素及不可检测变量的基础上,用物理或数学的方法进行描述,从而获得实际系统的简化近似模型。仿真模型反映了系统模型同仿真器或计算机之间的关系,能为仿真器及计算机所接受并在其上运行。仿真实验就是将系统的仿真模型置于计算机上运行的过程。系统仿真是通过实验来研究实际系统的一种技术,通过仿真活动可以弄清系统内在结构变量和环境条件的影响。
4.1物流数据
厂区布置分为九大区域,暂存区(00)、大件加工区(01)、镗区(02)、镗铣区(03)、精加工区(10),轴加工区(11)、车区(12)、附具加工区(13)、成品区(30)。
产品明细如下:
We300c底座,产品数量5
We30c工作台,产品数量5
We300c活塞,产品数量5
We300c油缸,产品数量5
We300c上横梁,产品数量5
We300c下横梁,产品数量5
物流路线如表4.1.1
表4.1.1产品物流路线及所在区域加工时间
产品类型
物流路线
在各区域加工时间(min)
We300c底座
00,03,01,30
0,200,725,0
We30c工作台
00,03,01,02,01,30
0,300,520,60,165,0
We300c活塞
00,12,11,01,02,11,10 ,30
0,75,280,30,50,190,0
We300c油缸
00,12,01,10,30
0,1320,200,1300,0
We300c上横梁
00,03,01,03,02,01,30
0,330,110,620,540,720,0
We300c下横梁
00,03,01,03,02,01,02,01,30
0,330,110,620,540,600,930,240,0
产品加工原料由暂存区取出,按工艺路线依次送往相应加工区,最后运至成品区,完成加工。各大区域间由道路进行联接,由于区域布置的现状,布置4条轨道,包括往返并且车辆在装载的时候速度为50m/min,空载的时候为60m/min。设定轨道长度分别为0,21,42,30,单位为m。
小车的运行规则为在空载时沿着轨道线前行分别为停车场,轨道1,轨道2,轨道3,轨道3,轨道2,轨道1,停车场。在空载车辆前进的过程中,每到达一站点,检查存储缓存,当加工完后的产品存在时,车辆行驶至当前区域的装载区域装载站完成装载,然后根据装载产品的加工状态运送至下一区域,运送到下一加工区域时在卸载区完成卸载。
而当车辆为闲置时,车辆停泊在停车场,遇到车辆供给量不足时,车辆进入到轨道运行。
当车辆将产品运送到成品区时,车辆沿公路线返回然后转至停车场,通过停车场的控制来决定发车与否。
在产品加工完成后,统计加工总时间及车辆的利用率,在车辆的数量对总加工时间的影响不明显时,停止增加车辆。
4.2建立仿真模型
一个模型不可能呈现被模拟的现实系统的所有方面。一个表现真实系统所有细节的模型也常常是非常差的模型,因为它将过于复杂和难于理解。因此,通常的做法是:先定义问题,再制定目标,然后构建一个能够完全解决问题的模型。在问题定义阶段, 对于假设要合理,不要做出错误的假设。
根据上一节对现实状况的描述,现在提出几点假设
1.假设生产过程中加工中心总是工作正常,未出现故障
2.假设车辆运行正常,未出现故障
3.假设加工中心工作能力充足,只要产品到达即可投产
4.车辆的运载能力为1
5.原料一次性到达
4.2.1元素定义
现实的生产或物流系统总是由一系列相互关联的部分组成。比如制造系统中的原材料、机器设备、仓库、运输工具、人员、加工路线或运输路线等;服务系统中的顾客、服务台、服务路线等。Witness 软件使用与现实系统相同的事物组成相应的模型,通过运行一定的时间来模拟系统的行为。模型中的每个部件被称之为“元素(Element)”
表4.2.1实体元素定义
实体元素
元素名
元素类型
说明
we300c底座
part
产品
we300c工作台
part
产品
we300c活塞
part
产品
we300c油缸
part
产品
we300c上横梁
part
产品
we300c下横梁
part
产品
Buffers00
buffer
加工后的产品存放区域
Buffers01
Buffer
加工后的产品存放区域
Buffers02
Buffer
加工后的产品存放区域
Buffers03
Buffer
加工后的产品存放区域
Buffers10
Buffer
加工后的产品存放区域
Buffers11
Buffer
加工后的产品存放区域
Buffers12
Buffer
加工后的产品存放区域
Buffers13
Buffer
加工后的产品存放区域
Buffer01
Buffer
待加工产品存放区
Buffer02
Buffer
待加工产品存放区
Buffer03
Buffer
待加工产品存放区
Buffer10
Buffer
待加工产品存放区
Buffer11
Buffer
待加工产品存放区
Buffer12
Buffer
待加工产品存放区
Buffer13
Buffer
待加工产品存放区
Buffers009
Buffer
成品存放区
Machine01
Machine
加工中心01
Machine02
Machine
加工中心02
Machine03
Machine
加工中心03
Machine11
Machine
加工中心10
Machine12
Machine
加工中心11
Machine13
Machine
加工中心12
运输车
Vehicle
承当运输任务
Tracks1
Track
轨道
Tracks2
Track
轨道
Tracks3
Track
轨道
Tracks4
Track
轨道返
Tracks5
Track
轨道返
Tracks6
Track
轨道返
Tracks7
Track
轨道
Tracks8
Track
轨道返
Load00
Track
在此完成装载
Load01
Track
在此完成装载
Load02
Track
在此完成装载
Load03
Track
在此完成装载
Load10
Track
在此完成装载
Load11
Track
在此完成装载
Load12
Track
在此完成装载
Load13
Track
在此完成装载
Unload01
Track
在此完成卸载
Unload02
Track
在此完成卸载
Unload03
Track
在此完成卸载
Unload10
Track
在此完成卸载
Unload11
Track
在此完成卸载
Unload12
Track
在此完成卸载
Unload13
Track
在此完成卸载
Unload17
Track
在此完成卸载
闸门
Track
控制发车数量
4.2.2逻辑函数定义
逻辑元素
元素名
元素类型
说明
kk
integer
决定当前车辆行驶方向
车辆数
integer
控制发车数量
ss
integer
统计发车数量
批量
integer
产品数量控制
间隔
integer
控制产品到达
4.2.2建模模型可视化效果
图4.2.1
4.2.3建模过程
在建模过程中需要解决的问题有,发车数量的控制,车辆运行路径,产品到达时间控制,产品在加工中心加工时间控制,产品标记,目的地设定,模型与用户交流。
模型初始化
产品.批量 =产品.批量 = STR2NUM (INPUTDLG ("产品数量","How many do you want to ?","5",2,1))
kk = 1
ss = 0
车辆数 = STR2NUM (INPUTDLG ("车辆控制","How many do you want to use?","1",2,1))
第一行语句代表将产品的数量设为5
第二行语句代表为整型变量kk设定初始值为1
第三行语句代表为整型变量ss设定初值0
第四行语句代表通过模型交互函数INPUTDLG()输入所需控制的车辆数目,并将此函数所返回的字符串型变量通过STR2NUM()函数转化为整型变量,其中kk、ss分别为解决车辆运行路径和发车数量控制的变量。
(1).发车数量控制
图4.2.2
在闸门的细节设置中选中Actions On Entry For Track选项输入如下语句
ss = ss + 1
此语句表示当有车辆进入时,将整型变量ss加1
在闸门的细节设置中选中Output To选项输入如下语句
IF ss <= 车辆数
PUSH to 轨道.停车场
ELSE
Wait
ENDIF
此语句为if类型语句,语句决定在什么情况下车辆可以通过,推出Track型元素闸门,进而对需要的车辆数进行控制,而它控制的内容是初始车辆数,即企业拥有车辆数,也是通过此数据输入,在对仿真结果的对比中,所决策的车辆选择数的方案之一。
通过对停车场的细节设计来控制车辆发车与否,通过Output to选项输入如下语句。
IF NPARTS (存储缓冲.Buffers00) + NPARTS (存储缓冲.Buffers01) + NPARTS (存储缓冲.Buffers02) + NPARTS (存储缓冲.Buffers03) + NPARTS (存储缓冲.Buffers10) + NPARTS (存储缓冲.Buffers11) + NPARTS (存储缓冲.Buffers12) + NPARTS (存储缓冲.Buffers13) + NVEHICLE (停车场) - 车辆数 > 0
PUSH to Tracks1
ELSE
Wait
ENDIF
此语句含义为通过判断各区域已加工完毕的存储区域(在模型中为Buffers00 、Buffers01、Buffers02、Buffers03、Buffers10、Buffers11、Buffers12、Buffers13)中所存储产品的数量来判断所需车辆的数量,并根据当前停车场所存储的车辆数与企业可支配车辆数进行运算来判定停车场是否需要发车,当需要发车时将车发出,并将车辆推送到Tracks1,当不需要停车场发出车辆时,车辆在停车场为等待状态Wait。
(2)车辆运行路径控制
当小车在轨道上运行时,应当有指示车辆运行方向,车辆在空载时将沿着轨道线做循环运动,当车辆是装载状体下的情况下,根据车辆所装载的产品,包括产品的名称及产品所经过加工后所拥有的属性进行轨道选择,在车辆调度模块设置产品特性所决定的车辆行驶方向,在轨道上根据装载产品的小车行驶目的地决定车辆行驶路线。
在轨道上设定车辆行驶方向时,使用DESTINATION语句,DESTINATION语句用法:
DESTINATION location1 {,location2...}
sub_rule location1 {,location2...}
{DESTINATION location1 {,location2...}
sub_rule location1 {,location2...}}
{DEFAULT
sub_rule location1 {,location2...}}
在模型中设置如下点击Track元素detail选项的Output to选项输入相应语句,模型中Tracks3设置如下,在编辑窗口输入:
DESTINATION 装卸区.Load03
PUSH to 装卸区.Load03
DESTINATION 装卸区.Load13
PUSH to 装卸区.Load13
DESTINATION 装卸区.Unload03
PUSH to 装卸区.Unload03
DESTINATION 装卸区.Unload13
PUSH to 装卸区.Unload13
DESTINATION 装卸区.Load02
PUSH to 装卸区.Load02
DESTINATION 装卸区.Load00,装卸区.Load10,装卸区.Unload10,装卸区.Unload02,装卸区.Unload12,装卸区.Load01,装卸区.Unload01,装卸区.Load11,装卸区.Unload11,装卸区.Unload17
PUSH to Tracks4
DEFAULT
PUSH to Tracks4
此语句表示当目的地为Load03时,车辆推向Load03,当目的地为Load13时,车辆推向Load13,当目的地为Unload03时,车辆推向Unload03,当目标为Unload13时,车辆推向Unload13,当目的地为Load02时,车辆推向Load02,当目的地为装卸区.Load00,装卸区.Load10,装卸区.Unload10,装卸区.Unload02,装卸区.Unload12,装卸区.Load01,装卸区.Unload01,装卸区.Load11,装卸区.Unload11,装卸区.Unload17时,车辆推向Tracks4,而没有设定目的地的时候,这时候车辆根据默认设置推向Tracks4
(3)产品到达时间及数量控制
产品到时间控制在本模型中主要控制原材料的到达时间,而之后主要根据产品的加工情况来确定产品的到达情况而不是使用数学统计或分布函数的形式来确定产品的到达时间,尤其是在加工的产品,如果采用数学方法或分布函数来控制,准确性会受到极大影响,而且不能指定产品状态。但是原料的到达可以采取分布函数的方法来控制,也可以采用读取电子表格来控制,到达时间间隔设置为变量,使得时间间隔可变,到大批量可变,本例中产品根据生产计划来控制到达时间间隔与产品批量,详细控制为在产品生成时设定产品的到达时间与批量,模型中对产品we300c底座设置时找到产品元素进行细节设计,窗口如图4.2.3
图4.2.3
选中Actions on Create选项输入如下语句
IF GetMonth (TIME) = 1
间隔 = 31 * 24 * 60
ELSEIF GetMonth (TIME) = 2
间隔 = 28 * 24 * 60
ELSEIF GetMonth (TIME) = 3
间隔 = 31 * 24 * 60
ELSEIF GetMonth (TIME) = 4
间隔 = 30 * 24 * 60
ELSEIF GetMonth (TIME) = 5
间隔 = 31 * 24 * 60
ELSEIF GetMonth (TIME) = 6
间隔 = 30 * 24 * 60
ELSEIF GetMonth (TIME) = 7
间隔 = 31 * 24 * 60
ELSEIF GetMonth (TIME) = 8
间隔 = 31 * 24 * 60
ELSEIF GetMonth (TIME) = 9
间隔 = 30 * 24 * 60
ELSEIF GetMonth (TIME) = 10
间隔 = 31 * 24 * 60
ELSEIF GetMonth (TIME) = 11
间隔 = 30 * 24 * 60
ELSEIF GetMonth (TIME) = 12
间隔 = 31 * 24 * 60
ENDIF
此语句表示当产品部件part生成时激发Actions on Create内容,首先判断当前时间月份,然后根据当前月份确定产品产生时隔,在判断过程中判定如果当前月份为1、3、5、7、8、10、12时,设定时间间隔为31天,当前月份为4、6、9、11时,设定时间间隔为30天,当月份是2月份时设定天数为28天,产品批量在模型初始化时已设定为5.接下来各段产品到达时间根据加工时间及运输时间确定。
(4)产品加工时间控制
在产品加工的过程中,产品类型的不同及产品的已加工状态的不同代表了产品的当前状态,由于产品是有工艺路线的,而在当前模型中,主要体现为在加工区域的加工时间,而使得产品的加工时间根据物流路线的不同与产品的不同加工时间是不同的,而产品在加工之前是存储在待加工品区的,在Witness中可以设置route,根据route规则下的stage控制产品的将功时间,产品在加工之前都是有车辆运送至加工区域,经卸载站卸载后存储在待加工区中,所以可以在卸载过程中将产品卸载到相应的route规则的buffer里。
展开阅读全文