Professional Documents
Culture Documents
CONTENTS
1 THEORY 3
1.1 Cơ sở lý thuyết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 ASSIGNMENT 10
Question 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
a. Write down states and transitions of the Petri net . . . . . . . . . . . . . . . . . . . . 10
b. Represent it as a transition system assuming that . . . . . . . . . . . . . . . . . . . . 10
i. Each place cannot contain more than one token in any marking . . . . . . . . . 10
ii. Each place may contain any natural number of tokens in any marking . . . . . 10
Question 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
a. Explain the possible meaning of a token in state inside of the net NP a . . . . . . . . . 11
b. Construct the Petri net NP a , assuming that there are five patients in state wait, no
patient in state inside, and one patient is in state done . . . . . . . . . . . . . . . . 12
Question 3 Determine the superimposed (merged) Petri net model N = Ns ⊕ NP a allow-
ing a specialist treating patients, assuming there are four patients are waiting to see the
specialist/doctor, one patient is in state done, and the doctor is in state free. . . . . . . . 12
Question 4 Consider an initial marking M0 = [3.wait, free, done] in the grand net N =
Ns ⊕ NP a . Which markings are reachable from M0 by firing one transition once? Why? . 14
Question 5 Is the superimposed Petri net N deadlock free? Explain properly. . . . . . . . . . 15
Question 6 Propose a similar Petri net with two specialists already for treating patients, with
explicitly explained construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Question 7 Write a computational package to realize (implement) Items 1,2,3 and 4 above. . 17
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 1/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
4 REFERENCES 27
4.1 Các nguồn đã tham khảo trong quá trình làm BTL: . . . . . . . . . . . . . . . . . . . . . 27
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 2/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
CHAPTER 1
THEORY
1.1 Cơ sở lý thuyết
Định nghĩa về Petri Net, transition và place:
• Petri net: là một đồ thị phân đôi có hướng được kí hiệu là N = (P, T, F ) với P là số hữu hạn các
place của đồ thị, T là số transitions, và F là số đường đi có trong đồ thị F ⊆ (T × P ) ∪ (P × T ).
• Transition: (T) là những active nodes của Petri net bởi nó có thể thay đổi được marking nhờ phép
fire.
• Place: (P) là những passive nodes của Petri net bởi vì nó không thể tự thay đổi marking như
transition, place có thể chứa các token nhưng transition thì không thể.
Preset và Postset
• Cho một mạng petri N=(P,T,F), xét tất cả những phần tử thuộc P ∪ T .
• Một node x là node input của node y khi và chỉ khi có một cạnh có hướng từ x đên y thường kí
hiệu là (x, y) ∈ F với F là tập các cạnh. Trong khi đó, node x là node output của node y kí hiệu là
(y, x) ∈ F .
• Với x ∈ P ∪ T , ta có:
• preset: ·x = {y|(y, x) ∈ F }
• postset x· = {y|(x, y) ∈ F }
Khái niệm và quy tắc merge Petri Net:
• Đầu tiên xét 2 mạng Petri với N1 = (P1 , T1 , F1 , M0 ) và N2 = (P2 , T2 , F2 , M0 ) với cùng initial
marking M0 .
Firing rule:
– Điều kiện cần: để một transition được fire nó phải được enable.
– Khi fire thì nó sẽ lấy ở mỗi đầu vào hay mỗi cạnh hướng vào một token và xuất ra một token
ở mỗi cạnh hướng ra khỏi transition đó.
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 3/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
– Biểu thức: (N,M)[t〉 thể hiện transition t được enable tại marking M.
⇒ (N,M)[t〉(N,M1 ): quá trình firing ở transition t được bắt đầu ở marking M và kết thúc tại
M1 .
Enabled Transition: Để có thể được enable thì mọi cạnh hướng vào transition phải có token và
có bao nhiêu cạnh hướng vào thì tại mỗi nơi xuất phát của cạnh đó đều phải có token (hoặc tại
mỗi input place đều phải có token).
Transition System: là hệ thống được biểu diễn dưới dạng TS = {S,A,T} với S là tập các trạng
thái (states), A là tập những hoạt động (activity) và T ⊆ S × A × S là tập các bước chuyển
(transitions).
– S start ⊆ S là set thuộc những states đầu tiền (hay còn được gọi là ‘start’ states), và S end ⊂ S
là set thuộc state cuối cùng (đôi khi còn gọi là ‘accept’ states).
– Tại sao chúng ta lại sử dụng transition systems ? Bởi đây là một phương án để mô hình hóa
trong việc chọn ra những công việc theo một thứ tự và thực thi theo thứ tự đó. Các công việc
thường được thực thi một cách tuần tự, có thể được lựa chọn xảy ra hoặc có thể xảy ra cùng
lúc, và hoàn toàn có thể xảy ra hiện tượng tái thực thi những hoạt động đã được thực thi.
– Những đặc tính của transition system: thường được nghiên cứu nhờ vào cấu trúc cũng như sự
linh động của nó. Một transition system bắt đầu từ initial state, và mọi điểm đến của nó đều
có thể dẫn đến thực thi những hoạt động kéo theo
– Một đường đi (path) được gọi là hoàn thành nếu nó kết thúc tại một trong những final states.
– Một path được gọi là deadlocks khi nó bị mắc kẹt tại những non-final state (là trạng thái
không phải là trạng thái kết thúc và từ đó không tồn tại transition nào để đi đến những trạng
thái khác)
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 4/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
CHAPTER 2
REVIEW & PROBLEM
Problem 5.1 Explain the following terms for Petri nets, and pro-
vide a specific example for each term
− Enabled transition: một transitions được enable khi nó có chứa ít nhất một token ở mỗi input
places
Ví dụ 1:
Xét transition enter: có token ở input places wait và free nên enter là một enabled transition (token
là những chấm đen trong đồ thị trên)
− Firing of a transition : đây là một behaviour của Petri net, điều kiện cần để fire một transition
là nó phải được enable. Ta có thể hiểu một cách nôm na đây là một phép dịch chuyển những chấm
đen trên đồ thị theo một quy luật. Sau khi đã firing xong, thì các token được xếp vào những place
mới , và điều đó dẫn đến sự đa dạng của mạng lưới petri net
Ví dụ 2:
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 5/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
− Nondeterministic choice : là trường hợp mà khi nhiều transition cùng enable tại cùng một thời
điểm , do đó ta không biết chắc được transition nào sẽ fire nhưng chỉ biết được một trong số đó sẽ
được fire.
Ví dụ 5:
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 6/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
Tại thời điểm như ở đồ thị trên t1 và t3 đều có thể enable và có khả năng fire cùng nhau
– preset: p1, p4
– postset: p2
Transition t2
– preset: p2
– postset: p3, p4
Transition t3
– preset: p3, p4
– postset: p4
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 7/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
4. Give all reachable markings. What are the reachable terminal markings?
− Có tất cả 7 reachable marking (bao gồm cả marking khởi động ban đầu):
[1, 0, 2, 1], [0, 1, 1, 1], [0, 0, 2, 2], [0, 0, 2, 1], [0, 0, 2, 1], [0, 0, 2, 0], [0, 1, 1, 0], [1, 0, 2, 0]
− Terminal markings: [0, 0, 2, 0]
− Ta có: [p3, p42 ], [p2, p3, p4], [p32 , p42 ].[p42 ], [p2, p4].
Nếu ta bỏ đi place p1 và các cạnh kề của nó, thì số lượng reachable markings sẽ tăng lên, bởi vì
transition t1 sẽ dễ dàng được enabled và fired hơn so với khi tồn tại place p1, do đó sẽ có nhiều
reachable markings có thể có hơn.
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 8/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
− Ngược lại, khi ta bỏ đi place p3 và các cạnh kề của nó thì số lượng reachable markings sẽ giảm
xuống, do t1 chỉ có thể fired một lần duy nhất (vì chỉ có 1 token ở place p1 ở initial marking, khi
fire thì t1 sẽ tiêu thụ token duy nhất ở đó) và dù t3 có thể được fired nhiều lần (t3 lúc này khi đã
bỏ đi place p3 sẽ dễ dàng enabled và fired hơn so với lúc đầu), thế nhưng các marking sau khi thực
thi là trùng nhau. Do đó, số lượng reachable markings là ít hơn so với ban đầu
1. Write down M0 , P, T of N
Petri net N = (P, T, F ) cho phép sự đồng thời (concurrency), ta có M0 , P, T của Petri net N như sau:
• P = {a, b, c, d, OUT} là tập hợp các places.
2. If not allow concurrency in this process (marked Petri net) then how many
states of the transition system TS can be created? How many transitions
are there?
Nếu không cho phép concurrency trong petri net trên, marking của 1 trạng thái bất kì sẽ có dạng
sau:
[a, b, c, d, out]
Với:
+ a, b, c, d là số token trong Place a, b, c, d, có giá trị tướng ứng trong khoảng [0, 3].
+ out là số token tại Place out có giá trị phụ thuộc vào sự thay đổi về token của a, b, c, d.
− Do out phụ thuộc vào a, b, c, d, nên số cách chọn nó là 1.
− Mỗi a, b, c, d có 4 cách chọn cho mỗi place ứng với [0, 3] nên sẽ có 44 cách chọn [a, b, c, d].
→ Vậy sẽ có 256 reachable marking tương ứng 256 states của transition system.
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 9/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
CHAPTER 3
ASSIGNMENT
Question 1
a. Write down states and transitions of the Petri net
− NS = (P, T, F ) là Petri Net mô hình hóa trạng thái của chuyên gia.
− Các trạng thái (state) của Petri Net NS : P = {f ree, busy, docu}.
− Các transitions của Petri Net NS : T = {start, change, end}
ii. Each place may contain any natural number of tokens in any marking
Ta giả sử initial M0 = [free] = [n,0,0] (với n là số tự nhiên, nghĩa là ở M0 , place free chứa một số
lượng token bất kì)
Các loại marking có thể thu được khi firing:
◦ Có 2 place không chứa token, 1 place chứa n token:
[n,0,0]: chỉ có transition start là enabled ⇒ firing start, ta thu được marking [n-1,1,0]
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 10/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
[0,n,0]: chỉ có transition change là enabled ⇒ firing change, ta thu được marking [0,n-1,1]
[0,0,n]: chỉ có transition end là enabled ⇒ firing end, ta thu được marking [1,0,n-1]
◦ Có 1 place không chứa token, 2 place còn lại đều chứa token, tổng token trong 2 place là n:
[0,a,b]: transition change, end là enabled ⇒ firing change, ta thu được marking [0,a-1,b+1]
⇒ firing end, ta thu được marking [1,a,b-1]
[a,0,b]: transition start, end là enabled ⇒ firing start, ta thu được marking [a-1,1,b] ⇒
firing end, ta thu được marking [a+1,0,b-1]
[a,b,0]: transition start, change là enabled ⇒ firing start, ta thu được marking [a-1,b+1,0]
⇒ firing change, ta thu được marking [a,b-1,1]
◦ Cả 3 place đều chứa token, tổng token trong 3 place là n. [a,b,c]: cả 3 transition start, change,
end đều enabled:
⇒ firing start, ta thu được marking [a-1,b+1,c]
⇒ firing change, ta thu được marking [a,b-1,c+1]
⇒ firing end, ta thu được marking [a+1,b,c-1]
Bổ đề: Transition System tương đương chứa các state tương ứng với tất cả các marking [a,b,c] với
2
a + b + c = n (n ≥ 3 và a,b,c là các số nguyên dương) ⇒ Hệ quả: số state của TS là Cn−1
Chứng minh cho bổ đề : Ta dùng bài toán chia kẹo Euler để chứng minh bổ đề trên. Ta trải n phần
tử thành một hàng ngang. Tiếp theo, ta dùng 2 vách ngăn đặt vào n-1 khe giữa các phần tử để chia
2
nó thành n phần. Như vậy, mỗi phần sẽ có một số lượng phần tử nhất định. Có Cn−1 cách chọn
2
nên số state của TS tương đương với loại marking này là Cn−1 .
Xác định tập TR: tập TR gồm tất cả các bộ ba (Si , transition, Sj ) với Si , Sj lần lượt tương ứng
Mi , Mj mà (N, Mi ) [transition〉 (N, Mi ) theo các trường hợp firing ở trên. Số phần tử của tập TR:
– Mi là loại 1: 3
– Mi là loại 2: 3 × 2 × (n − 1)
2
– Mi là loại 3: 3 × Cn−1
Xây dựng Petri net cụ thể với n=2 (ký hiệu các state là [x,y,z] để dễ hình dung về các marking của
petri net tương ứng )
Question 2
a. Explain the possible meaning of a token in state inside of the net NP a
Ý nghĩa của token trong trạng thái (state) inside trong mạng Petri NP a có thể là phòng khám
bệnh, mỗi token trong NP a sẽ đại diện cho một bệnh nhân đang trong giai đoạn được chuyên gia
điều trị.
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 11/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
Ví dụ: giả sử ở trạng thái “inside” chúng ta đang có 5 tokens, điều đó có ý nghĩa là ở thời điểm đó
có 5 bệnh nhân đang trong giai đoạn được chuyên gia điều trị.
b. Construct the Petri net NP a , assuming that there are five patients in state
wait, no patient in state inside, and one patient is in state done
Mạng Petri NP a = (PP a , TP a , FP a ) được xây dựng với mục đích mô hình hóa trạng thái của các
bệnh nhân. Trong đó:
– PP a = {wait, inside, done}, là tập hợp các places.
– TP a = {start, change}, là tập hợp các transitions.
– FP a = {(wait,start), (start,inside), (inside,change), (change, done)}, là tập các flow relations
(là các mũi tên có hướng).
Mạng Petri NP a trên (giả sử có 5 bệnh nhân ở trạng thái chờ (wait), không có bệnh nhân nào đang
được điều trị (inside), và có 1 bệnh nhân đã được điều trị xong (done)) được xây dựng như sau:
• NP a
• N = NS ⊕ NP a
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 12/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
• Kí hiệu:
– NS = (PS , TS , FS , M0S )
– NP a = (PP a , TP a , FP a , M0P a )
– N = NS ⊕ NP a = (P, T, F, M0 )
• Xác định P: Tập places PNs của Ns và tập places PNP a của NP a disjoint ⇒ P = PNs ∪ PNP a =
{free, busy, docu, wait, inside, done}
• Xác định T:
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 13/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
• Firing start
– preset của start = {free, wait}
– postset của start = {busy, inside}
Ta thấy free có 1 token, wait có 3 token ⇒ start enabled. Khi firing, 1 token trong mỗi input
được tiêu thụ và 1 token được đưa vào trong mỗi output của transitions.
⇒ Sau khi firing start ⇒ free không còn token, wait còn 2 token, busy có 1 token và inside có 1
token, done vẫn giữ nguyên 1 token. Giả sử (N, M0 ) [start〉 (N, M1 ) thì M1 = [2.wait, busy,
inside, done]
• Firing change:
– preset của change = {busy, inside}
– postset của change = {docu, done}
⇒ Ta thấy busy và inside ở marking M0 đều không chứa token nào ⇒ change không enabled
nên không thể firing để chuyển sang trạng thái marking khác.
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 14/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
• Firing end:
Trong marking trên, không có trạng thái nào là một enabled transition. Đây là một phản ví dụ cho
câu hỏi này, hay mở rộng hơn là mô hình này không deadlock free khi mà chuyên gia đã khám xong
cho tất cả các bệnh nhân.
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 15/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
− Nhưng giả sử trường hợp đây là hai chuyên gia có chuyên môn không giống nhau và bệnh nhân đến
khám những bệnh cũng không giống nhau. Petri net phía trên chỉ ứng với trường hợp cả hai chuyên
gia luôn luôn có thể chữa mọi loại bệnh cho các bệnh nhân của mình, điều này không thường xuyên
đúng với thực tế. Khi đó ta sẽ vận dụng tới một khái niệm mới gọi là Colored Petri Net (CPN).
− Ta tiến hành gán cho các chuyên gia danh sách các bệnh mà họ có thể chữa theo chuyên môn của
họ và gán cho các bệnh nhân căn bệnh mà họ cần chữa.
− Giả sử ta có 2 chuyên gia: một chuyên gia chuyên trị các bệnh về tai mũi họng, người còn lại chuyên
trị các bệnh về răng hàm mặt, các bệnh thuộc chuyên môn của họ sẽ được gán lần lượt vào list 1
và list 2. Và ta có 4 bệnh nhân đang chờ điều trị các căn bệnh: viêm tai, sâu răng, viêm xoang,
viêm họng.
− Dựa vào những giả thuyết trên ta thành lập được CPN sau:
− Giải thích đôi chút về CPN phía trên: tại transition mới được thêm vào là control, transition này
sẽ đóng vai trò điều khiển, cụ thể nếu căn bệnh của một bệnh nhân bất kỳ ứng với chuyên môn của
chuyên gia đó (khi căn bệnh nằm trong danh sách các bệnh chuyên gia có thể chữa được), ta mới
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 16/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
tiến hành quá trình chữa bệnh nếu không thì quay lại trạng thái chờ đợi ban đầu. Place A được
thêm vào đóng vai trò như một vị trí chuyển tiếp trung gian.
− Ta cũng có thể đơn giản rút gọn CPN phía trên bằng một CPN với các tokens có “color" thực sự:
Nhằm thuận tiện cho việc triển khai Petri net của các bài 1, 2, 3, 4, ta tạo một file header khai báo
các đối tượng sẽ được sử dụng (source file: petri.h và petri.cpp).
• class Pos đại diện các node Place gồm thông số name là tên của place và tokens là số tokens tại
đó:
1 class Pos {
2 public:
3 string name;
4 int tokens;
5
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 17/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
11 return false;
12
13 return true;
14 }
15 int firing() {
16 if (enabledTrans()) {
17 for (auto x : input) {
18 x->tokens--;
19 }
20 for (auto x : output) {
21 x->tokens++;
22 }
23 return 1;
24 }
25 else
26 return 0;
27 }
28 void revertEnergy() {
29 for (auto x : input) {
30 x->tokens++;
31 }
32 for (auto x : output) {
33 x->tokens--;
34 }
35 }
36 };
• class PetriNet đại diện cho toàn cục một Petri net với places là tập hợp các Place, trans là
tập hợp các Transition, dictionaryOfPlaces là một map để xác định được vị trí của places trong
vector bằng tên của place, và các phương thức phục vụ bài 1, 2, 3 ,4:
1 class PetriNet {
2 public:
3 vector<Pos*> places;
4 vector<Trans*> trans;
5 map<string, int> dictionaryOfPlace;
6
7 ~PetriNet() {
8 for (auto x : places) delete x;
9 for (auto x : trans) delete x;
10 places.erase(places.begin(), places.end());
11 trans.erase(trans.begin(), trans.end());
12 }
13
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 18/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
− Đầu tiên ta nhập số tokens của các place f ree, busy, docu:.
1 int doc, busy, docu;
2 do {
3 cout << "Number Of Free Specialists (place free): ";
4 cin >> doc;
5 } while (doc < 0);
6 do {
7 cout << "Number Of Working Specialists (place busy): ";
8 cin >> busy;
9 } while (busy < 0);
10 do {
11 cout << "Number Of Specialists That Are Working On Data (place docu): ";
12 cin >> docu;
13 } while (docu < 0);
14
− Ta khởi tạo Petri net và thêm các places với transition vào Petri net, chương trình sau sẽ in ra các
reachable markings có thể của Petri net Ns :
11 // Mapping Transition
12 vector<string> nameOfTrans {"start", "change", "end"};
13 vector<vector<string>> rawInp {
14 {"free"},
15 {"busy"},
16 {"docu"}
17 };
18 vector<vector<string>> rawOut {
19 {"busy"},
20 {"docu"},
21 {"free"}
22 };
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 19/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
33 delete net;
34
35 return 0;
✓ Output:
Init: [2 1 0]
Sequence: [start]
Marking: [1 2 0]
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 20/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
− Đầu tiên ta nhập số tokens của các place wait, inside, done với ràng buộc số tokens tại place
wait ⩽ 10:
− Ta khởi tạo Petri net và thêm các places với transition vào Petri net, chương trình sau sẽ in ra các
trạng thái marking sau khi lần lượt fire các transition của Petri net NP a :
11 // Mapping Transition
12 vector<string> nameOfTrans {"start", "change"};
13 vector<vector<string>> rawInp {
14 {"wait"},
15 {"inside"}
16 };
17 vector<vector<string>> rawOut {
18 {"inside"},
19 {"done"}
20 };
21 vector<vector<Pos*>> inppos = net->converttoPos(rawInp);
22 vector<vector<Pos*>> outpos = net->converttoPos(rawOut);
23 map<string, int> dictionaryOfTrans;
24
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 21/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
31 delete net;
32
33 return 0;
✓ Input:
Number Of Waiting Patients (place wait): 5
Number Of Patients Being Examined (place inside): 0
Number Of Patients That Are On ICU Beds (place done): 1
✓ Output:
Initializing the Petri net with marking: [5 0 1]
start fired!! =>[4 1 1]
start fired!! =>[3 2 1]
start fired!! =>[2 3 1]
start fired!! =>[1 4 1]
start fired!! =>[0 5 1]
change fired!! =>[0 4 2]
change fired!! =>[0 3 3]
change fired!! =>[0 2 4]
change fired!! =>[0 1 5]
change fired!! =>[0 0 6]
All patients are now being treated on ICU beds!!
− Đầu tiên ta nhập số tokens của các place wait, f ree, inside, busy, docu, done với ràng buộc số tokens
tại place wait ⩽ 10:
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 22/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
− Ta khởi tạo Petri net và thêm các places với transition vào Petri net, chương trình sau sẽ in ra các
trạng thái marking sau khi lần lượt fire các transition của Petri net N :
11 // Mapping Transition
12 vector<string> nameOfTrans {"start", "change", "end"};
13 vector<vector<string>> rawInp {
14 {"wait", "free"},
15 {"busy", "inside"},
16 {"docu"}
17 };
18 vector<vector<string>> rawOut {
19 {"busy", "inside"},
20 {"docu", "done"},
21 {"free"}
22 };
23 vector<vector<Pos*>> inppos = net->converttoPos(rawInp);
24 vector<vector<Pos*>> outpos = net->converttoPos(rawOut);
25 map<string, int> dictionaryOfTrans;
26
33 delete net;
34
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 23/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
35 return 0;
✓ Output:
Initializing the Petri net with marking: [4 1 0 0 0 1]
start fired!! =>[3 0 1 1 0 1]
change fired!! =>[3 0 0 0 1 2]
end fired!! =>[3 1 0 0 0 2]
start fired!! =>[2 0 1 1 0 2]
change fired!! =>[2 0 0 0 1 3]
end fired!! =>[2 1 0 0 0 3]
start fired!! =>[1 0 1 1 0 3]
change fired!! =>[1 0 0 0 1 4]
end fired!! =>[1 1 0 0 0 4]
start fired!! =>[0 0 1 1 0 4]
change fired!! =>[0 0 0 0 1 5]
end fired!! =>[0 1 0 0 0 5]
All patients are now being treated on ICU beds!!
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 24/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
− Ta khởi tạo Petri net và thêm các places với transition vào Petri net, chương trình sau sẽ in ra các
trạng thái marking sau khi lần lượt fire các transition của Petri net N :
1 PetriNet* net = new PetriNet();
2 // Mapping places
3 vector<string> nameOfPlaces {"wait", "free", "busy", "inside", "docu",
,→ "done"};
4 vector<int> tokens { pat, doc, busy, insi, docu,
,→ done};
5 map<string, int> dictionaryOfPlace;
6
11 // Mapping Transition
12 vector<string> nameOfTrans {"start", "change", "end"};
13 vector<vector<string>> rawInp {
14 {"wait", "free"},
15 {"busy", "inside"},
16 {"docu"}
17 };
18 vector<vector<string>> rawOut {
19 {"busy", "inside"},
20 {"docu", "done"},
21 {"free"}
22 };
23 vector<vector<Pos*>> inppos = net->converttoPos(rawInp);
24 vector<vector<Pos*>> outpos = net->converttoPos(rawOut);
25 map<string, int> dictionaryOfTrans;
26
32 net->solveBacktracking();
33
34 delete net;
35
36 return 0;
✓ Output:
Init: [3 1 0 0 0 1]
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 25/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
Sequence: [start]
Marking: [2 0 1 1 0 1]
Sequence: [start, change, end, start, change, end, start, change, end]
Marking: [0 1 0 0 0 4]
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 26/27
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
CHAPTER 4
REFERENCES
4.1 Các nguồn đã tham khảo trong quá trình làm BTL:
1. Man VM. Nguyen, MATHEMATICAL MODELING And RISK ANALYSIS.
2. Giovanni Casu, G. Michele Pinna, “Merging relations: a way to compact Petri nets’ behaviors
uniformly”, Springer, https://core.ac.uk/download/pdf/80194288.pdf, truy cập ngày 20/11/2021.
3. Kurt Jense, “A brief introduction to coloured Petri net”, Springer,
https://link.springer.com/content/pdf/10.1007%252FBFb0035389.pdf, truy cập ngày 20/11/2021.
Báo cáo Bài tập lớn Mô hình hóa toán học (CO2011) - Niên khóa 2021-2022 Trang 27/27