[14, 16], (còn gọi là Place/Transition-net, hoặc Petri-net
các hệ thống phân tán. -
-
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.
riển lý thuyết tốn học cho q trình phân tích.
2.2.1. Các khái niệm cơ bản về Petri-net
20
Hình 2.2: Ví dụ về Petri-net
Place Là các vị trí, biểu thị bởi hình trịn, kí hiệu là vị trí P
Transition 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 ơ vng, kí hiệu là trạng thái T
Directed Arc 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
Token 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
Marking 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 thấy rằng: Việc thực thi trong tồn hệ thống Petri-net là một q 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.
21
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ả tố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 Petri- net không tồn tại cực.
Marked-net là tập hợp gồm các yếu tố (S, T, F, k, w, m0)
22 - S, T, F đã định nghĩa ở 2.2.2 - k: S {1, 2, 3,..} {∞} là ánh xạ giới hạn khả năng cục bộ - w: F {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 ) ( ) ( ) ( :k s m0 s k s S 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 tố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ạ M0 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)
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.
23
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ố
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].
24
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ả tốn học Petri-net - Mô phỏng từng bước một
25
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
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.
27
Ngồi ra, trên mơi trường Unix, Linux, việc phát triển công cụ mô phỏng cho Petri-net cũng được tiến hành. Tuy nhiên, các môi trường này không phổ biến như môi trường Windows, nên vấn đề nghiên cứu, ứng dụng cho Petri- net là một vấn đề lâu dài.
Chương này giới thiệu về một số công cụ mô phỏng, ngôn ngữ đặc tả liên quan đến bài toán hàng đợi. Mỗi cơng cụ, ngơn ngữ có những ưu điểm riêng.
Dựa trên đặc tả tốn học của nó, và sử dụng ngơn ngữ lập trình như Java, Matlab, C, C++,.. các nhà phát triển đã tạo ra các công cụ làm việc theo chủ đích của họ. Java sử dụng các Applet linh hoạt trên môi trường Java, Matlab là ngôn ngữ hàng đầu trong nghiên cứu tại các trường học.
Ngôn ngữ GPSS và cơng cụ GPSS World có những ưu điểm riêng biệt giải quyết các bài toán hàng đợi khi chúng làm việc với các Transaction, các Block dựa trên một giải thuật nào đó.
Giới thiệu ngơn ngữ GPSS và công cụ GPSS World, một ngôn ngữ mô phỏng chuyên dụng với các khái niệm và đặc trưng; sự ra đời của ngôn ngữ GPSS; những ưu điểm của ngôn ngữ GPSS; các ứng dụng của công cụ mô phỏng GPSS World.
Các công cụ mô phỏng sử dụng ngôn ngữ đặ -
- - -
- -net.
lập trình Matlab; Ngơn ngữ lập trình Java; Ngơn ngữ lập trình C++ và bộ cơng cụ Visual Studio.net.
28
Chƣơng 3:
NGHIÊN CỨU VỀ NGÔN NGỮ GPSS VÀ CƠNG CỤ GPSS WORLD
Có nhiều ngôn ngữ mô phỏng cũng như các giải thuật có thể được sử dụng để giải quyết bài tốn hệ thống phục vụ đám đơng. Chương này sẽ giới thiệu một trong những ngôn ngữ mô phỏng chuyên dụng: Ngôn ngữ mô phỏng GPSS cùng các khái niệm, định nghĩa, cấu trúc cơ bản của ngôn ngữ GPSS. Đồng thời, đề cập đến công cụ GPSS World [8], một công cụ mạnh được sử dụng trong việc triển khai các thao tác lệnh của ngôn ngữ GPSS.
3.1. Tổng quan về GPSS
Về nguyên tắc, chức năng phức tạp của thuật tốn mơ phỏng có thể được thực hiện bằng các ngơn ngữ lập trình phổ thơng (Pascal, C, ...), các ngơn ngữ này cung cấp khả năng không hạn chế để lập trình, gỡ lỗi và thử nghiệm các mơ hình; Tuy nhiên, nó địi hỏi nỗ lực lớn cho việc xây dựng và lập trình nhiều những thuật tốn mơ phỏng phức tạp, làm việc với danh sách dữ liệu có cấu trúc. Một sự thay thế là sử dụng ngôn ngữ mô phỏng chun dụng.
Ngơn ngữ chun dụng có phương pháp mơ tả, khai báo cấu trúc và quá trình làm việc của hệ thống được mô phỏng, điều này đem lại sự thuận tiện và làm đơn giản hóa việc lập trình modul mơ phỏng, bởi vì các hàm chức năng cơ bản của thuật tốn khi đó được thực hiện một cách tự động. Chương trình mơ phỏng các mơ hình mẫu viết trên ngôn ngữ chuyên dụng gần với mô tả của hệ thống được mô phỏng trong ngôn ngữ tự nhiên, cho phép kể cả những người dùng khơng phải là lập trình viên chun nghiệp xây dựng mơ hình mơ phỏng phức tạp.
GPSS ngôn ngữ mô phỏng sự kiện rời rạc, được Geoffrey Gordon (IBM) [7], phát triển chính thức từ những năm 1960, đã đóng góp nhiều khái niệm
29
quan trọng tới sự phát triển của ngôn ngữ mô phỏng. Với tên khai sinh là GPSS – Gordon’s Programmable Simulation System sau này được đổi tên thành GPSS – General Purpose Simulation System như ngày nay. GPSS World là một biến thể của GPSS/PC, một sự triển khai sớm của GPSS cho máy tính cá nhân. Từ khi được giới thiệu vào năm 1984, GPSS/PC và các phiên bản khác nhau của nó đã thu được hàng nghìn đơla từ hàng triệu người sử dụng trên toàn thế giới. Hiện nay, sự triển khai trên Windows của GPSS World đã mở rộng tiềm năng trong môi trường Internet.
GPSS không dùng bước nhảy theo thời gian mà dựa vào việc tạo ra “giao dịch” – Transactions và sau đó quản lý chúng trong các giai đoạn, Blocks khác nhau. Transaction được theo vết và được đặt trên vùng quản lí khác nhau phụ thuộc vào việc hoặc chúng đã sẵn thực thi ngay (Current Event Chain – CEC) [4], hoặc cần chờ một số sự kiện trong tương lai (Future Event Chain – FEC). Khi tất cả sự kiện hiện thời được xử lí, sau đó thời gian được tăng lên và sự mơ phỏng tiếp diễn qua một tập CEC mới. Ta có thể xem CEC và FEC để thấy vị trí của Transaction bằng cách sử dụng menu: Window > Simulation Snapshot > CEC/FEC Snapshot khi sự mô phỏng đang vận hành.
Điểm mạnh của GPSS World là tính trong suốt. Tính trong suốt được thể hiện bởi ba lí do. Thứ nhất, việc mô phỏng bằng phương pháp “hộp đen” (Black-Box) là thật sự nguy hiểm vì khơng thể quan sát được cơ chế vận hành bên trong. Điều này không chỉ không chắc chắn rằng nó có phù hợp với tình hình thực tại hay khơng mà cịn khó đảm bảo nó sẽ làm việc theo đúng dự kiến. Thứ hai, sự mơ phỏng thành cơng rất có ý nghĩa về mặt giá trị và có thời gian tồn tại kéo dài. Những người mới sẽ dễ dàng nắm bắt được cơ chế vận hành bên trong của hệ thống để từ đó tiếp quản cơng việc. Thứ ba, một trong những thuận lợi của việc mơ phỏng tính tốn hiệu quả nhất nhưng ít được đề cập nhất là sự hiểu biết về hành vi của hệ thống đạt được khi một chuyên viên
30
mơ phỏng có kinh nghiệm có thể nhìn thấy cái động bên trong tại các thời gian quyết định trong mô phỏng.
Ưu điểm của GPSS đối với người sử dụng: - Thao tác nhiều nghiệp vụ khác nhau. - Sử dụng bộ nhớ ảo.
- Tương thích với nhiều hệ điều hành.
- Giao diện đồ họa thân thiện với người dùng. - Dễ dàng hình dung được quy trình của mơ hình.
Với những đặc tính và ưu điểm trên, GPSS có thể được áp dụng trên nhiều lĩnh vực trong thực tế. ng dụng chính của GPSS có thể kể đến như: - 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: Hệ thống bán hàng tự động, hệ thống thanh toán tiền trong siêu thị…
- Một số ứng dụng trong công nghiệp: Ứng dụng trong sản xuất kim loại tự động.
Ví dụ một chương trình GPSS đơn giản:
GENERATE 300,100 ;Create next customer. QUEUE BARBER ;Begin queue time. SEIZE BARBER ;Own or wait for barber. DEPART BARBER ;End queue time.
ADVANCE 400,200 ;Haircut takes a few minutes. RELEASE BARBER ;Haircut done. Give up the barber.
31
Chương trình trên mơ tả một quầy phục vụ cắt tóc. Khách hàng đến quầy theo một khoảng thời gian ngẫu nhiên là 300±100 phút. Thời gian để phục vụ một khách hàng (thời gian cắt tóc) là 400±200 phút.
3.2. Thao tác lệnh của GPSS
Giống như chương trình của bất cứ một ngơn ngữ lập trình nào, chương trình nguồn viết trên ngơn ngữ GPSS bao gồm một chuỗi các thao tác lệnh (Operators) [4-8]. Cấu trúc của thao tác lệnh trên GPSS có dạng sau:
Label BlockType Operands ; Comment
Trong đó:
Label – Nhãn: Thao tác lệnh riêng lẻ trong chương trình có thể có tên
nhãn để tham chiếu đến chúng từ những thao tác lệnh khác. Nếu như trong chương trình khơng có những tham chiếu này thì thành phần nhãn này của câu lệnh khơng nhất thiết phải có.
BlockType – Tên Block (Tên lệnh): Chứa động từ khóa (tên của câu
lệnh) chỉ thị một chức năng hay một hàm cụ thể nào đó mà câu lệnh này sẽ thực hiện. Trường này là trường bắt buộc có đối với một câu lệnh.
Operand – Tốn hạng: Chứa thơng tin cụ thể về việc thực hiện của hàm
được xác định cụ thể trong trường BlockType. Những trường toán hạng này tùy thuộc vào kiểu của hàm hay lệnh mà có thể chứa đến 7 tốn hạng sắp xếp theo một trình tự nhất định và được kí hiệu bởi những chữ cái đầu tiên trong bảng chữ cái latinh A, B, C, D, E, F, G. Tốn hạng này khơng nhất thiết phải thiết lập, việc thiết lập giá trị của chúng có thể theo mặc định và phụ thuộc vào từng lệnh cụ thể.
Comment – Chú thích: Được đặt sau dấu “;” để chú thích cho các dịng
lệnh. Trường này có thể có hoặc khơng. Ví dụ minh họa:
32
SAVEVALUE C1,Q$TELLER1 ;Trace queue at teller1