四、小型市场零售店模型

1.  系统描述

某家小型市场,分为生食区和熟食区。生食区提供新鲜的肉和鱼,熟食区为需要午餐的人提供附餐及三明治。生食区和熟食区前分别有一个等待队列,顾客在进入市场时,根据需要选择要加入的队列,并取号等待,取号时间为0.5分钟。如果是午餐顾客,且市场内顾客总人数不超过30时,直接进入熟食队列等待,如果是普通顾客,要分两种情况:(1)只买生食:市场内顾客总人数不超过30,进入生食队列等待;(2)买生食和熟食:判断顾客总人数,选择生食队列与熟食队列中较短的一个,取号等待。午餐顾客到达时间服从triangle257*uniform0.851.15);普通顾客到达时间服从triangle3815)。假设一天工作8小时,模拟顾客到达并进行服务的情况,了解生食区和熟食区的工作忙率,顾客等待时间等数据。模型最终界面如图1所示,模型下载

1 模型最终界面

2.  系统分析

(1)      元素说明

模型中涉及的建模元素名称、类型、作用见表1

1 零售店建模元素表

 

 

数量

 

Normalcustomer

Part

1

模拟普通顾客,只买生食或者生食熟食都买

Lunchcustomer

Part

1

模拟熟食顾客,只买熟食

Freshwaitno

Buffer

1

模拟生食队伍取号机前的队列

Cookedwaitno

Buffer

1

模拟熟食队伍取号机前的队列

Freshmachine

Machine

1

模拟生食柜台前的取号机

Cookedmachine

Machine

1

模拟熟食柜台前的取号机

Freshline

Buffer

1

模拟生食柜台前的等待队列

Cookedline

Buffer

1

模拟熟食柜台前的等待队列

freshbar

Machine

9

模拟生食柜台服务

cookedbar

Machine

6

模拟熟食柜台服务

buykind

Attribute

1

表示普通顾客的类型,buykind=1,顾客只买生食,buykind=2,顾客生食与熟食都买

needtoserve

attribute

1

表示buykind=2的顾客已经接受的服务次数,needtoserve=1,表示该顾客只接受了一次服务。Needtoserve=2,表示该顾客接受两次服务,完成服务过程,退出系统。

         

 

(2)      系统终止运行条件

8小时,480分钟的工作时间。

(3)      系统流程图形化描述

2零售店运作流程图

3.  模型建立

(1)      元素的定义

通过设计者窗口“Designer Window”定义2Part元素、4Buffer元素、4Machine元素。然后对照上表修改这些元素名称和freshbarcookedbar名称的Machine的数量分别改为96,设计完毕后的窗口界面如图1所示。

在布局窗口通过:右键Define方式定义两个属性needtoservebuykind,这两个属性的设计界面如图4

  

3 属性元素定义界面

该系统仿真模型构成元素定义完毕之后,需要对元素的细节进行设计,以实现系统的运作流程。

(2)      建模元素细节Detail设置

l  Part类型元素normalcustomer的细节设计

对该元素细节设计需要达到的效果是:实现normalcustomer以表2的分布为基准的间隔时间分布。

顾客到达后首先判断店里的总顾客数量是否大于30,如果店里的总顾客数量大于30,该顾客马上离开。如果总顾客人数不大于30,则该顾客选择接受服务。

其次,我们要对顾客的属性buykind进行判断,如果顾客不是在午餐时间到,那么该顾客只买生食,buykind=1,而如果该顾客是在午餐时间到达的,那么buykind=2.

最后,我们要判断该顾客去往哪里接受服务。对于buykind=1的顾客,直接在生食区进行服务即可,buykind=2的顾客要选择生食区和熟食区队列最少的一区进行服务,服务完成后再接受另外一区的服务。

 

普通顾客到达时间分布

时间

到达率

时间

到达率

900——930

10

1300——1330

55

930——1000

25

1330——1400

40

1000——1030

30

1400——1430

35

1030——1100

30

1430——1500

35

1100——1130

35

1500——1530

40

1130——1200

45

1530——1600

45

1200——1230

65

1600——1630

50

1230——1300

60

1630——1700

60

 

下面是对normalcustomer进行detail设计的过程:

首先我们打开normalcustomerdetail设计对话框,如图4所示:

4  normalcustomer元素细节设计界面

然后首先将Type项改为active with profile,然后在对话框上方选择arrival profile选项,将time display改为8 hours,然后按照表2的内容输入左边对话框中,如图5所示,

5 顾客到达分布设置

最后按照设计要求将程序代码依次填入图4的对话框中,图4界面中按钮中的代码及其含义说明如下:

按钮名称

    

代码功能

To...

IF NPARTS (freshline) + NPARTS (cookedline) < 30

IF buykind = 1

           PUSH to freshwaitno

ELSE

           IF NPARTS (freshline) < NPARTS (cookedline)

                    PUSH to freshwaitno

           ELSE

                    PUSH to cookedwaitno

           ENDIF

ENDIF

ELSE

PUSH to SHIP

ENDIF

 

判断店里总顾客数是否大于30,如果小于30,接受服务,如果顾客只买生食,直接将该顾客送到生食区进行取号排队,如果顾客两者都买,则顾客选择两个区中队列较短的一区先接受服务。

Actions on Create...

 

ICON = 24

IF MOD (TIME,480) < 270 AND MOD (TIME,480) > 120

buykind = 2

ELSE

buykind = 1

ENDIF

 

 

界定顾客的种类,当顾客在午餐时间段外到达的话,buykind=1,即顾客只买生食其余的就是两者都买,即buykind=2.

注:按钮Actions on Create中的程序在每个normalcustomer进入系统是都执行一次,属性元素的值将是针对当前进入系统的normalcustomer