Tải bản đầy đủ
HIỆN TRẠNG MỘT SỐ CÔNG CỤ MÔ PHỎNG BÀI TOÁN HÀNG ĐỢI

HIỆN TRẠNG MỘT SỐ CÔNG CỤ MÔ PHỎNG BÀI TOÁN HÀNG ĐỢI

Tải bản đầy đủ

16

tham số liên quan khi lập trình. Đồng thời, chúng tích hợp sẵn bên trong
(dạng Built-in) những hàm chức năng thông dụng liên quan đến bài toán mô
phỏng, nhằm giảm thời gian lập trình cho người sử dụng.
2.1.2. Sự ra đời của ngôn ngữ GPSS
Khoảng thập niên 1960, Geoffrey Gordon ở hãng IBM đã phát triển ngôn
ngữ GPSS - Gordon’s Programmable Simulation System, sau này đổi thành
General Purpose Simulation System [4-8, 13], loại ngôn ngữ mô phỏng các sự
kiện rời rạc. GPSS World là một dạng khác của GPSS dành cho máy tính cá
nhân (GPSS/PC - General Purpose Simulation System/Personal Computer).
Công bố năm 1984, GPSS/PC nhanh chóng đạt được thành công lớn,
cũng như đem lại tiết kiệm hàng triệu đô la cho người dùng. Minh chứng cụ thể là
việc khai thác GPSS World trên nền hệ điều hành Windows đã mở rộng khả năng của nó
trong môi trường liên mạng Internet toàn cầu.
Ngôn ngữ mô phỏng GPSS tạo ra các giao dịch (Transaction) và quản lý chúng theo
giai đoạn, hoặc theo các khối (Block). Đây là đặc điểm khác biệt của ngôn ngữ GPSS. Một
Transaction liên quan đến hai khái niệm sau:

- CEC: Current Event Chain - Chuỗi sự kiện hiện tại
- FEC: Future Event Chain

- Chuỗi sự kiện tương lai

Mỗi Transaction được quản lý trên một ô nhớ khác nhau, nó có thể được thực hiện
ngay nếu gặp CEC, hoặc chờ thêm các sự kiện FEC thì sẽ thực hiện. Từ cửa sổ màn hình
lập trình GPSS, chúng ta có thể quan sát được vị trí của các Transaction này thông qua
CEC/FEC.

17

Hình 2.1: Minh họa cửa sổ làm việc của GPSS World
2.1.3. Những ưu điểm của ngôn ngữ GPSS
GPSS World có một ưu điểm là tính trong suốt với các dẫn chứng cụ thể
như sau:

- Đầu tiên, nếu chúng ta mô phỏng theo dạng "hộp đen" (Black-Box), chúng ta không
thể quan sát bên trong hộp này có những thành phần gì, chúng hoạt động ra sao, tương tác
với nhau thế nào. Điều này dẫn đến việc chúng ta không thể kiểm soát được hộp đen ngay
tại thời điểm làm việc, cũng như không thể dự đoán được hành vi của nó trong tương lai.
Đó là điều không ai muốn.

- Thứ hai, chỉ thật sự có lợi cả về mặt mục tiêu cũng như về vấn đề thời gian khi và
chỉ khi chúng ta mô phỏng thành công. Trên cơ sở đó, khi có sự thay đổi nhân lực, những
thành viên mới đến làm việc sẽ hiểu được và tiếp quản được những công việc đã làm, cũng
như phát triển tiếp sau này.

- Thứ ba, một vấn đề nhỏ nhưng có ý nghĩa khi mô phỏng. Đó là làm sao
chúng ta có thể nhận thấy động lực học bên trong (Internal Dynamics) hệ
thống tại thời điểm quyết định khi một người có kinh nghiệm tiến hành mô phỏng.
GPSS World được thiết kế với những điểm mạnh có thể liệt kê như:

- Là ngôn ngữ hướng đối tượng, chạy được trên nhiều nền tảng hệ điều hành khác
nhau như Windows, Linux.

- Hình ảnh hóa các mô hình, từ đó giúp người dùng hiểu rõ, nắm bắt mô hình tốt nhất
có thể, đồng thời sao lưu lại dưới dạng hình ảnh thống kê dễ hiểu.

- Khả năng tương tác của nó giúp người dùng dễ dàng tìm hiểu và vận hành các bài
toán mô phỏng nhờ giao diện thân thiện.

- Tích hợp các cở sở phân tích dữ liệu để tính toán các thành phần trong hệ thống
một cách trực quan.

18

- Là công cụ có thể làm nhiều việc khác nhau tại một thời điểm (Multitask) và hoạt
động trên cơ sở sử dụng bộ nhớ ảo, do đó không tốn kém tài nguyên của máy tính.

2.1.4. Các ứng dụng của công cụ mô phỏng GPSS World
Các ứng dụng chính của công cụ mô phỏng GPSS World có thể kể đến
như:
- Các hệ thống chăm sóc khách hàng như: Call Center, dịch vụ 1080,
1900…
- Giao thông vận tải (phổ biến nhất là mô hình bảo trì máy bay Fleet
trong kĩ thuật hàng không và vận tải công ty).
- Công nghệ mạng: Nghiên cứu đánh giá các vùng dữ liệu mạng.
- Thương mại: Các hệ thống bán hàng tự động, các quầy thanh toán tiền
trong các trung tâm thương mại.
- Thực tế đời sống: Bãi đậu xe ô tô, quản lý bay tại phi trường…
Ví dụ một chương trình GPSS đơn giản:
; GPSS World Sample File - BOOKMRK.GPS
100 *******************************************************
110 *

*

120 *

*

130 *

Telephone System Model

140 *

*

by Gerard F. Cummings

150 *

*
*

160 *******************************************************
170 *

Simple Telephone Simulation

180 *

*

Time Unit is one second

*

200 Sets

STORAGE

2

210 Transit

TABLE

M1,100,100,20

;Transit times

220

GENERATE

100,60

;Calls arrive

230 Again

GATE SNF

Sets,Occupied

;Try for a line

240

ENTER

Sets

;Connect call

250

ADVANCE

180,60

;Speak for 3+/-1 min

19

260

LEAVE

Sets

;Free a line

270

TABULATE

Transit

;Tabulate transit time

280

TERMINATE

1

;Remove a transaction

290 Occupied

ADVANCE

300,60

;Wait 5 minutes

300

TRANSFER

,Again

;Try again

310 *******************************************************

Chương trình mô phỏng hoạt động đơn giản của hệ thống máy điện thoại
(Telephone) với hai đường dây ngoài (External Lines), cuộc gọi từ ngoài vào
xuất hiện với khoảng thời gian 100±60 giây, thời gian của cuộc gọi là 3±1
phút, người gọi sẽ quay số để gọi lại sau khoảng thời gian 5±1 phút. Câu hỏi
đặt ra là hệ thống Telephone trên hoạt động trong bao lâu thì hoàn thành 200
cuộc gọi?
2.2. Các công cụ mô phỏng sử dụng ngôn ngữ đặc tả Petri-net
Mạng Petri [14, 16], (còn gọi là Place/Transition-net, hoặc Petri-net) là
một trong số những ngôn ngữ mô tả toán học về các hệ thống song song và
các hệ thống phân tán. Petri-net được Carl Adam Petri phát minh vào năm
1939. Mục đích của việc phát minh ra Petri-net là để mô tả các quá trình hóa
học.
Petri-net cung cấp các chú thích đồ họa để tiện cho người sử dụng, thiết
lập các lựa chọn, các quy tắc để mô hình hóa sự kiện một cách tốt nhất.
Điểm đặc biệt của mạng Petri là nó có cở sở toán học chính xác để thực
hiện đúng nghĩa với những phát triển lý thuyết toán học cho quá trình phân
tích.
2.2.1. Các khái niệm cơ bản về Petri-net
Petri-net gồm ba thành phần cơ bản: Place, Transition và Directed Arc.

20

Hình 2.2: Ví dụ về Petri-net
Place
Transition
Directed Arc
Token
Marking

Là các vị trí, biểu thị bởi hình tròn, kí hiệu là vị trí P
Là trạng thái và sự nhảy trạng thái, biểu thị bởi hình chữ nhật
hoặc ô vuông, kí hiệu là trạng thái T
Là các đường dẫn trực tiếp liên kết giữa các vị trí P và các
trạng thái T
Là các mã thông báo, nó biểu hiện cho đặc trưng của Place,
biểu thị bởi chấm tròn đen nằm trong Place
Sự phân bố các Token trên các Place

Các đường nối (Arc) sẽ liên kết từ P sang T hoặc ngược lại từ T về P,
không bao giờ được nối Arc giữa T với T, hoặc P với P. Trong hình trên, ta
thấy P1 được coi là Place đầu vào vì nó chứa đường nối nhảy tới trạng thái
T1. Còn P4 được coi là Place đầu ra từ trạng thái T2.
Các Place có chứa một số tự nhiên các mã thông báo (Tokens) nào đó.
Sự sắp xếp, phân bố các Token này trên các Place thì được biết đến với thuật
ngữ là Marking, tức là các mặt nạ.
Một trạng thái trong hệ Petri-net được gọi là Fire (cháy) khi xuất hiện
Token trên toàn bộ các đường dẫn liên kết đầu vào (Arc đầu vào). Chúng ta

21

thấy rằng: Việc thực thi trong toàn hệ thống Petri-net là một quá trình không
thể xác định rõ ràng, khi có rất nhiều trạng thái Transition cùng xảy ra tại một
thời điểm, trong số các Transition đó, tồn tại một số Transition bị cháy.
Vì vậy, Petri-net là một ngôn ngữ mô tả thích hợp khi mô hình hóa thói
quen hoạt động của hệ thống phân tán. Petri-net có ứng dụng trong hệ thống
hàng đợi.
2.2.2. Mô tả toán học về Petri-net
Thuần túy về toán học [14, 16], chúng ta định nghĩa:
S là tập hợp xác định các Place
T là tập hợp xác định các Transition
F là các quan hệ kết nối Flow Relations
Net là một tổ hợp ba yếu tố N = (S, T, F)
Net thỏa mãn các điều kiện sau:
S ∩ T=Ø,S ∪ T≠Ø

S và T rời nhau, hợp của S và T khác rỗng

F ⊆ (S x T) U (T x S)

F là tập con

dom(F) ∪ ran(T) = S ∪ T
Trong đó:
Dom(F) = Là tập hợp các giá trị x thỏa mãn {x ∈ S ∪ T: (x,y) ∈ F,
cho một số giá trị y ∈ S ∪ T}
Ran(F) = Là tập hợp các giá trị y thỏa mãn {y ∈ S ∪ T : (x,y) ∈ F
cho một số giá trị x ∈ S ∪ T}
SN là các thành phần có thuộc tính trong tập hợp S
TN là các thành phần có thuộc tính trong tập hợp T
XN là các thành phần có thuộc tính trong tập hợp S ∪ T
FN là các thành phần có thuộc tính trong tập hợp F
Như vậy, một Petri-net là một đồ thị trực tiếp kết nối tay đôi, trong Petrinet không tồn tại cực.

22

Marked-net là tập hợp gồm các yếu tố (S, T, F, k, w, m0)
Trong đó:
- S, T, F đã định nghĩa ở 2.2.2
- k:

S

- w: F

 {1, 2, 3,..} ∪ {∞} là ánh xạ giới hạn khả năng cục bộ
 {1, 2, 3,..} là hàm trọng lượng

- m0: F  {0, 1, 2, 3,..} là một mặt nạ (marking) thỏa mãn
∀s ∈ S : k ( s ) = ∞ ∨ m0 ( s) ≤ k ( s) , m0 là mặt nạ kích hoạt

2.2.3. Một số thuộc tính của Petri-net
Từ các khái niệm căn bản mô tả trên lý thuyết tập hợp, chúng ta phát
triển mô hình Petri-net với các đặc tính toán học, bao gồm:
- Đặc tính tiếp cận (Reachability)
Mặt nạ Marking M có thuộc tính tiếp cận từ mặt nạ M 0 nếu tồn tại một
chuỗi Firing σ = (M1 t1 , M2 t2 , M3 t3 ,… Mk tk) chuyển dịch từ M0 đến M.
Ví dụ với M = (1,0,1,0) và M0 = (1,1,0,0), chúng ta thấy tồn tại chuỗi
chuyển dịch Firing như hình vẽ:

Hình 2.3: Minh họa tính tiếp cận của Petri-net
- Tính bất tử (Liveness)

23

Bất kỳ mặt nạ Marking nào đó, bất kỳ chuyển dịch Transition nào đó,
chúng đều có thể trở thành đối tượng có khả năng Firing.

Hình 2.4: Minh họa tính bất tử của Petri-net
- Tính không có đường bao giới hạn (Boundedness)
Điều này xảy ra khi một số lượng Token trong bất kỳ Place nào đó không
thể lớn lên một cách không xác định

Hình 2.5: Minh họa tính không có đường bao giới hạn của Petri-net
- Tính bảo thủ (Conservation)
Tổng tất cả các Token trong mạng Petri-net là một hằng số

24

Hình 2.6: Minh họa tính bảo thủ của Petri-net
2.2.4. Một số công cụ sử dụng ngôn ngữ Petri-net
- WoPeD (Workflow Petri-net Designer), là một công cụ dùng để thiết
kế mô phỏng luồng công việc trong thực tế, sử dụng ngôn ngữ mô tả Petri-net.
WoPeD là phần mềm mã nguồn mở [17].
- TAPAAL (Tool for Verification of Timed-Arc Petri-nets), là công cụ
mô hình hóa, mô phỏng chạy trên nền Windows, Linux, Mac, … [18].
2.2.5. Ứng dụng của mạng Petri-net
- Thiết kế phần mềm
- Quản lý luồng công việc
- Phân tích dữ liệu, mô phỏng hoạt động trong thực tế
2.3. Ngôn ngữ lập trình Matlab
Matlab là ngôn ngữ lập trình bậc cao phổ biến hiện nay. Công cụ mô
phỏng Simulink được sử dụng trong rất nhiều ứng dụng nghiên cứu cũng như
thực tế.
Công cụ Netlab, được viết trên nền ngôn ngữ Matlab, dùng để làm việc
với ngôn ngữ đặc tả Petri-net. Công cụ này có một số đặc điểm sau:
- Môi trường hiển thị đồ họa, dễ dàng sử dụng (hình 2.7)
- Phân tích dạng đồ thị và sự thay đổi trên các đồ thị
- Tổng hợp các chức năng phân tích dựa theo đặc tả toán học Petri-net
- Mô phỏng từng bước một

25

Hình 2.7: Minh họa công cụ Netlab tích hợp trên nền tảng Matlab
2.4. Ngôn ngữ lập trình Java
Java là một ngôn ngữ lập trình cũng phổ biến với những tính năng mạnh
hiện nay. Sử dụng môi trường Java, người sử dụng viết các Applet. Hình vẽ là
một ví dụ về việc sử dụng ngôn ngữ lập trình Java viết nên một Applet liên
quan đến ngôn ngữ mô tả Petri-net. Những ưu điểm khi mô phỏng các cấu
trúc Petri-net bằng ngôn ngữ Java:
- Thiết lập giao diện thân thiện người dùng (hình 2.8)
- Mô tả dạng đồ họa các cấu trúc đồ thị hệ thống
- Chạy trên nền Windows hoặc Linux đều được.

26

Hình 2.8: Minh họa Applet: The Petri - Net - Simulator chạy trên nền Java
2.5. Ngôn ngữ lập trình C++ và bộ công cụ Visual Studio.net
Bộ công cụ phát triển Visual Studio của hãng Mircosoft là một bộ công
cụ phổ biến bậc nhất trong thế giới lập trình hiện nay. Sau khi nâng cấp nhiều
lần, đặc biệt với nền tảng .Net Framework, phiên bản mới nhất là version 4.0,
các ứng dụng của chúng ta được thỏa sức phát triển.
Ở đây, xin giới thiệu một công cụ mô phỏng mạng Petri-net được phát
triển trên nền tảng công nghệ .Net của bộ công cụ lập trình Visual Studio, đó
là công cụ YASPER (Yet Another Smart Process EditoR), là kết quả hợp tác
giữa TU Eindhoven và Deloitte [19].
Đây là công cụ dùng để đặc tả và chạy mô phỏng các tiến trình rời rạc, sử
dụng ngôn ngữ đặc tả Petri-net để mô tả chúng. Hình 2.9 giới thiệu mô phỏng
hoạt động thường gặp trong thực tế, đó là các lái xe đỗ xe ở trạm xăng và bơm
xăng vào xe.