超市系統模擬---實驗報告

一、實驗概述

此次超市系統排隊模擬實驗是,將整個超市購物過程所耗費的時間抽象為若干個隨機過程和排隊系統。其中,消費者到達超市的時間是隨機的,消費者在超市中選購所花費時間是隨機的,消費者等待收銀的排隊時間和服務時間也是隨機的。超市購物總時間包含三個隨機過程。

等待收銀過程是一個典型的M\/M\/N排隊模型。消費者是被服務者,收銀臺是服務者。到達強度和服務強度均為隨機過程,則可以藉助計算機來進行模擬。

針對以上超市排隊系統,透過編制模擬程式來模擬超市某一工作日其中3小時的排隊過程,求得以下系統效能:

(1)平均排隊時間

(2)平均逗留時間

(3)最大排隊長度

二、實驗原理及超市模擬模型清單

1. 成分

超市由一個入口、售貨區、收款臺和出口組成,且需要滿足如下規則:

1)收款臺每次只能為一位顧客服務

顧客到達後,透過入口進入售貨區選購商品,選購完畢,便到收款臺付款

2)如收款臺空閒,顧客可立即接受出納員的服務。如收款臺不空,則他在收款臺前排

隊等待,知道他成為隊中的第一名才可以接受服務

3)付款完畢顧客便自行離開,透過出口離去

根據模擬目的,將此係統分為入口、售貨區、收款臺和出口四個部分

2.描述變數

1)描述入口:(ui,tAui),表示顧客ui在tAui時刻到達入口,tAui為隨機變數

2)描述售貨區:(x1,t1)......(xk,tk),表示售貨區內有顧客xk,將於tk時刻購買完畢,tk為隨機變數

3)描述收款臺:表示收款臺前排隊情況,且顧客1先結賬2次之,一次類推;(q1,tSqi )表示正在結賬的顧客1將於tSqi時刻結賬完畢而離去,tSqi為隨機變數

3.相互關係

1) 顧客到達時間:tAui =tAu(i−1)+σAui

σAui為顧客選購商品的時間,為隨機變數:當顧客到達服從強度為λ的負指數分佈到達時,σAui = 1\/λ*ln(u),u 為[0,1]上均勻分佈隨機數

2) 購貨完畢時刻:txi =tAx(i−1) +σxi

σxi為顧客選購商品的時間,為隨機變數

3) 結賬結束時間:tSqi =tq1^V+σsqi

σsqi為服務時間,為隨機變數。當隊長m≠0時tq1^V等於前一個顧客的結賬時刻tsq;m = 0時,tq1^V = tq1

4.模擬流程

5. 模擬時鐘設定

此次實驗選擇定步長法,編制模擬程式,對模擬事件的控制應該注意以下問題:

1)模擬時,模擬時間是按照模擬時鐘來顯示的。通常模擬開始時,把模擬時鐘設定為零

2)模擬時鐘隨著模擬程序逐步增加,模擬時鐘的示數指示出自模擬執行開使以來,模擬共花去多少模擬時間

3)主時鐘,控制整個模擬過程

4)子時鐘,控制系統中的某些單個實體

三、變數說明及程式碼解釋

1. 指定隨機數生成標準與櫃檯數量

2. 生成前三小時內顧客到達時間、購物時間、櫃檯服務時間

每一次執行得到的Total_Customer數量是不一樣的,因為我們是基於隨機數生成到達時間點,並且擷取前三小時內到達的顧客。

最終我們得到的模擬資料包括:①顧客到達超市的時間點Arrive_Time②顧客購物耗費的時間Buy_Time③顧客在櫃檯結賬所耗時間Serve_Time

3. 計算顧客到達櫃檯時間及各自對應服務時間

為了便於後續運算,為每個顧客生成一個No作為編號,並且將顧客no與到達櫃檯的時間、結賬耗費的時間用字典關聯起來,得到:

1. Arrive_Counter_No 每個客人對應的到達櫃檯的時間(可能需要等待)

2. Serve_Time_No 每個客人對應的結賬耗費的時間

4.初始化櫃檯

首先,櫃檯規定了有5個,因此使用0,1,2,3,4分別表示他們,作為字典的鍵值,櫃檯的狀態包括:

1. 當前是否空閒?使用Busy來儲存{counter_id:int: bool}

2. 當前櫃檯有幾人在排隊?使用Wait_Line來儲存{counter_id:int: people_num:int}

3. 當前正在服務的客人什麼時候完成結賬?使用Leave_Time來儲存{counter_id:int: leave_time:double}

4. 當前佇列中一次有哪些客人?使用Line_No來儲存{counter_id:int: lines:[customer_no:int]}

5. 當前正在服務的客人是誰?使用Rec來儲存{counter_id:int: customer_no:int}

5.初始化顧客狀態

顧客在超市的時間有這樣幾片段:

1. 到達超市的時間點 Arrive_Time

2. 選購商品的時間 Buy_Time

3. 排隊等待的時間 Wait_Time

4. 結賬的時間 Serve_Time

每一個顧客的到達時間、選購時間、結賬時間都是基於隨機數控制的,我們真正需要模擬的其實是排隊等待的時間。

因此引入一個字典Custom_Leave_Time來儲存每個顧客實際離開櫃檯的時刻(包含等待時間),初始化其為-1,代表沒能在規定時間內沒能完成結賬。

6.模擬開始

①每隔1s更新一次模擬狀態

②先模擬剛完成選購的客人進入櫃檯的行為。

③選擇一個人最少的櫃檯進入結賬或者等待。

④再更新五個櫃檯的狀態

⑤顧客狀態判斷

7.輸出模擬結果

四、結果分析

由於此次實驗並未規定結果精度要求,所以我們設定了2000次獨立重複實驗,以此來保證系統效能測度的真實性和精確性。我們透過python輸出一個資料表,並在excel中進行計算分析(因為編輯公式相對方便)。

1.系統效能測度的點估計

①顧客到達數量的數學期望為人,方差為

②平均等待時間的數學期望為秒,方差為

③平均逗留時間的數學期望為秒,方差為

④平均最大隊長的數學期望為人,方差為

2.系統效能測度的區間估計

此次超市系統排隊模擬實驗屬於終態模擬,由於方差未知,所以採用下圖公式,對引數的數學期望進行區間估計

並由此計算得到:

①顧客到達數量的數學期望的95%置信區間為[, ]

②平均等待時間的數學期望的95%置信區間為[, ]

③平均逗留時間的數學期望的95%置信區間為[, ]

④平均最大隊長的數學期望的95%置信區間為[, ]

五、總結

1.透過模擬實驗得到的結論

從模擬結果可以看到,系統的平均最大隊長的數學期望在11人左右,可見服務檯的數量可以適當增加,或者縮短服務時間,以達到減少平均最大隊長的目的。

平均等待時間為350秒左右,而平均逗留時間為950秒左右,等待時間接近逗留時間的五分之二,這對於超市售貨是不可取的,所以需要提高服務檯數量或縮短服務時間,來改善等待時間過長的現狀。

綜合以上兩點,系統最佳化都需要增加服務檯數量,或者縮短服務時間,然而這需要考慮成本增加的問題,綜合成本與服務水平以達到系統最優才是現實超市需要解決的問題。

2.超市系統模擬實驗存在的問題

模擬模型的確認仍需加強,如此次實驗的顧客到達、購物時間和服務時間都服從負指數分佈,這與現實生活中情況並不相符,現實中超市往往存在高峰與低谷小時。

對模型的確認,最終表現在模型能否預計系統的基本效能。這個過程需要模型的輸出資料與實際資料對比,而這個實驗缺乏實際資料,所以無法肯定模型的實用性。

其它小說相關閱讀More+

娛樂圈的頂流夫婦

甜橙櫻桃

一覺醒來後,變成端淑女娘!

Y七點

四元解夢雜貨鋪

素素紫

小狼狗老公養成計劃

心情大好的天晴宇

病秧子想要活下去

倉鼠夢小澤

當光降臨

琳冧霖