flexsim学习资料.docx

上传人:b****6 文档编号:6970915 上传时间:2023-01-13 格式:DOCX 页数:51 大小:1.74MB
下载 相关 举报
flexsim学习资料.docx_第1页
第1页 / 共51页
flexsim学习资料.docx_第2页
第2页 / 共51页
flexsim学习资料.docx_第3页
第3页 / 共51页
flexsim学习资料.docx_第4页
第4页 / 共51页
flexsim学习资料.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

flexsim学习资料.docx

《flexsim学习资料.docx》由会员分享,可在线阅读,更多相关《flexsim学习资料.docx(51页珍藏版)》请在冰豆网上搜索。

flexsim学习资料.docx

flexsim学习资料

实验1多产品单阶段制造系统仿真与分析

1系统描述

现在,我们来看看某工厂加工三种类型产品的过程。

这三类产品分别从工厂其它车间到达该车间。

这个车间有三台机床,每台机床可以加工一种特定的产品类型。

一旦产品在相应的机床上完成加工,所有产品都必须送到一个公用的检验台进行质量检测。

质量合格的产品就会被送到下一个车间。

质量不合格的产品则必须送回相应的机床进行再加工。

我们希望通过仿真实验找到这个车间的瓶颈所在,以回答如下问题:

检验台能否及时检测加工好的产品?

或者检验台是否会空闲?

缓存区的大小重要吗?

2系统数据

产品到达:

平均每5秒到达一个产品,到达间隔时间服从指数分布产品加工:

平均加工时间10秒,加工时间服从指数分布产品检测:

固定时间4秒

产品合格率:

80%

3概念模型

 

4模型实体设计

模型元素

系统元素

备注

Flowitem

产品

不同实体类型代表不同类型的产品,分别标为1、2、

3

Processor

机台,检验台

进行不同的参数定义以表征不同的机台和检验台

Queue

暂存区

两个暂存区,分别表示待加工暂存区和待检验暂存区

Source

待加工产品库

产品的始发处,连续不断的提供待加工产品

Sink

成品库

产品加工并通过检验后的最终去处

5模型运行

图运行中的模型

6数据分析

在描述系统中我们提到希望能找出系统的瓶颈。

有几种途径可以做到这点?

实验2设计步骤

建立Flexsim模型

双击桌面上的Flexsim图标打开软件,你可以看到Flexsim菜单、工具条、实体库,和正投影模型视窗,如图6-1所示。

图6-1Flexsim软件界面

第1步:

模型实体设计

模型元素

系统元素

备注

Flowitem

产品

不同实体类型代表不同类型的产品,分别标

为1、2、3

Processor

机台,检验台

进行不同的参数定义以表征不同的机台和检验台

Queue

暂存区

两个暂存区,分别表示待加工暂存区和待检

验暂存区

Source

待加工产品库

产品的始发处,连续不断的提供待加工产品

Sink

成品库

产品加工并通过检验后的最终去处

第2步:

在模型中生成一个实体

从左边的实体库中拖出一个Source(发生器),放到模型视窗中。

具体操作

是,点击并按住实体库中的实体,然后将它拖动到模型中想要放置的位置,松开鼠标。

这将在模型中建立一个Source实体,如图6-2所示。

生成实体后,实体会被赋予一个默认的名称,例如Source#,#为Flexsim软件打开后生成的实体总数。

在后续的编辑过程中,你可以重新命名模型中的实体。

图6-2生成一个Source对象

第3步:

在模型中生成更多的实体

从实体库中拖出一个Queue实体放在Source实体的右侧;这里,Queue实体相当于实际系统中的缓存区。

再从库中拖出3个Processor实体放在Queue实体的右侧,如图6-3所示;这里一个Processor实体相当于实际系统中的一台加工机床。

图6-3生成其余实体

移动实体-要在模型中移动实体,用鼠标左键点击该实体,并拖动至需要的位置。

还可以通过右键点击并拖动鼠标来旋转此实体。

使用鼠标滚轮,或同时按住鼠标左右键点住该实体并移动鼠标,可使该实体沿z轴上下移动,如图6-4所示。

图6-4移动实体方法图解

变换视角-要改变观察点,可用鼠标左键点击视窗的任意空白区域,然后拖动鼠标。

要旋转模型视角,用右键点击任意空白区并拖动鼠标。

要放大或缩小视图,用鼠标滚轮或同时按住鼠标左右键并拖动鼠标。

如图6-5所示。

图6-5变换视角方法图解

第4步:

完成在模型中生成实体

再拖出一个Queue、一个Processor和一个Sink实体放到模型中,如图6-6所示。

图6-6完成实体生成

第5步:

连接端口

下一步是根据流动实体的路径来连接不同固定实体的端口。

要将一个实体的输出端口与另一个实体的输入端口相连接,首先按住键盘上的“A”键,然后单击第一个实体并按住鼠标左键,拖动鼠标到下一个实体处再松开。

此时将会看到在你拖动时有一条黄色连线,而松开鼠标后,会出现一条黑色连接线。

如图6-7所示。

图6-7“A”端口连接

首先,将Source与第一个Queue连接;将这个Queue分别与每个Processor连接。

再将这三个Processor分别与第二个Queue连接;将这个Queue与检验台Processor连接。

最后将检验台Processor分别与Sink和之前的第一个Queue连接;先连接Sink,再连接Queue。

模型连接图6-8所示。

 

图6-8模型端口连接

接下来需要改变每个实体的参数,使得模型运行与上述系统描述一致。

我们

将从Source开始,沿着流动实体的路径直到Sink。

第6步:

给发生器指定临时实体的到达速率

每个实体有参数视窗,通过该视窗可以添加一定的数据和逻辑关系。

双击一个实体可以进入其参数视窗。

在这个模型中,我们有3种不同类型的产品,每类产品与一个实体类型相对应。

每个流动实体将被随机均匀的赋予1-3之间的任意整数值作为其类型值。

这由Source的Exit触发器来完成。

双击Source打开它的参数视窗,如图6-9所示。

图6-9Source实体的参数视窗

所有Flexsim实体都有多个包含其变量和信息的标签,建模人员可根据模型要求来改变其内容。

在这个模型中,我们需要通过改变到达间隔时间和流动实体类型来产生3种类型的产品。

这里,平均每5秒到达一个新产品,到达间隔时间随指数分布。

Source默认使用随指数分布的到达时间间隔,但我们需要改变其均值。

在仿真过程中使用诸如指数分布的随机分布可以模拟现实系统中的变化。

Flexsim提供了一个叫做ExpertFit的工具来帮助你确定哪种随机分布与你的实际数据最匹配。

在Source标签中,单击到达时间间隔项目下的按钮。

图6-10到达时间间隔项目栏

此时将打开一个新视窗,对该项目下的选项进行了解释,并允许你编辑该选项的参数。

所有以棕色显示的内容都可以编辑。

图6-11参数编辑、解释窗口

使用这个模板你可以修改某个分布,甚至可以插入一个表达式。

对于这个模型,将尺度参数从10改为5。

对于指数分布,尺度参数就是均值。

按确定按钮返回参数视窗。

第7步:

流动实体的类型和颜色

接下来需要在流动实体进入系统时指定一个类型值。

此类型值在1到3之间均匀分布,也就是说,当前进入系统的这个产品是类型1、类型2或类型3的可能性是一样的。

最好的方法是在Source的Exit触发器中改变实体类型和颜色。

选择Source的触发器标签。

单击Exit触发器的下拉菜单,选择“SetItemtypeandColor”选项。

图6-12Exit触发器下拉菜单

再单击模板按钮,可看到如下信息。

图6-13选项解释、修改参数窗口离散均匀分布与均匀分布相似,只是其返回值不是所给参数之间的任意实数,而是一个整数。

我们已经完成了对Source的参数编辑,单击确定按钮即以接受参数修改并关闭该视窗。

第8步:

设置暂存器容量

下一步是设置第一个Queue。

我们需要设定两项内容。

首先要设定其容量;其次,该暂存区应该将流动实体中所有类型1送至处理器1,类型2送至处理器2,以此类推。

双击第一个Queue,就会出现其参数视窗。

图6-14Queue实体参数视窗

将最大容量改为10000,使得这个Queue容量没有限制。

单击按钮。

第9步:

Queue的路径分配

选择Flow标签来设置该暂存区的流动实体路径。

单击Output部分的SendToPort下拉菜单,选中“ByItemtype(direct)选项。

图6-15SendToPort下拉菜单

我们已经将每个流动实体的类型定义为1、2或3,现在可以用其类型值来确定该实体通过的端口号。

处理器1应被连接至端口1,处理器2应被连接至端口2,处理器3应被连接至端口3。

选择了“ByItemtype(direct)”选项后,单击确定按钮关闭该暂存区的参数视窗。

第10步:

定义机床加工时间

接下来需要定义三台机床的加工时间。

双击第一个Processor,出现其参数视窗。

图6-16Processor实体的参数视窗

在“ProcessTime”下拉菜单中,选择“ExponentialDistribution”选项,

再单击按钮。

尺度参数值默认为10秒。

不改变该默认值。

这样,在我们

的模型中,每个产品的平均加工时间是10秒钟,加工时间服从指数分布。

图6-17加工时间参数修改窗口

单击确定关闭模板视窗。

到此为止,这是我们要对Processor做的唯一修改。

我们将在后续章节中使用其它选项。

单击确定关闭其参数视窗。

对其它两个Processor重复这一步骤。

第11步:

设置第二个暂存区

现在双击第二个暂存区打开其参数视窗。

我们希望它和第一个暂存区一样,具有无限容量。

在“最大容量”栏输入10000,单击确定关闭视窗。

第12步:

设置检验台测试时间

现在需要设置检验台的测试时间和路径逻辑。

双击该检验台打开其参数视窗。

在ProcessTimes标签中单击ProcessTime项目下的按钮。

这将打

开一个解释当前加工时间选项的模板视窗。

将时间常数改为4。

无论检测的产品是否合格都需要花费相同的检测时间——4秒。

图6-18加工时间参数修改窗口

第13步:

设置检验台的路径分配

现在需要设置该检验台将不合格产品送回到模型前端,将合格产品送到Sink。

在建立该实体的连接时,应该首先连接Sink,然后再连接第一个暂存区。

这个顺序使得检测台的第一个输出端口连接到Sink,第二个输出端口连接到暂存区。

现在,我们想按照某个百分比来设置输出端口。

点击该检验台的Flow标签。

单击Output部分的SendToPort下拉菜单,选择“ByPercentage(inputs)”选项。

图6-19SendToPort下拉菜单

再单击模板按钮。

这将打开一个解释所选路径策略的视窗。

为端口1输入80%,端口2为20%,也就是说,将80%的产品,或者说制造合格的产品,从输出端口1输出到Sink;而将剩余20%的产品,或者说,有制造不合格的产品,从端口2送回第一个暂存区。

图6-20输出端口策略解释、修改窗口单击确定关闭模板视窗。

我们可能想直接从视觉上区分合格产品和返工产品。

点击检验台参数视窗中

的ProcessTrigger标签,选择OnExit触发器下拉菜单中的“SetColor”选项。

图6-21OnExit触发器下拉菜单

单击按钮并输入colorblack作为流动实体的颜色。

图6-22设置颜色选项参数修改窗口

单击确定关闭此模板视窗,再单击检验台参数视窗确定按钮关闭之。

6.3模型运行

第14步:

编译

到此,我们可以对模型进行编译和运行了。

单击主视窗底部的按钮。

编译过程完成后,就可以进行模型的重置和运行了。

第15步:

重置模型

单击主视窗左下角按钮。

重置模型可以保证所有系统变量都是

初始值,并将模型中所有流动实体清除。

第16步:

运行模型

单击主视窗底部按钮。

现在模型应开始运行。

流动实体将从第一个暂存区开始移动,进入3个处理器中的一个,然后进入第二个暂存区,再进入检验台,最后进入Sink,也有一些重新进入第一个暂存区。

返回的实体将变成黑色。

图6-23运行中的模型

要停止运行,可随时按按钮。

后面你将学到如何按特定时间长度和特定重复次数来运行模型。

当模型定义中用到随机分布时,多次运行模型是很重要的。

要加快或减慢模型运行速度,可左右移动视窗底部的仿真速度滑动条。

图6-24仿真速度滑动条

移动此滑动条能改变仿真时间与真实时间的比率,它完全不会影响模型运行的结果。

现在已经完成了建模过程。

来看一看这个模型产生的一些统计数字。

6.4数据分析

在描述系统中我们提到希望能找出系统的瓶颈。

有几种途径可以做到这点。

第一种方法是,你可以从视觉上观察每个暂存区的容量。

如果一个暂存区始终堆积着大量的产品,这就表明从该暂存区取货的一台或几台加工机床形成了系统的瓶颈。

模型运行时,可以注意到第二个暂存区经常堆积很多待加工的产品,而第一个暂存区的容量通常是20或更少,如图6-25所示。

图6-25不同暂存区中存放的产品数量不同

另一种寻找瓶颈的方法是查看每个Processor的状态统计值。

如果上游的三台机床总是处于繁忙状态,而检验台常常空闲,那么瓶颈很可能就是那三台加工机床。

反之,如果检验台总是很忙,而加工机床总是空闲,那么瓶颈可能是检验

台。

运行此模型至少50000秒,再停止运行,鼠标右键单击第一台加工机床并选择Properties选项,打开其属性视窗。

图6-26右键菜单

选择Statistics标签下的State页,将会出现一个饼图,这张图显示了该实体处于不同状态的时间比例。

图6-27第一台加工机床状态统计图

这张饼图说明这台机床空闲的时间占总仿真时间的17.3%,而加工时间占82.7%。

关闭这一视窗,再右键点击另外两台加工机床,分别打开它们的属性视窗,查看的结果相类似。

现在右键单击检验台Processor,打开其属性视窗。

检验台的状态饼图如图6-28所示。

图6-28检验台状态统计图

从图中可以看出,检验台工作的时间占总仿真时间的98.7%。

通过这些状态

图,我们可以很容易的发现检验台是瓶颈所在,而非那三台加工机床。

现在我们已经找出了瓶颈,接下来的问题是如何改善呢?

这取决于与成本收益相关的多个因素,以及这个车间的长期规划目标。

在将来,是否需要以更快的速率加工产品呢?

在这个模型中,Source平均每5秒生成一个产品,而检测台也是平均每5秒将一个成品送到Sink。

检验台的5秒平均值是由其4秒的检测时间和80/20的路径策略计算得出的。

因此随着时间的推移,这个模型的总生产能力下降。

如果这个工厂想加工更多的产品,Source必须有更高的产品到达率(也就是说更短的到达间隔时间)。

如果不对检验台进行修改,模型中就会不断积累越来越多的待加工品,而暂存区的容量也会不断增加直到无法再加。

为了解决这个问题,我们不得不添加一个检验台,因为检验台是整个系统的瓶颈所在。

如果检验台处暂存区的容量很关键,那么同样需要我们添加一个检验台。

当检验台暂存区存货过高而导致过高成本时,添加一个检验台是很明智的,这样使得暂存区的容量不会过高,而该暂存区内待检验产品的等待时间也不会过长。

我们来看看该暂存区的统计值。

鼠标右键单击该检验台暂存区,选择Properties。

打开统计标签,查看常规页,如图6-29所示。

图6-29暂存区统计数据

继续运行此模型,你将会注意到这些数值随着仿真运行而改变。

查看平均容量和平均逗留时间值。

逗留时间指流动实体在暂存区中停留的时间。

在仿真运行的前期,暂存区的平均容量较小,但随着仿真的继续,它将高达200或300。

如果无法接受200或300的平均暂存区容量,那么就有必要增加一个检验台。

实验2配货系统仿真与分析

14.1建立概念模型

14.1.1系统描述

一个小型的发货商有10种产品运送给五个客户,每个客户有着不同的订单,这个发货商的10种产品都有很大的供货量,所以,当有订单来时,即可发货。

产品是放在托盘上输送出去的。

14.1.2系统数据

订单到达:

平均每小时产生10个订单,到达间隔时间服从指数分布。

产品到达:

产品拣选时间服从指数分布,根据订单确定每种产品的需求数量。

产品包装:

固定时间10秒。

14.1.3概念模型

14.2建立Flexsim模型

双击桌面上的Flexsim图标打开软件,你可以看到Flexsim菜单、工具条、实体库,和正投影模型视窗,如图14-1所示。

图14-1Flexsim软件界面

第1步:

模型实体设计

模型元素

系统

元素

备注

TexturedColoredBox

货物

货物为同一类型,分别由Source2-Source10服从指数分配方式发送。

Pallet

托盘

不同的包装使用不同的托盘,共记5种,分别标记为1,2,3,4,5,由Source1分别在不同的时间段放出。

这里,我们用一个标有类型值的空托盘表示来自于一个顾客的订单。

Combiner

包装机

根据全局表进行包装。

Source

原材料库

产生托盘和货物。

Conveyor

传送带

运送包装好的货物。

Sink

成品库

货物包装后的最终去处

表14-1实体与系统元素的对应关系

第2步:

生成实体

从实体库中拖出(按住鼠标左键不放,拖至正投影模型视窗即可)11个Source

(每个Source代表一类货物)实体,Combiner实体、Conveyor实体、Sink实体

图14-2生成所需实体对象

第3步:

连接端口

连接端口时,根据流程图,我们只需将Source与Combiner,Combiner与Conveyor,Conveyor与Sink之间使用A连接(按下A键不放,鼠标左键点击输入实体不放,拖至输出实体松开鼠标左键和A键即可。

若要取消A连接,则按下Q键不放,鼠标左键点击输入实体不放,拖至输出实体松开鼠标左键和Q键即可)进行连接即可,连接时注意输入输出顺序。

如图14-3所示:

第4步:

设置连接线端口连接完成后,我们为了使视图更加好看,同时也为了利于以后的建模,因此我们考虑将这些连接线设为不可见。

单击建模视窗左侧的菜单弹出按钮,可以看到如图14-4的弹出菜单:

图14-4设置连接线属性视图

单击ShowConnections选项前的方框,除去其前的√,可以看到模型视窗中的连接线都不见了。

注意,这只是视觉效果,而实际上我们刚才所作的连接没有被消除,也就是说,各实体间的逻辑连接还是存在的。

如图14-5所示:

图14-5隐藏实体间的连接线

图14-6隐藏实体的名称属性等标签

 

第5步:

定义Source

在模型中,共有11个Source实体,第一个Source定义为产生托盘,其余10个Source产生待包装的十种货物。

托盘的到达时间固定的,每3600个单位时间产生10个托盘。

我们双击对应于托盘那个Source1实体,打开其参数视窗。

改变其ArrivalStyle的默认选项“Inter-ArrivalTime”,选择“ArrivalSchedule”,并将“FlowItemClass”选项的下拉列表中选择“Pallet”,将“NumberofArrivals”数值改为5,点击“RefreshArrival”按钮刷新列表,修改列表中的数值,如图14-7所示:

图14-7定义Source的ArrivalSchedule表对于产生货物的Source2-Source10实体,我们采用默认设置。

第6步:

定义全局表

下面我们定义一个全局表。

首先,点击工具栏中的“ToolBox”按钮,打开“GlobalModelingTools”视图,在“GlobalTables”一项中点击“Add”按钮,系统为我们添加了一个名为“GlobalTable1”的全局表,如图14-8所示:

图14-8加入一个名为GlobalTable1的全局表

GlobalTable1”就是我们要编辑的全局表。

我们单击“Edit”按钮,打开“Global

TableParametersWindow”视图,如图14-9所示:

图14-9打开全局表的参数窗口

因为我们要建立一个10行5列的全局表,所以我们将“Rows”选项改为10,将“Columns”选项改为5,并将“Name”改为“Orders”,点击“Apply”更新表格,并添加数据如图14-10所示:

图14-10编辑全局表

编辑的过程中,我们可以随时点击Apply按钮来保存我们的编辑结果,防止

发生意外而进行重复劳动。

编辑完成后,点击OK按钮保存并关闭视图

第7步:

定义Combiner

下面我们来设置Combiner实体。

我们双击Combiner实体,打开它的参数视图,如图14-11所示:

图14-11打开Combiner的参数窗口

然后我们点击名为“ProsserorTriggers”标签,如图14-12所示:

 

图14-12ProsserorTriggers标签视图

我们在“OnEntry”选项的下拉列表框中选择“UpdateComponentList”一项,

如图14-13所示:

 

图14-13选择OnEntry触发的功能函数

点击OK确定设置即可。

对于Conveyor与Sink实体我们采用默认设置。

14.3模型运行

第8步:

设置Experimenter

我们模型的运行共分4个阶段,每个阶段3600个单位时间,连续进行,共记

14400单位时间。

模型的运行总时间长度在Experimenter中设置。

单击界面右下方

的按钮,打开Experimenter窗口,将SimulationEndTime改为14400。

这里,我们只运行一次仿真,因此将仿真次数改为1。

如图14-14所示:

图14-14设置Experiment窗口

单击确定关闭窗口。

第9步:

编译、重置、运行模型

单击按钮,对模型进行编译。

编译完成后,单击按钮,重置模型。

最后单击按钮,开始仿真。

我们看到在不同的阶段,托盘包装的货物个数是不同的,Combiner根据全局表来设定托盘包装的货物的个数,从不同的Source中获取不同数量的货物。

如图14-15所示:

图14-15模型的运行

当仿真运行到14400单位时间的时候,自动停止。

现在已经完成了建模过程。

来看一看这个模型产生的一些统计数字。

下面您就可以根据以前学习的内容来分析数据了。

实验2配货系统仿真与分析

1系统描述

一个小型的发货商有10种产品运送给五个客户,每个客户有着不同的订单,这个发货商的10种产品都有很大

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1