Arena仿真作业
一、问题介绍
位于沈阳的某大学的超市在晚上5点到7点处于高峰期,一些同学会来超市购买日用品,也有一些学生去自助贩卖机购买热咖啡或饮料,而该超市的关东煮比较火爆,关东煮需要煮一段时间才能食用,因此关东煮队伍总是比较长,在选择了商品后,在结算柜台统一结算,这两个柜台距离较近(因为方便学生出门就直接将食物带走了)。
1.1 模型假设
- 员工在该工作时间内一直工作
- 每名员工只为一名同学服务
- 同学进入超市分为两种情况,一人和两人一起进入超市,设置
Batch_Size
来处理这两种情况。
- 每名同学进入超市都会进行消费
- 顾客完成后自动离开系统
- 关东煮和结算柜台相邻,忽略关东煮柜台到缴费柜台的时间
- 自助柜台较多,且购买热咖啡时间很短,故不会出现排队现象
1.2 优化目标
- 同学在缴费时的排队时间
- 同学在关东煮的排队时间
- 不同工作人员的利用情况(关东煮工作人员和收银员)
1.3 约束条件
- 价格成本,我们希望尽可能少的工作人员来保证相对的人员利用率
二、模块设计
2.1 Create模块
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165016493.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021011516503240.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021011516503233.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
其中,student arrival
分布为正太分布,而Batch_Size
为泊松分布,其图像为
x1=0:1:50
x2=0:1:50
p1=poisspdf(x1,0.75)
p2=poisspdf(x2,1)
plot(x1,p1,'r')
hold on
plot(x2,p2,'b')
legend('1','2')
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165046958.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70#pic_center)
2.2 Decide模块
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165107663.png)
其中,它们的选择概率分别设置为
79
%
79\%
79%,
35
%
35\%
35%和
10
%
10\%
10%。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165123380.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70#pic_center)
2.3 Assign模块
假设服从(4,16,24)
的三角分布,并且乘以系数Batch_Size
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021011516515816.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70#pic_center)
假设服从二项分布,而二项分布又可以近似成Beta
分布(2 + 3 * BETA(0.532, 0.513))
,并且乘以系数Batch_Size
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165211242.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70#pic_center)
假设服从(4,6,9)
的三角分布,并且乘以系数Batch_Size
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165223501.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70#pic_center)
2.4 Process模块
前三种Process类型均为Delay
,在分配后进行延时也就表示用了多少时间,而最后一种类型为Value Added
,其表达式为1.24 + 2.07 * BETA(1.29, 1.05)
,以便于可以累加它处理实体的各种成本或时间等。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165327327.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165327350.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165327331.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
-
收银台
2.5 Dispose模块
该模块为终点,起名字为Exit
表示同学离开超市。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165443118.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
2.6 Entity
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X7510x03-1610700483694)(C:\Users\孙昊一\OneDrive\随堂笔记\仿真系统\Arena仿真作业.assets\image-20210102172244605.png)]](https://img-blog.csdnimg.cn/2021011516545467.png)
2.7 Resource
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yhv0QirM-1610700483699)(C:\Users\孙昊一\OneDrive\随堂笔记\仿真系统\Arena仿真作业.assets\image-20210102172316893.png)]](https://img-blog.csdnimg.cn/20210115165502541.png)
2.8 Variable
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6wfTOZAT-1610700483703)(C:\Users\孙昊一\OneDrive\随堂笔记\仿真系统\Arena仿真作业.assets\image-20210102172333409.png)]](https://img-blog.csdnimg.cn/20210115165509279.png)
2.9 Queue
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1uCQG1IF-1610700483707)(C:\Users\孙昊一\OneDrive\随堂笔记\仿真系统\Arena仿真作业.assets\image-20210102172355693.png)]](https://img-blog.csdnimg.cn/20210115165515916.png)
2.10 整体设计
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165623119.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70#pic_center)
三、仿真结果分析
我们设置Replication
为10次,每天运行的时长为
2
2
2小时。
![](https://img-blog.csdnimg.cn/20210115165636163.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
3.1 初始情况
首先查看一下Entity
,我们可以看到学生进入整个流程需要约20分钟的时间,而大部分(17分钟)都用来了排队。
![](https://img-blog.csdnimg.cn/20210115165646369.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
然后分析Resource
后可以得到这样一个信息,制作关东煮的里利用率仅有
18
%
18\%
18%,利用率较低。
![](https://img-blog.csdnimg.cn/20210115165654898.png)
而查看Queue
也印证了这一结论,在收银台要等待约2分钟,而关东煮平均几乎不需要等待时间(下图分别为Republication 1和Republication 10的结果)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165715359.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
因此我们考虑一种改进方法,可不可以让关东煮的服务人员在不忙的时候来帮忙结算呢?(在假设中关东煮和结算位置相邻)
如果想提高利用率,如何设置关东煮服务人员的人数和收银员的人数呢?
3.2 改进方法–一个服务员干两种任务
首先考虑一个最基本的情况,这一个关东煮的服务人员在不忙的时候来帮忙结算如图所示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165802685.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70#pic_center)
那么运行后查看一下结果,首先查看一下Entity
,我们可以看到学生进入整个流程需要约21分钟的时间,很显然,做关东煮的服务员在不忙的时候去干收银员的活了,学生等待时间就长了
![](https://img-blog.csdnimg.cn/20210115165816985.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y3CKaRot-1610700483714)(C:\Users\孙昊一\OneDrive\随堂笔记\仿真系统\Arena仿真作业.assets\image-20210102184536323.png)]](https://img-blog.csdnimg.cn/20210115165824847.png)
然后分析Resource
后可以得到这样一个信息,由于让这个关东煮人员多干活,制作关东煮服务员的里利用率有
82
%
82\%
82%,远超过之前
18
%
18\%
18%。
![](https://img-blog.csdnimg.cn/20210115165832765.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
这说明了什么呢?让这个关东煮人员忙起来了,老板让员工多干活,实际上并没有带来更好的顾客体验。因此我们换一种思路去继续优化这个问题。
那么我们尝试一下增加它们的人数,将收银员的人数范围设置为
[
1
,
5
]
[1,5]
[1,5],且服务员的人数设为
[
1
,
2
]
[1,2]
[1,2],目标函数仍为服务员的利用率,可以看出来一个服务员利用率就已经达到
82
%
82\%
82%,而显然减少收银员的人数会让更多的服务员空闲时候过来帮忙干活,因此利用率会显著降低。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165852369.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
如果我们换一种优化函数呢,将目标函数设置为关东煮和收银台排队的平均排队人数进行优化。可以看出来考虑到价格最少的情况,雇佣两个收银员和两个服务员就可以实现让平均排队人数为
2
2
2左右,这样顾客的体验比较好。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165906296.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
3.3 改进方法–直接优化服务员和收银员的人数
直接雇佣更多的人而不是调用人员,会优化的更好,目标函数仍为关东煮和收银的平均等待人数。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021011516592865.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165943578.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
可以看到,在设置4个收银员,2个服务人员时候的平均等待人数之和非常的小,远小于1个人。
而实际上还应该加一点点限制,即考虑成本因素。
那我们在优化函数里做一点限制,从经验上来看,关东煮不需要太多技术,且空闲时间比较多,因此我们给它的工资低一些,而收银员比较忙,我们给的工资高一些,转换为权重系数后分别为0.2和0.8。我们可以看到此时设置2个收银员,2个服务人员时候效果较好。
此时的目标函数为
N
u
m
平
均
关
东
煮
排
队
人
数
+
N
u
m
平
均
收
银
台
排
队
人
数
+
0.8
∗
N
u
m
收
银
员
+
0.2
∗
N
u
m
服
务
员
Num_{平均关东煮排队人数}+Num_{平均收银台排队人数}+0.8*Num{收银员}+0.2*Num{服务员}
Num平均关东煮排队人数+Num平均收银台排队人数+0.8∗Num收银员+0.2∗Num服务员
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115165957172.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
那么按照此设置运行后查看相关指标如下,学生的总时间由原来的
21
s
21s
21s平均减少到了
17
s
17s
17s,且结账排队时间也从原来的
2
m
i
n
2min
2min减少到
1.37
m
i
n
1.37min
1.37min,且结账的平均等待人数已经由
1.32
1.32
1.32减少至
0.39
0.39
0.39。尽管关东煮的平均等待人数从
0.39
0.39
0.39增加到了
1.95
1.95
1.95,但从某种角度说是一件好事,排队的人不多不少在
2
2
2人左右可以吸引更多的学生来围观排队,从而让销量更多一些。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115170007288.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70)
这样的限制设计不太合理,经过查阅后可以在Constrain
处加约束条件。假设收银员的工资为2000元,服务员的工资为1500元,超市老板希望一个月最多花费7000元在雇佣员工上,为了使得客户的总等待时间最少,应该如何雇佣呢?
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021011517003316.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F3ZTkwMA==,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115170044560.png)
这样设计后清晰合理,可以看到设置2个收银员,2个服务人员时候效果较好,平均总等待人数为1人,客户体验非常好。
四、总结
本次作业搭建了超市中的排队模型,学生在超市中有三种行为,分为购买日用品、自助贩卖机、关东煮,而排队时间主要集中在等待关东煮和最后结账的过程,针对过程过长的问题,采取两种思路进行优化,分别为
-
方案一:服务员在空闲时帮忙结账提高服务员的利用率
-
方案二:增加服务员和收银员的人数来减少平均等待人数
最终发现,方案一可以提高服务员的利用率,让服务员忙起来,但并不能减少平均等待时间,而方案二可以适当增加关东煮的人数,在控制成本的情况下,显著减少了收银员的排队时间,尽管关东煮的排队人数适当增加,这会吸引更多的学生来排队,从某种角度上说也带来了一定的经济效益,此外,校园同学的购物体验好,也会吸引更多的同学来超市购买,而不是选择网购等待很久或者去外面购买日用品等,因此最终采用改进的方案二作为最终方案,此时雇佣2个收银员和2个服务人员。