实验4:生产-库存系统仿真
发布时间:2024-08-27
发布时间:2024-08-27
系统假设和系统生产、储存发货流程描述如下:① 保证原材料是充足的;② 原材料送至机器M1前,每耗时uniform(120,20)s加工出一件半成品;一单位原材料能加工出10件半成品。③ 然后依次送到其他各道工序加工:到机器M2前加工,每件半成品加工时间为uniform(5,2)min;到机器M3前加工,加工时间normal(300,30)s;到机器M4前加工,加工时间为normal(6,1)min;最后成为最终产品。
实验4 生产-库存系统仿真
1. 实验目的
1. 学习仿真技术在库存管理和生产-库存领域的应用;
2. 了解库存控制策略仿真的概念;
3. 培养复杂系统的抽象建模能力,并注意局部细节问题;
4. 在实验练习中学习仿真结果分析的概念,稳态型仿真、终止型仿真,以及置信区间等相关概念;
5. 加深学生对仿真技术的全面认识。
2.使用软件
软件名称:Flexsim 3.0
所属公司:Flexsim公司
主要功能:离散事件系统仿真
3.实验要求
1. 实验前预习,阅读预习资料;
2. 实验按照老师指导实验步骤进行;
3. 提交实验报告。
4.实验内容
系统描述与系统参数
某企业要投产一条简单的加工线,如图4-1所示。
图4-1 生产-库存系统平面布置示意图
该企业认为市场情况好,能制造出来就能卖出去,因此选择了传统的推动式面向库存的生产模式。系统假设和系统生产、储存发货流程描述如下:
系统假设和系统生产、储存发货流程描述如下:① 保证原材料是充足的;② 原材料送至机器M1前,每耗时uniform(120,20)s加工出一件半成品;一单位原材料能加工出10件半成品。③ 然后依次送到其他各道工序加工:到机器M2前加工,每件半成品加工时间为uniform(5,2)min;到机器M3前加工,加工时间normal(300,30)s;到机器M4前加工,加工时间为normal(6,1)min;最后成为最终产品。
① 保证原材料是充足的;
② 原材料送至机器M1前,每耗时uniform(120,20)s加工出一件半成品;一单位原材料能加工出10件半成品。
③ 然后依次送到其他各道工序加工:到机器M2前加工,每件半成品加工时间为uniform(5,2)min;到机器M3前加工,加工时间normal(300,30)s;到机器M4前加工,加工时间为normal(6,1)min;最后成为最终产品。
④ 每加工两个半成品之间需要uniform(60,10)s的调整时间。
⑤ 原材料经过四道工序加工成成品,入成品库存储;假设仓库容量足够大。 ⑥ 当机器M1加工完一个原材料时,立即从原材料库中提料,保持持续生产。 ⑦ 当有订单或需求到达时,按照需求提货出库,订单到达时间间隔服从随机分布uniform(500,10)min;每个订单的需求量为normal(80,5)个单位的产品。
实验要求:
对这样一个生产库存系统进行建模仿真,分别按1)连续一个月(每天按24h计算)运行和2)每次运行24小时重复30次仿真运行,连续监测库存信息,即库存量随时间的变化情况,并统计有无缺货发生,缺货率和缺货量为多少。
假设存在以下情况,试建模仿真分析。
① 预测认为:每次需求量接近normal(80,5)的随机分布,分析这个投产方案的规划是否合理?生产中有没有瓶颈?库存随时间的变化是怎样的?
② 假设市场扩大需求增长,每次需求量增长为normal(90,5)的随机分布,仍然采用原来的配置方案,是否还能满足市场需求?为了满足需求从而占领市场,从扩大生产能力的角度如何调整系统的资源配置?
5.实验步骤
(1)将实际问题抽象成两个子系统:生产模块和库存控制模块。
(2) 按要求编写生产系统的逻辑代码。
(3) 编写库存控制系统的逻辑代码。
(4) 调试模型。
(5) 运行输出与结果分析。
(6) 系统调整与分析。
6.具体仿真步骤
系统假设和系统生产、储存发货流程描述如下:① 保证原材料是充足的;② 原材料送至机器M1前,每耗时uniform(120,20)s加工出一件半成品;一单位原材料能加工出10件半成品。③ 然后依次送到其他各道工序加工:到机器M2前加工,每件半成品加工时间为uniform(5,2)min;到机器M3前加工,加工时间normal(300,30)s;到机器M4前加工,加工时间为normal(6,1)min;最后成为最终产品。
(1)构建模型布局
打开Flexism3.0,新建一个模型。从对象库中拖放所需的对象到建模视图中,并根据实验内容的描述修改各实体的名字如图6-1。
图 6-1 模型布局
(2)定义工件流程
按住A键,同时用鼠标左键点击Source对象并且按住鼠标左键不放,然后拖动鼠标至M1对象。此时会出现一条黄线连接Source 和M1对象。然后松开鼠标左键,黄线将变成一条黑线,表示Source对象和M1对象的端口已经连接上。同理,将M1与Queue1相连,Queue1与M2,将M2与Queue2相连,Queue2与M3相连,M3与M4相连,M4与PartQueue相连,Sourceorder与
Separatororder相连,Separatororder与BackOrderQueue相连。连接后的模型如图6-2所示。
图6-2 模型连接
系统假设和系统生产、储存发货流程描述如下:① 保证原材料是充足的;② 原材料送至机器M1前,每耗时uniform(120,20)s加工出一件半成品;一单位原材料能加工出10件半成品。③ 然后依次送到其他各道工序加工:到机器M2前加工,每件半成品加工时间为uniform(5,2)min;到机器M3前加工,加工时间normal(300,30)s;到机器M4前加工,加工时间为normal(6,1)min;最后成为最终产品。
(3)发生器参数设置
双击Source对象,打开其参数对话框,;修改产品流出间隔时间,从 “到达时间间隔”下拉框中选择“常值”并将参数修改为0,如图6-3所示。
图 6-3 原材料到达时间
如上所述在Sourceorder的“到达时间间隔”下拉框中选择使用均匀分布并将参数修改为最小值为600,最大值为30000,如图6-4所示。
图 6-4订单发生器
(4)处理器及暂存区参数设置
双击M1对象,打开其参数对话框,修改处理时间,从“处理时间”下拉框中选择“均匀分布”;修改选项的默认参数点击Template按钮修改其中的棕褐色的参数值,将最小值设为20,最大值设为120,如图6-4。分解器界面中点击“一般分解”前得圆圈,选择“指定数量”,并将参数设置为“10”,如图6-5。同理,将Separatororder的处理时间设置为返回一个为0的常值时间,将分解器的“指定数量”参数设置为normal(80,5)。
系统假设和系统生产、储存发货流程描述如下:① 保证原材料是充足的;② 原材料送至机器M1前,每耗时uniform(120,20)s加工出一件半成品;一单位原材料能加工出10件半成品。③ 然后依次送到其他各道工序加工:到机器M2前加工,每件半成品加工时间为uniform(5,2)min;到机器M3前加工,加工时间normal(300,30)s;到机器M4前加工,加工时间为normal(6,1)min;最后成为最终产品。
图6-4 M1加工时间设置
图 6-5分解数量设置
双击M2对象,打开其参数对话框,修改处理时间,从“处理时间”下拉框中选择“均匀分布”;修改选项的默认参数点击Template按钮修改其中的棕褐色的参数值,将最小值设为120,最大值设为300,如图6-6。同理,将M3的处理时间设置为(normal 300,30)s,M4的处理时间设置为(normal 360,60)s 。
图6-6 M2处理时间设置
系统假设和系统生产、储存发货流程描述如下:① 保证原材料是充足的;② 原材料送至机器M1前,每耗时uniform(120,20)s加工出一件半成品;一单位原材料能加工出10件半成品。③ 然后依次送到其他各道工序加工:到机器M2前加工,每件半成品加工时间为uniform(5,2)min;到机器M3前加工,加工时间normal(300,30)s;到机器M4前加工,加工时间为normal(6,1)min;最后成为最终产品。
(5)订单—库存设置
将PartQueue的容量设置为10000,在“暂存区触发器”界面中点击“收集结束触发”后的“AI”键弹出如图6-7的窗口。
图6-7收集结束触发代码窗口
在该代码窗口中输入以下代码:
fsnode* item = parnode(1);
fsnode* current = ownerobject(c);
//PROSESTART
//库存代码设定
//PROSEEND
//PARAMSTART
//PARAMEND
//PROSESTART
//
//PROSEEND
for (int ranknum = 1; ranknum <= content(BackOrderQueue); ranknum++) {
fsnode *OtherItem = rank(BackOrderQueue,ranknum);
if( getitemtype(item) == getitemtype(OtherItem) )
{
moveobject(item,ShippedParts,0);
moveobject(OtherItem,SatisfiedOrders,0);
return 0;
系统假设和系统生产、储存发货流程描述如下:① 保证原材料是充足的;② 原材料送至机器M1前,每耗时uniform(120,20)s加工出一件半成品;一单位原材料能加工出10件半成品。③ 然后依次送到其他各道工序加工:到机器M2前加工,每件半成品加工时间为uniform(5,2)min;到机器M3前加工,加工时间normal(300,30)s;到机器M4前加工,加工时间为normal(6,1)min;最后成为最终产品。
}
}
同理打开BackOrderQueue的“收集结束触发”的代码窗口,并在窗口中输入如下代码:
fsnode* item = parnode(1);
fsnode* current = ownerobject(c);
//PROSESTART
//订单代码设置
//PROSEEND
//PARAMSTART
//PARAMEND
//PROSESTART
//
//PROSEEND
for (int ranknum = 1; ranknum <= content(PartQueue); ranknum++)
{
fsnode *OtherItem = rank(PartQueue,ranknum);
if( getitemtype(item) == getitemtype(OtherItem) )
{
moveobject(item,SatisfiedOrders,0);
moveobject(OtherItem,ShippedParts,0);
return 0;
}
}
点击软件界面顶部的“工具”菜单栏,选择“工具栏”,弹出一个如图6-8的窗口;点击全局指针弹出一个“全局实体指针列表”,将全局实体指针数设置为4,并分别在每一行输入PartQueue、ShippedParts、BackOrderQueue、SatisfiedOrders,设置后的“全局实体指针列表”如图6-9所示。
系统假设和系统生产、储存发货流程描述如下:① 保证原材料是充足的;② 原材料送至机器M1前,每耗时uniform(120,20)s加工出一件半成品;一单位原材料能加工出10件半成品。③ 然后依次送到其他各道工序加工:到机器M2前加工,每件半成品加工时间为uniform(5,2)min;到机器M3前加工,加工时间normal(300,30)s;到机器M4前加工,加工时间为normal(6,1)min;最后成为最终产品。
图6-8 全局数据、事件、代码、标量窗口
图6-9 全局实体指针设置
(4)编译运行仿真
先点击编译按钮,在 点击运行按钮如图
6-9
图6-9编译 运行
(5)分析仿真结果
将需求量设置为服从normal(80,5)的随机分布的生产库存系统模型,按每月30天,每天24h连续连续运行后的统计表如表6-1所示。
系统假设和系统生产、储存发货流程描述如下:① 保证原材料是充足的;② 原材料送至机器M1前,每耗时uniform(120,20)s加工出一件半成品;一单位原材料能加工出10件半成品。③ 然后依次送到其他各道工序加工:到机器M2前加工,每件半成品加工时间为uniform(5,2)min;到机器M3前加工,加工时间normal(300,30)s;到机器M4前加工,加工时间为normal(6,1)min;最后成为最终产品。
表 6-1 生产库存运行统计报告
从上表的数据中我们可以看出BackOrderQueue(订单需求量)的input(需求)为14537,output(满足量)为7218,由此可见该生产系统并不能满足需求,其缺货量为7319,缺货率高达50.34%。观察该系统的统计报告的contentavg列(平均容量)Queue1为9861,Queue2的值约为10,Queue3的值也约为10,不难发现该生产系统的最大的瓶颈发生在Queue1之后的处理器M2,由于Queue2,Queue的平均库存值也较大因此说明该M3与M4的处理环节也需要进行改进。
如果该系统不变扩大市场需求量为normal(90,5)的随机分布,那该系统市场满足率将更低,如统计报告表6-2所示。
系统假设和系统生产、储存发货流程描述如下:① 保证原材料是充足的;② 原材料送至机器M1前,每耗时uniform(120,20)s加工出一件半成品;一单位原材料能加工出10件半成品。③ 然后依次送到其他各道工序加工:到机器M2前加工,每件半成品加工时间为uniform(5,2)min;到机器M3前加工,加工时间normal(300,30)s;到机器M4前加工,加工时间为normal(6,1)min;最后成为最终产品。
表6-2 市场需求增大后的系统统计报告
改进方法:由于市场需求大于生产系统的生产能力,因此该系统需要从扩大生产力的角度出发解决问题。发展生产力可以减少单位处理环节的时间,提高效率,根据本系统的实际情况,我们不难发现,要满足市场需求必须将处理器的处理时间进行大幅改变,设置为极小的时间值,这在实际生产环境中很难做到。因此,在这里建议增加每个环节处理器的数量,同一个环节多个处理器并行运行,提升生产系统的生产能力。
上一篇:组合数学 答案 第四章,作业提示