arena中decide模块(arena中decide模块都是什么意思)
arena人员安排判定模块怎么添加
arena人员安排判定模块通过启用Arena分配添加。
arena人员安排判定模块在.proto文件中启用Arena分配会在生成的C++代码中添加处理Arena分配的额外代码进行添加。
内存划分arena即为所谓的堆区,应用中需要的内存从这里分配。
arena怎么链接两个模块
只需要打开了另外一个模块之后,不要把模块退出,继续打开第二个模块就行了,arcgis脚本编辑,行列号对于我们编写脚本来说,是很重要的。 要在编辑器中调出行列号,首先,打开脚本工具。 然后,编辑脚本。
2.
在窗口上找到工具栏。 在工具栏中选择格式,将自动换行取消打勾。
3.
然后,在查看工具栏中勾选状态栏。
4.
最后,在窗口的右下角就能看到我们编写代码的行列号了。
arena怎么随机选择排队人数最少的路
Arena仿真作业
一、问题介绍
位于沈阳的某大学的超市在晚上5点到7点处于高峰期,一些同学会来超市购买日用品,也有一些学生去自助贩卖机购买热咖啡或饮料,而该超市的关东煮比较火爆,关东煮需要煮一段时间才能食用,因此关东煮队伍总是比较长,在选择了商品后,在结算柜台统一结算,这两个柜台距离较近(因为方便学生出门就直接将食物带走了)。
1.1 模型假设
人物假设
员工在该工作时间内一直工作
每名员工只为一名同学服务
同学进入超市分为两种情况,一人和两人一起进入超市,设置Batch_Size来处理这两种情况。
每名同学进入超市都会进行消费
顾客完成后自动离开系统
时间假设
关东煮和结算柜台相邻,忽略关东煮柜台到缴费柜台的时间
自助柜台较多,且购买热咖啡时间很短,故不会出现排队现象
1.2 优化目标
同学在缴费时的排队时间
同学在关东煮的排队时间
不同工作人员的利用情况(关东煮工作人员和收银员)
1.3 约束条件
价格成本,我们希望尽可能少的工作人员来保证相对的人员利用率
二、模块设计
2.1 Create模块
?
?
?
其中,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')
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
?
2.2 Decide模块
?
其中,它们的选择概率分别设置为79 % 79\%79%,35 % 35\%35%和10 % 10\%10%。
?
2.3 Assign模块
购买日用品
假设服从(4,16,24)的三角分布,并且乘以系数Batch_Size
?
购买咖啡
假设服从二项分布,而二项分布又可以近似成Beta分布(2 + 3 * BETA(0.532, 0.513)),并且乘以系数Batch_Size
?
购买关东煮
假设服从(4,6,9)的三角分布,并且乘以系数Batch_Size
?
2.4 Process模块
前三种Process类型均为Delay,在分配后进行延时也就表示用了多少时间,而最后一种类型为Value Added,其表达式为1.24 + 2.07 * BETA(1.29, 1.05),以便于可以累加它处理实体的各种成本或时间等。
购买日用品
?
购买咖啡
?
购买关东煮
?
收银台
?
2.5 Dispose模块
该模块为终点,起名字为Exit表示同学离开超市。
?
2.6 Entity
?
2.7 Resource
?
2.8 Variable
?
2.9 Queue
?
2.10 整体设计
?
三、仿真结果分析
我们设置Replication为10次,每天运行的时长为2 22小时。
?
3.1 初始情况
首先查看一下Entity,我们可以看到学生进入整个流程需要约20分钟的时间,而大部分(17分钟)都用来了排队。
?
然后分析Resource后可以得到这样一个信息,制作关东煮的里利用率仅有18 % 18\%18%,利用率较低。
?
而查看Queue也印证了这一结论,在收银台要等待约2分钟,而关东煮平均几乎不需要等待时间(下图分别为Republication 1和Republication 10的结果)
?
因此我们考虑一种改进方法,可不可以让关东煮的服务人员在不忙的时候来帮忙结算呢?(在假设中关东煮和结算位置相邻)
如果想提高利用率,如何设置关东煮服务人员的人数和收银员的人数呢?
3.2 改进方法–一个服务员干两种任务
首先考虑一个最基本的情况,这一个关东煮的服务人员在不忙的时候来帮忙结算如图所示。
?
那么运行后查看一下结果,首先查看一下Entity,我们可以看到学生进入整个流程需要约21分钟的时间,很显然,做关东煮的服务员在不忙的时候去干收银员的活了,学生等待时间就长了
?
?
然后分析Resource后可以得到这样一个信息,由于让这个关东煮人员多干活,制作关东煮服务员的里利用率有82 % 82\%82%,远超过之前18 % 18\%18%。
?
这说明了什么呢?让这个关东煮人员忙起来了,老板让员工多干活,实际上并没有带来更好的顾客体验。因此我们换一种思路去继续优化这个问题。
增加收银员和服务员的人数
那么我们尝试一下增加它们的人数,将收银员的人数范围设置为[ 1 , 5 ] [1,5][1,5],且服务员的人数设为[ 1 , 2 ] [1,2][1,2],目标函数仍为服务员的利用率,可以看出来一个服务员利用率就已经达到82 % 82\%82%,而显然减少收银员的人数会让更多的服务员空闲时候过来帮忙干活,因此利用率会显著降低。
?
如果我们换一种优化函数呢,将目标函数设置为关东煮和收银台排队的平均排队人数进行优化。可以看出来考虑到价格最少的情况,雇佣两个收银员和两个服务员就可以实现让平均排队人数为2 22左右,这样顾客的体验比较好。
?
3.3 改进方法–直接优化服务员和收银员的人数
直接雇佣更多的人而不是调用人员,会优化的更好,目标函数仍为关东煮和收银的平均等待人数。
?
?
可以看到,在设置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服务员
?
那么按照此设置运行后查看相关指标如下,学生的总时间由原来的21 s 21s21s平均减少到了17 s 17s17s,且结账排队时间也从原来的2 m i n 2min2min减少到1.37 m i n 1.37min1.37min,且结账的平均等待人数已经由1.32 1.321.32减少至0.39 0.390.39。尽管关东煮的平均等待人数从0.39 0.390.39增加到了1.95 1.951.95,但从某种角度说是一件好事,排队的人不多不少在2 22人左右可以吸引更多的学生来围观排队,从而让销量更多一些。
?
这样的限制设计不太合理,经过查阅后可以在Constrain处加约束条件。假设收银员的工资为2000元,服务员的工资为1500元,超市老板希望一个月最多花费7000元在雇佣员工上,为了使得客户的总等待时间最少,应该如何雇佣呢?
?
?
这样设计后清晰合理,可以看到设置2个收银员,2个服务人员时候效果较好,平均总等待人数为1人,客户体验非常好。
四、总结
本次作业搭建了超市中的排队模型,学生在超市中有三种行为,分为购买日用品、自助贩卖机、关东煮,而排队时间主要集中在等待关东煮和最后结账的过程,针对过程过长的问题,采取两种思路进行优化,分别为
方案一:服务员在空闲时帮忙结账提高服务员的利用率
方案二:增加服务员和收银员的人数来减少平均等待人数
最终发现,方案一可以提高服务员的利用率,让服务员忙起来,但并不能减少平均等待时间,而方案二可以适当增加关东煮的人数,在控制成本的情况下,显著减少了收银员的排队时间,尽管关东煮的排队人数适当增加,这会吸引更多的学生来排队,从某种角度上说也带来了一定的经济效益,此外,校园同学的购物体验好,也会吸引更多的同学来超市购买,而不是选择网购等待很久或者去外面购买日用品等,因此最终采用改进的方案二作为最终方案,此时雇佣2个收银员和2个服务人员。