3.2.1 Mô tả bài toán
Siêu thị BigC Hà Nội có một bãi đậu xe với số lƣợng 100 chỗ. Nếu tất cả các chỗ đều có xe thì bãi đậu xe sẽ thông báo không nhận thêm xe và khi đó phải tìm chỗ đậu xe ở ngoài khu vực của BigC. Thời gian khách hàng đi từ bãi đậu xe vào đến siêu thị đƣợc ƣớc tính khoảng 60 ± 40 giây theo một hàm phân bố đều. Tại siêu thị có 100 xe đẩy cho khách mua hàng và 50 giỏ hàng xách tay cho các khách hàng mua sắm nhỏ (số lƣợng mua hàng nhỏ hơn 10
quầy phục vụ các khách hàng mua nhanh với một số lƣợng hàng tối thiểu (nhỏ hơn 10 loại hàng hóa).
Luồng khách hàng (xe ô tô) đến mua hàng đƣợc phân bố trong khoảng thời gian trung bình từ 30 ± 5 giây. Nếu bãi xe có chỗ trống thì khách hàng sẽ vào đậu xe và mua hàng.
Nếu ngƣời mua hàng mua nhiều hơn 10 loại hàng hóa thì họ sẽ lấy xe đẩy, trong trƣờng hợp ngƣợc lại, họ chỉ lấy giỏ hàng xách tay. Sau khi ngƣời mua hàng lấy xe đẩy hay giỏ xách tay, có thể coi số hàng họ mua là những con số ngẫu nhiên trong miền giá trị từ 5 đến 100 loại hàng.
Thời gian mua hàng của 1 khách hàng đƣợc tính bằng tỷ lệ số lƣợng hàng đƣợc mua nhân với thời gian chi phí cho 1 món hàng là 60 giây.
Khi mua hàng xong, ngƣời khách hàng sẽ đến quầy thu ngân để trả tiền, quầy thu ngân sẽ mất thời gian tƣơng ứng cho việc thanh toán của 1 khách hàng là 2 giây cho mỗi món hàng và cộng thêm một khoảng thời gian T = 90 giây cho một khách hàng.
Sau khi mua hàng xong, khách hàng sẽ mất thời gian từ 60 ± 50 giây cho việc ra khỏi siêu thị để lên xe ô tô và ra khỏi bãi đậu xe.
Các yêu cầu đặt ra:
3. Xây dựng mô phỏng mô hình làm việc của siêu thị trong thời gian của 1 ca làm việc liên tục (8 tiếng đồng hồ).
4. Đƣa ra các con số đặc trƣng của siêu thị này: hệ số sử dụng của các loại xe đẩy, giỏ hàng, của các quầy thu ngân.
3.2.2 Phân tích bài toán
- Mô phỏng hình ảnh thực tế
Hình 3.3: Mô hình minh họa hoạt động của siêu thị
- Mô hình phân tích
Hình 3.4: Mô hình hoạt động các hàng đợi của siêu thị
Khách hàng dùng giỏ Khách hàng dùng xe đẩy Phục vụ nhanh Phục vụ thƣờng Bãi xe 100 chỗ Khách hàng (60 ±40) Bãi xe đầy 50 giỏ 100 xe đẩy Quầy số 1: Phục vụ nhanh Quầy 2,3,4,5: Phục vụ thƣờng Bãi xe đầy Bãi xe 100 chỗ Khách hàng 60± 40
- Sơ đồ thuật toán
Hình 3.5. Sơ đồ thuật toán mô phỏng hàng đợi của siêu thị
3.2.3 Giải bài toán
- Số lƣợng khách hàng (xe ô tô xuất hiện) đến mua hàng là: 28800. 1/30 = 960
- Tỷ lệ giữa khách hàng mua từ 2 đến 9 món hàng (mua bằng giỏ hàng) với khách hàng mua bằng xe đẩy (từ 10 đến 99 món hàng) là: 7/40.
- Thời gian trung bình một khách hàng ở siêu thị là: + Thời gian gửi xe: 60 (giây)
Star t
Sinh ngẫu nhiên xe vào bãi 30±5 giây Kiểm tra bãi xe còn trống hay không Xe vào bãi, khách hàng vào mua hàng Khách hàng chọn xe đẩy, giỏ hàng, chọn hàng, thanh toán tiền Xe bỏ đi Kiểm tra thời gian
mô phỏng
End
Hết thời gian Còn thời gian mô phỏng
Xác định các giá trị thời gian khách mua hàng Xe rời bãi
+ Thời gian mua hàng: số món hàng x 60 giây: (100+6)/2 . 60 = 3180 (giây) + Thời gian thanh toán tiền: (100+6)/2 .2 + 90 = 196 (giây)
+ Thời gian mang hàng ra xe và rời khỏi bãi xe:60 (giây) + Tổng thời gian: 3496 (giây)
- Số lƣợng khách hàng có thể đƣợc phục vụ ở siêu thị là: 28800/3496 x 100 = 823.
3.2.4 Mô hình GPSS World
3.2.4.1 Cách tiếp cận để giải quyết bài toán đặt ra
Xuất hiện một số điểm đặc biệt đáng phải lƣu ý khi giải quyết các yêu cầu đặt ra: Cần thiết phải thiết lập một luồng các khách hàng đến siêu thị trong một khoảng thời gian là 1 ca làm việc. Trong khoảng thời gian mô phỏng, cần xác định một đơn vị chung để tiến hàng mô phỏng đƣợc tính bằng giây, do đặc điểm các đơn vị thời gian khác nhau ở mỗi hàng đợi, vì vậy tổng thời gian mô phỏng sẽ là 8x60x60 giây. Thiết lập mô hình mô phỏng và có thể tách chúng thành một số khối (Block) khác nhau nhƣ:
+ Block 1 mô tả các thông tin về các hàm làm việc của siêu thị;
+ Block 2 mô tả các thông tin về lƣợng khách hàng đến mua hàng, xác định số lƣợng hàng đƣợc mua theo hƣớng từ việc các khách hàng lựa chọn xe đẩy hay giỏ hàng.
+ Trong Block 3 sẽ mô tả và tính toán các giá trị thống kê tại các hàng đợi trong việc lấy giỏ hàng;
+ Trong Block 4 sẽ mô tả và tính toán các giá trị thống kê tại các hàng đợi trong việc lấy xe đẩy;
+ Block 5 sẽ mô phỏng các yêu cầu dịch chuyển theo từng trạng thái hệ thống;
+ Trong Block 6 sẽ đƣa ra các số liệu thống kê đối với quầy thu ngân số 1 (quầy thu ngân cho các khách hàng mua nhanh);
+ Block 8 sẽ tính toán và đƣa ra các số liệu dạng bảng về thời gian làm việc của hệ thống và số lƣợng hàng hóa đƣợc mua, giải phóng đối tƣợng mua hàng sau 1 phiên mua hàng;
+ Block 9 mô tả các luồng khách hàng đến tham gia mua hàng;
+ Block 10 mô tả toàn bộ thời gian mua hàng để kiểm soát trong suốt thời gian hệ thống thực hiện mô phỏng.
3.2.4.2 Chương trình bằng ngôn ngữ GPSS để mô phỏng bài toán
; Block 1
RMULT 1187 ; xác định một tập hợp các hệ số nhân tƣơng ứng cho ; bộ sinh số ngẫu nhiên
kassa_2 EQU 2 ; quy định cụ thể số lƣợng các kênh dịch vụ và tƣơng ứng ; với hàng đợi cho họ
kassa_N EQU 5 ; số lƣợng quầy thu ngân là 5.
time_work VARIABLE 8#60#60 ; xác định hệ thống mô phỏng tính bằng giây
n_pokupok VARIABLE (RN1@96+5) ; số lƣợng hàng mua mỗi ngƣời mua từ 5 ;đến 100 món hàng
finance VARIABLE (RN1@3+1)#40+150 ; biến xác định số tiền thanh toán
; Mua sắm
time_system TABLE M1,1000,1000,7 ; tạo ra một bảng đại diện cho
; Một tập hợp các số cho biểu đồ
pokupki TABLE P$kol_pokupok,10,10,10 ; mỗi số nguyên
; Đại diện cho một lớp của các tần số trong biểu đồ n_pokupatel TABLE X$pokupatel,100,50,12
park STORAGE 100 ; năng lực của các bãi đậu xe, số lƣợng xe cho phép telejka STORAGE 100 ; số lƣợng xe đẩy cho phép
korzina STORAGE 50 ; số giỏ
kassir VARIABLE (P$kol_pokupok)#2+90 ; biến quy định cụ thể
; thời gian của nhân viên thu ngân tại ngƣời mua dịch vụ time_mag VARIABLE P$kol_pokupok#60 ; thời gian tìm kiếm hàng của một ngƣời
INITIAL X$pokupatel,0 ; xác định giá trị ban đầu
; giá trị của ai là giá trị đƣợc lƣu trữ trong đầu của sự thay đổi là 0
******************************************
; Block 2
parking TRANSFER Both,,Lost ; nếu bãi xe rảnh thì phục vụ, ngƣợc lại sẽ ;chuyển sang Lost
ENTER park ; Cho xe vào bãi gửi
ADVANCE 60,40 ;ngƣời mua vào siêu thị
SAVEVALUE pokupatel+,1 ;tăng số lƣợng ngƣời mua hàng lên 1
ASSIGN kol_pokupok,V$n_pokupok ;gán tham biến cho giá trị số lƣợng hàng ;hóa đƣợc mua
ASSIGN oplata,V$finance ; Gán các tham biến cho việc thanh toán tiền TEST LE P$kol_pokupok,10,Qtelejka ; xác định ngƣời mua hàng bằng xe đẩy
; hay giỏ hàng
GATE SNF korzina,Qtelejka ; kiểm tra số lƣợng còn lại của xe đẩy và giỏ hàng
*******************************************
; Block 3
QUEUE korzina_Q ; Hàng đợi của giỏ hàng
ENTER korzina ; thu thập thông tin về việc sử dụng giỏ hàng DEPART korzina_Q ; giải phóng hàng đợi
ASSIGN tara,korzina ; Gán các tham biến của giỏ hàng
TRANSFER ,magazin ; chuyển các yêu cầu từ thời điểm khách vào siêu thị
*********************************************
; Block 4
Qtelejka QUEUE telejka_Q ; Hàng đợi của xe đẩy
DEPART telejka_Q ; giải thoát hàng đợi
ASSIGN tara,telejka ; Gán các tham biến của xe đẩy
**********************************************
; Block 5
magazin ADVANCE V$time_mag ;Thời gian mua hàng của khách hàng trong ;siêu thị
TEST LE P$kol_pokupok,10,min_och ;xác định hình thức của ngƣời mua hàng COUNT L kassir_0,kassa_2,kassa_n,1,Q ; xác định số lƣợng đối tƣợng
;thỏa mãn các yêu cầu đầu bài TEST E P$kassir_0,0,min_och ; xác định các yêu cầu tiếp theo
**********************************************
; Block 6
QUEUE bistro_q ; Lấy các thông tin thống kê hàng đợi của quầy phục vụ nhanh SEIZE bistro
DEPART bistro_q ; Giải phóng hàng đợi
ADVANCE V$kassir ; Lấy thời gian phục vụ ở quầy phục vụ nhanh RELEASE bistro
LEAVE P$tara ;hoàn thành việc thống kê hàng đợi ở quầy phục vụ nhanh TRANSFER ,fin ; chuyển đối tƣợng đến block FIN
**********************************************
; Block 7
min_och SELECT MIN min_ocher,kassa_2,kassa_n,,Q ; chọn đối tƣợng ;thỏa mãn điều kiện QUEUE P$min_ocher
DEPART P$min_ocher ADVANCE V$kassir RELEASE P$min_ocher LEAVE P$tara ********************************************** ; Block 8
fin TABULATE time_system ; đặt thời gian để mô phỏng
TABULATE pokupki ; Lấy thông tin về số lƣợng hàng hóa đƣợc mua SAVEVALUE pokupatel-,1 ; giảm số lƣợng khách hàng 1 đơn vị
ADVANCE 60,50 ; LEAVE park TERMINATE lost TERMINATE ******************************************** ; Block 9
GENERATE 30,5,,,1 ; Sử dụng hàm phân bố xác suất ; đối với khách mua hàng
TRANSFER ,parking
**********************************************
; Block 10
GENERATE V$time_work ; xác định thời gian mô phỏng của hệ thống TABULATE n_pokupatel ; Lấy thông tin về số lƣợng khách đến siêu thị TERMINATE 1
Kết quả của quá trình mô phỏng:
GPSS World Simulation Report - sieuthi_2.7.1 Sunday, April 12, 2015 16:22:42
START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 28800.000 47 5 3 NAME VALUE BISTRO 10028.000 BISTRO_Q 10027.000 FIN 36.000 FINANCE 10010.000 KASSA_2 2.000 KASSA_N 5.000 KASSIR 10017.000 KASSIR_0 10025.000 KOL_POKUPOK 10020.000 KORZINA 10016.000 KORZINA_Q 10024.000 LOST 42.000 MAGAZIN 18.000 MIN_OCH 29.000 MIN_OCHER 10026.000 N_POKUPATEL 10013.000 N_POKUPOK 10009.000 OPLATA 10021.000 PARK 10014.000 PARKING 1.000 POKUPATEL 10019.000 POKUPKI 10012.000 QTELEJKA 14.000 TARA 10023.000 TELEJKA 10015.000 TELEJKA_Q 10022.000 TIME_MAG 10018.000 TIME_SYSTEM 10011.000 TIME_WORK 10008.000
PARKING 1 TRANSFER 960 0 0 2 ENTER 671 0 0 3 ADVANCE 671 2 0 4 SAVEVALUE 669 0 0 5 ASSIGN 669 0 0 6 ASSIGN 669 0 0 7 TEST 669 0 0 8 GATE 45 0 0 9 QUEUE 45 0 0 10 ENTER 45 0 0 11 DEPART 45 0 0 12 ASSIGN 45 0 0 13 TRANSFER 45 0 0 QTELEJKA 14 QUEUE 624 0 0 15 ENTER 624 0 0 16 DEPART 624 0 0 17 ASSIGN 624 0 0 MAGAZIN 18 ADVANCE 669 65 0 19 TEST 604 0 0 20 COUNT 44 0 0 21 TEST 44 0 0 22 QUEUE 37 0 0 23 SEIZE 37 0 0 24 DEPART 37 0 0 25 ADVANCE 37 0 0 26 RELEASE 37 0 0 27 LEAVE 37 0 0 28 TRANSFER 37 0 0 MIN_OCH 29 SELECT 567 0 0 30 QUEUE 567 27 0 31 SEIZE 540 0 0 32 DEPART 540 0 0 33 ADVANCE 540 4 0 34 RELEASE 536 0 0 35 LEAVE 536 0 0 FIN 36 TABULATE 573 0 0 37 TABULATE 573 0 0 38 SAVEVALUE 573 0 0 39 ADVANCE 573 2 0
40 LEAVE 571 0 0 41 TERMINATE 571 0 0 LOST 42 TERMINATE 289 0 0 43 GENERATE 960 0 0 44 TRANSFER 960 0 0 45 GENERATE 1 0 0 46 TABULATE 1 0 0 47 TERMINATE 1 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY 2 143 0.941 189.538 1 821 0 0 0 6 3 133 0.896 193.969 1 736 0 0 0 7 4 130 0.879 194.695 1 779 0 0 0 7 5 134 0.872 187.480 1 823 0 0 0 7 BISTRO 37 0.135 105.297 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY 2 10 6 149 6 5.718 1105.207 1151.579 0 3 10 7 140 4 5.449 1120.991 1153.962 0 4 10 7 137 3 5.253 1104.265 1128.987 0 5 9 7 141 3 5.031 1027.637 1049.977 0 TELEJKA_Q 1 0 624 624 0.000 0.000 0.000 0 KORZINA_Q 1 0 45 45 0.000 0.000 0.000 0 BISTRO_Q 1 0 37 34 0.006 4.402 54.290 0
STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY PARK 100 0 0 100 671 1 93.710 0.937 0 0 TELEJKA 100 5 0 100 624 1 90.202 0.902 0 0 KORZINA 50 49 0 3 45 1 0.894 0.018 0 0
TABLE MEAN STD.DEV. RANGE RETRY FREQUENCY CUM.% TIME_SYSTEM 4190.597 1979.354 0 - 1000.000 46 8.03 1000.000 - 2000.000 25 12.39 2000.000 - 3000.000 101 30.02 3000.000 - 4000.000 117 50.44 4000.000 - 5000.000 71 62.83 5000.000 - 6000.000 79 76.61 6000.000 - _ 134 100.00
Kết quả mô phỏng cho thấy nhƣ sau:
- Số xe ô tô (khách hàng) đến mua hàng: 960 - Số khách hàng vào đƣợc siêu thi (gửi xe): 671
- Số khách hàng bỏ về: 289
- Số khách hàng vào đƣợc siêu thị nhƣng chƣa mua hàng: 2 - Số khách hàng thực hiện mua hàng: 669 - Số khách hàng mua hàng bằng giỏ hàng: 45 - Số khách hàng mua hàng bằng xe đẩy: 624 - Số khách hàng đã thực hiện thanh toán: 604 - Số khách hàng mua dƣới 10 món hàng: 44 - Số khách hàng đƣợc phục vụ tại quầy thanh toán nhanh: 37 - Số khách hàng thanh toán tại các quầy khác: 567
+ quầy số 2: 149
+ quầy số 3: 140
+ quầy số 4: 137
+ quầy số 5: 141
- Hiệu suất sử dụng của quầy thanh toán nhanh: 0,135 - Hiệu suất sử dụng của quầy số 2: 0,941 - Hiệu suất sử dụng của quầy số 3: 0,896 - Hiệu suất sử dụng của quầy số 4: 0,879 - Hiệu suất sử dụng của quầy số 5: 0,872 - Hiệu suất sử dụng của xe đẩy: 0,902 - Hiệu suất sử dụng của giỏ hàng: 0,018 - Hiệu suất sử dụng bãi đậu xe: 0,937
Nhận xét
Bảng 3.2: So sánh kết quả tính toán theo lý thuyết với tính toán trong GPSS với T = 8 giờ
Tính toán theo lý thuyết
Mô phỏng trong GPSS
Số lƣợng khách hàng (xe ô tô xuất hiện)
đến mua hàng trong 8 giờ 960 960
Số lƣợng khách hàng đƣợc phục vụ 823 669
Qua các kết quả thực nghiệm thu đƣợc cho thấy: Kết quả mô phỏng và tính toán trong GPSS World phù hợp với kết quả tính toán theo lý thuyết. Đồng thời, khi thời gian càng tăng (độ lấy mẫu càng lớn) thì độ chính xác giữa kết quả tính toán lý thuyết và kết quả mô phỏng theo GPSS càng cao. Đây chỉ là các bài toán hệ thống phục vụ đám đông điển hình, việc tính toán bằng công thức toán học không quá phức tạp. Trong thực tế, có rất nhiều hệ thống có mô hình phức tạp hơn; số lƣợng nguồn yêu cầu tăng; số lƣợng kênh phục vụ nhiều hơn; quy luật phục vụ cũng nhƣ thời gian phục vụ theo các quy luật phân bố khác nhau… Khi đó việc sử dụng công cụ tính toán toán học thông thƣờng theo lý thuyết hàng đợi là rất khó khăn. Trong những trƣờng hợp này, việc mô phỏng hệ thống phục vụ đám đông bằng GPSS World là một giải pháp hiệu quả.