超市服务系统优化.docx
《超市服务系统优化.docx》由会员分享,可在线阅读,更多相关《超市服务系统优化.docx(15页珍藏版)》请在冰豆网上搜索。
![超市服务系统优化.docx](https://file1.bdocx.com/fileroot1/2023-1/3/a2de373d-8e76-4bd7-beec-82358bd9a11e/a2de373d-8e76-4bd7-beec-82358bd9a11e1.gif)
超市服务系统优化
西南交通大学
超市服务系统优化
计算机仿真
zps
2012/6/14
指导老师:
***
作者:
***
摘要
本文主要根据超市收银排队系统的特征和排队论的知识,将其抽象为数学模型,并在系统达到平衡、顾客在系统中的平均等待时间和平均等待队长小于顾客所允许的最长平均等待时间和最长平均等待队长的条件下,建立了超市收银排队系统的优化模型,运用计算机模拟的方法进行仿真,再对仿真结果进行统计分析,从而得到最优的超市人员配置。
关键词:
排队系统;超市;优化模型;计算机模拟
Abstract
Inthispaper,weabstractsupermarketqueuingsystemtomathematicalmodel,accordingtoit’scharacterandtheknowledgeofqueueingtheory.Weestablishoptimizedmodelofsupermarketqueueingsystemundertheconditionsthatthesystemstrikesabalance,thecustomer’smeanwaitingtimeandaveragelengthofthewaitingqueueinsystemislessthanthelongestmeanwaitingtimeandthelongestaveragelengthofthewaitingqueuewhichtheycanacceptrespectively.Then,weconductsimulationunderthehelpofcomputersimulationmethod,andcollectthesimulationresultforanalyzing.atlast,wecangetaoptimizedpersonnelresources.
Keywords:
queueingsystem,supermarket,optimizedmodel,computersimulation
第一章绪论
1.1研究背景及意义
排队现象是我们生活中常遇见的现象,例如:
上下班做公共汽车,等待公共汽车的排队,顾客到商店、超市购物形成的排队,售票处购票形成的排队等。
一般来说,当某个时刻要求服务的数量超过服务机构的容量时,就会出现排队现象。
但在日常生活中,我们常常看到下述不协调的现象:
有时候超市中的顾客较多,而开放的收银台的个数相对较少,致使顾客在收银台前排了很长的队,这样大部分顾客的等待时间就会很长,影响顾客对超市的满意度;而有时进入排队系统的顾客较少,超市开放的收银台的个数又相对较多,从而导致收银员闲置,这对于提高超市的收益来说是非常不利的。
所以,对于超市的经营者来说,在一天中的各个时间段内,应该开放多少个收银台数,显得尤为重要。
因为只有这样才能一方面降低成本,另一方面获得顾客的满意度,总的来提高超市的整体收益,进而使系统达到最佳的运行状态。
而要从根本上解决排队问题,超市必须在可接受的经营成本下,尽可能的减少顾客的等待时间和等待队长,来获得顾客的满意度。
只有这样,在同等条件的竞争下,该超市才具有较强的竞争力。
由于排队系统是一个随机服务系统,顾客的到达和收银员对顾客服务时间都是随机的,因此,超市如果开放的收银台数目过少,将会导致顾客的等待队长和等待时间很长,引起顾客不满,从而导致顾客流失;若超市开放的收银台数目过多,虽然可以减少顾客的等待时间和缩短顾客的等待队长,但这样将会增加收银员的空闲时间,致使企业的经营成本增加。
这就是上述提到的在超市或商场经常见到的现象。
所以,管理者或经营者必须考虑如何在这两者之间取得平衡,一方面可以提高服务质量,另一方面可以降低经营成本。
因此,如何根据顾客流量及服务员对顾客的服务水平来动态地、合理地开放收银台的数目,是大型超市或商场等这类随机服务行业要解决的问题。
所以,利用排队论的知识来研究如何根据不同时间段的不同客流量来动态的开放收银台的数目是非常有现实意义的。
第二章排队系统的基础知识
2.1排队系统的基本组成部分
它主要由三部分组
:
输入过程、排队规则和服务机构。
输入过程:
输入过程是描述顾客来源及顾客是按怎样的规律到达排队系统。
包括:
(1)顾客总体数:
顾客可能是有限的,也可能是无限的。
(2)到达类型:
顾客是单个到达或成批到达。
(3)相继顾客到达的间隔时间服从什么样的概率分布,分布的参数是什么,到达的间隔时间之间是否独立。
在排队论的研究中一般假定顾客到达间隔时间相互独立,同分布。
排队规则:
排队规则是指服务是否允许排队,顾客是否愿意等待。
在排队等待的情况下,服务的顺序是什么。
包括:
损失制、等待制和混合制。
损失制为若顾客到达时,所有服务台均被占,服务机构又不允许排队等待,此时该顾客就自动离去。
等待制为顾客到达时,若所有服务台均被占,他们就排队等待服务。
等待制又分为:
先到先服务、后到先服务、随机服务、有优先权的服务。
混合制为损失制与等待制的混合。
服务机构:
刻划服务机构的主要方面包括服务台数目、顾客所需的服务时间服从什么样的概率分布、每个顾客所需的服务时间是否独立、是成批服务或是单个服务。
2.2描述排队系统的主要数量指标
(1)队长和等待队长
队长是指系统中的顾客数(包括正在接受服务的顾客数),而等待队长是指系统中排队等待的顾客数,它们都是随机变量,是顾客和服务机构双方都十分关心的数量指标。
显然,队长等于等待队长加上正在被服务的顾客数。
(2)等待时间与逗留时间
顾客的等待时间是指从顾客进入系统的时刻起直到开始接受服务的这段时间,而逗留时间是顾客在系统中的等待时间与服务时间之和。
在假定到达与服务是彼此独立的条件下,等待时间与服务时间是相互独立的。
等待时间与逗留时间是顾客最为关心的数量指标,应用中关心的是统计平衡下它们的分布及期望平均值。
(3)系统的忙期与闲期
从顾客到达空闲的系统,服务立即开始,直到系统再次变为空闲,这段时间是系统连续繁忙的时间,我们称为系统的忙期,它反映了系统中服务员的工作强度。
与忙期对应的是系统的闲期,即系统连续保持空闲的时间长度。
在排队系统中,统计平衡下忙期和闲期是交替出现的。
(4)输出过程
输出过程也称离去过程,是指接受服务完毕的顾客相继离开系统的过程,
刻画一个输出过程的主要指标是相继离去的时间间隔和在一段时间内离去顾客
的数目,这些指标从一个侧面也反映了系统的工作效率。
第三章超市收银排队系统的优化研究
3.1超市收银服务系统的特征描述
超市收银服务系统是一个随机服务系统,这是因为对于超市来说,顾客什么时候到达是随机的,并且收银员对顾客的服务也是随机的。
通过对该系统的观察与分析该我们得到它具有如下的特点:
(1)已经选购完商品准备离开且进入到收费系统的顾客是超市收银服务系统服务的对象,由于顾客是源源不断的进入到超市,所以可以认为顾客源是无限的。
(2)大多数顾客到达超市是相互独立、互不影响的;并且顾客到达收银服务系统也是随机的和相互独立的。
(3)超市的收银员可以看作是排队系统的服务机构,因此系统是由多个服务台并行的工作并且收银员对每个顾客的服务时间是随机的和相互独立的。
(4)系统服务顾客是遵从先到先服务的原则,且为等待制,即顾客接受服务时可能需要等待。
(5)在实际运营中,每个收银台前都有排队队列,顾客到达排队系统时选择较短的队列排队等候,且在排队过程中可以在不同的队列之间相互移动。
综上所述,根据超市收银服务系统的特征描述和排队论的知识,我们知道该随机服务系统实际上就是一个多服务台先到先服务制排队系统。
3.2超市收银排队系统的假设
为了将超市的收银排队系统抽象为排队论中的某个模型,我们来看一下它的输入过程、排队规则和服务机构。
输入过程:
顾客的到达是随机和独立的,并且是源源不断地进入到超市中的,因此顾客的来源可以看作是无限的。
在现实生活中,由于两个顾客同时到达服务系统的概率极小,所以我们可以假设顾客的到达类型是单个的随机到达,并且他们的到达是相互独立的。
排队规则:
当顾客到达时,若系统中有空闲的服务台便立刻接受服务,若系统中没有空闲的服务台,则进入到最短的队列排队等候,直到有空闲的服务台时再接受服务。
顾客在等待的过程中,可以在不同的队列之间移动。
即超市收银服务系统是先到先服务的等待制随机服务系统。
服务机构:
设收银服务系统中有c个服务台,它们之间是相互独立、并行地对顾客进行服务的,并且系统对顾客的服务是单个进行的。
同时假定每个收银台的服务能力是一样的并且不随时间的变化而变化,也就是说每个收银台的服务能力在每个时间段内都是一样的,是一个恒定的数值。
因此,如果我们假设顾客的到达时间间隔服从负指数分布,服务员对顾客的服务时间服从负指数分布,那么我们可以认为超市收银排队系统是一个M/M/c/∞排队系统。
3.3超市收银排队系统优化模型的建立
由上面的分析假设知,超市收银排队系统是一个M/M/c/∞排队系统,所以我们假设系统中有c个服务台并行的工作,顾客按参数为
(
)的负指数分布到达,每个顾客所需的服务时间独立、服从相同参数
(
)的负指数分布,系统容量为无穷大,而且到达与服务是彼此独立的,我们知道当系统达到稳态时,
;
假设顾客所容忍的最长平均等待时间为
、所能容忍自己所在队列的最长平均等待队长为
,则所能容忍的系统中最长平均等待队长为
,由上面
的分析知,满足条件:
其中
;
为平均等待时间,
为平均等待队长。
为了使人员配备尽量少,那么目标函数为:
以上我们是以假设顾客到达时间间隔为负指数分布、收银员对顾客的服务时间服从负指数分布、系统有c个相互独立的服务台并行工作这样的排队系统为例,建立的优化模型。
第四章超市排队系统的模拟
4.1计算机模拟的概念
模拟或仿
就是模拟真实的事物,也就是用一个模型来模仿真实的系统。
计算机模拟就是利用计算机对所研究系统的内部结构、功能和行为进行模拟。
在日常生活中,我们可以看到许许多多的模拟现象,例如象棋模拟陆军作战的过程。
计算机模拟是一种解决问题的强有力的工具。
在国民经济的各个领域都有计算机模拟技术的用武之地,特别是在那些环境恶劣、试验条件苛刻、试验仪器精度不够、试验周期太长、花费财力太大的场合,使用计算机模拟技术解决问题有其独特的优点。
由于微型计算机的成本降低,运行速度快,准确度高,并且有图形处理与显示功能,其优点被专家和用户逐渐认可。
利用仿真技术建立系统模型,可以在投入大量的时间、资金和其它资源之前对拟建的工程系统设计进行广泛的测试和选优,应用该方法,可确定系统的最优工艺或系统的活动过程,这样以来可以避免人力和财力的浪费。
计算机模拟是近代科学技术革命具有代表性的科学技术之一。
它之所以有代表性,并能反映出新的科学技术的时代特征,是因为它的应用已为各领域带来新的气象和成果,并使其向纵深飞速发展。
计算机模拟所涉及的知识面很广,计算机模拟工作者不但要有计算机和数学知识及编程技巧,还要对模拟的对象有深刻的理解,只有这样才能较好地做出自己模拟系统。
4.2超市收银服务系统的模拟
运用计算机模拟超市收银系统,可以快速的得到不同人员配置下的服务指标,为优化方案提供必不可少的统计数据,是一种较为行之有效的方法。
4.2.1随机数的产生
负指数分布:
首先产生[0,1]上均匀分布的随机数
,然后通过下面的公式来计算服从负指数分布的随机数
,
4.2.2顾客活动流程与仿真程序流程分析
(1)顾客到达事件
首先,系统中的一个顾客从进入到排队系统,同时确定下个顾客的到达时间,并把该时间记为下个到达事件的时间子钟。
然后判断每个服务台的服务状态(空闲,忙碌),若为空闲,则顾客直接进入服务,并确定服务时间,累计该服务台的工作时间,计算该服务台顾客的离开时间,最后对每个服务台的离开时间进行比较,把最近的离开时间记为离开事件的时间子钟;若每个服务台都为忙碌,那么进入排队,排队数增加1,计算队长与时间乘积累计值。
具体流程见图4-1。
(2)顾客离开事件
顾客离开后,已服务顾客数增加1,如果有顾客排队,该顾客立即进入服务,并找到离开子时钟小于当前事件的服务台,确定其服务时间,更新其离开子时钟,累计工作时间。
找出最小离开子时钟,更新为离开事件子时钟。
如果没有顾客排队,那么将离开子时钟小于系统时钟的服务台的服务状态变更为空闲,同时离开事件子时钟更新为一个大数。
具体流程见图4-2。
图4-2
(3)仿真时钟
比较到达和离开事件子时钟,选取最近的(最小)事件作为下次的处理事件。
(4)仿真模型总流程
图4-3
4.2.3仿真结果
根据统计资料,可以确定超市顾客的到达平均时间间隔为:
,超市服务台的平均服务时间为50秒/人。
仿真时间为3600秒。
程序的运行结果如下:
简单统计过后:
服务台个数
平均等待时间
平均队长
服务台平均工作时间
5
14.03
1.44
2617
6
4.48
1.26
2084
7
2.92
1.06
1720
8
1.73
0.52
1616
图4-4
图4-5图4-6
图4-7
由上面的数据的折线图,可以得到下面一些结论:
平均等待时间随着服务台个数的增加显著减小,服务台超过6台后,减小变化变小,继续增加服务台个数已近意义不大,而平均排队长度都在可接受的范围,每个工作台的工作时间也较为合理。
所以把,服务台的个数定位6个较为合理。
第五章总结
通过该实例,可以看到,在解决实际问题是,计算机仿真有很多优点:
成本降低,运行速度快,准确度高。
结合图形化的解决方案,还可以使仿真结果更加形象。
为以后解决问题有提供了一种切实可行的方案。
通过本学期计算机仿真的学习,再次锻炼了自己解决问题的能力,巩固了C++语言的学习,同时也学到了很多新的技巧,可以说是受益匪浅。
参考文献
1邓小琳.基于排队理论的最优生产线设计.运筹与管理.2000,9(3):
64~6
2傅廷亮.计算机模拟技术.中国科学技术大学出版社,2001:
1~254~5
3蔡金凤.基于排队论的大型超市服务台数的最优设计.哈尔滨工业大学2009年6月
附录(源代码)
#include
#include
usingnamespacestd;
#include
#include
#include
#include"time.h"
usingnamespacestd;
constintN=40;//服务台最大个数
constintM=100;//一条队伍顾客的最大人数
floattime_max,l1,l2,ss[N],sft[N],swt[N],cat[M],cst,lt,let;/*最大仿真时间,顾客平均到达时间的倒数,服务台平均服务时间倒数,i服务台的状态(忙1,闲0),i服务台的累计空闲时间,i服务台的累计工作时间,即时队列中i顾客的到达时间,顾客i的服务时间队长*等待时间,上次事件的时间*/
floatTime,tne[2],set[N],totdel;//仿真时间,两类事件的时间,累计延误时间;
intn,scn,cwn,Next,c;/*服务台个数,已服务的顾客数,排队长,下次事件类型,队长*/
voidinit();
voidtiming();
voidarrive();
voiddepart();
voidreport();
floatrexp(floatLAMDA);
voidmain(){floatcaat,ssat;
ssat=50;
caat=13;
time_max=3600;
//n=5;
l1=1/caat;
l2=1/ssat;
cout<cout<<"顾客平均到达间隔(s):
"<cout<<"服务台个数"<cin>>n;
srand(int(time(NULL)));
//for(n=2;n<=10;n++){
//cout<<"服务台个数为"<init();
while(Time{timing();
switch(Next){
case0:
arrive();break;
case1:
depart();break;
default:
cout<<"事件类型错误!
"<}
report();
cin>>n;
}
voidinit(){
Time=0;
for(inti=1;i<=n;i++)
ss[i]=0,sft[i]=0,swt[i]=0,set[i]=10000;
cat[0]=rexp(l1);
Next=0;
lt=0;
let=0;
c=0;
tne[0]=Time+cat[0];
tne[1]=10000;
cwn=0;
return;
}
voidtiming()
{floattemp=10000;
for(inti=0;i<2;i++)
{if(tne[i]temp=tne[i],
Next=i;}
Time=tne[Next];
return;
}
voidarrive()
{inttest=0;floattemp;c++;
tne[0]=Time+rexp(l1);
cat[c]=tne[0];
for(inti=1;i<=n;i++)
{if(set[i]