3.4. Block cơ bản trong GPSS
3.4.1. Block làm việc với Transactions
Đối với Transactions có các Blocks để tạo, hủy, lưu giữ lại một thời gian, thay đổi thuộc tính và tạo bản sao của một Transaction.
37
Để tạo ra một Transaction đi vào mơ hình (nói cách khác là để mơ phỏng q trình xuất hiện của các yêu cầu vào hệ thống phục vụ đám đông СМО) sử dụng Block GENERATE - là khối duy nhất mà qua nó Transactions đi vào hệ thống mơ phỏng. Block GENERATE có cú pháp như sau:
Label GENERATE A, B, C, D, E
Tham biến A xác định khoảng thời gian trung bình xuất hiện một Transaction. Nếu như khoảng thời gian này là hằng số thì tham biến B khơng sử dụng, ngược lại sử dụng tham biến B để xác định độ thay đổi của khoảng thời gian này. Giá trị của tham biến B có thể được thiết lập ở dạng thay đổi - khoảng hoặc thay đổi - theo hàm [1]. Nếu như khoảng thời gian xuất hiện Transactions theo quy luật phân bố đều thì sử dụng thay đổi - khoảng, có nghĩa là Transactions xuất hiện sau một khoảng thời gian theo quy luật phân bố đều từ [A-B, A+B]. Nếu như quy luật phân bố khoảng thời gian xuất hiện khơng phải là phân bố đều thì sử dụng thay đổi - theo hàm. Tham biến C xác định thời điểm xuất hiện Transaction đầu tiên. Tham biến D xác định số Transactions mà Block GENERATE sẽ tạo ra và độ ưu tiên của Transaction được thiết lập bởi tham biết E.
Ví dụ:
GENERATE 100,40 ;Tạo Transaction sau mỗi khoảng thời gian ;ngẫu nhiên theo quy luật phân bố đều ;trong khoảng [60;140].
GENERATE (Exponential(1,0,6.5)) ;Tạo một Transaction với phân phối hàm mũ.
Để xóa Transactions khỏi mơ phỏng GPSS (tức là việc mơ phỏng q trình các u cầu đi ra khỏi hệ thống phục vụ СМО) sử dụng Block TERMINATE.
38
Đoạn Codes GPSS được giới hạn bởi cặp Blocks GENERATE - TERMINATE gọi là một Segment.
Ví dụ:
GENERATE 70,20
TERMINATE ;Loại bỏ Transaction từ mơ phỏng. Trong ví dụ trên Transactions đi vào hệ thống thông qua Block GENERATE và cũng ở thời điểm đó bị xóa bỏ ra khỏi hệ thống bởi Block TERMINATE. Tuy nhiên trong hệ thống phục vụ đám đông (СМО) yêu cầu được phục vụ bởi máy phục vụ của hệ thống trong một khoảng thời gian nào đó (thời gian phục vụ) trước khi được đưa ra khỏi hệ thống. Để giữ Transactions lại trong một khoảng thời gian nào đó, tức là mơ phỏng tiến trình phục vụ các yêu cầu, chúng ta sử dụng Block ADVANCE.
Ví dụ:
GENERATE 1 ;Cứ sau mỗi 1 tick thì có 1 “u cầu” - Transaction. ADVANCE 10 ;Thực hiên 10 ticks sau khi chuyển sang Block khác. TERMINATE ;Yêu cầu được kết thúc.
Transaction đầu tiên được tạo bởi một GENERATE Block, bản chất thực sự là được tạo ra trước GENERATE Block và sau đó đi vào GENERATE Block. Từ đó, mỗi lần một Transaction đi vào một GENERATE Block, Transaction tiếp theo được tạo. Transaction kế tiếp này không đi vào GENERATE Block ngay. Thay vào đó, nó được đặt tại Future Events Chain (FEC) theo khoảng thời gian đến được quy định bởi GENERATE Block.
Future Events Chain (FEC) là một danh sách các sự kiện được thực thi chậm hơn so với thời gian mô phỏng hiện thời [13].
Current Events Chain (CEC) là tập các Transaction cái mà vẫn có các Block được đi vào tại thời gian hệ thống hiện thời. Tại một thời điểm,
39
Transaction được lấy từ CEC và đi vào Block có thể. Khi khơng cịn Transaction nào trong CEC, GPSS World sẽ tăng đồng hồ hệ thống.
Để đặt thời gian cho một q trình mơ phỏng GPSS, Block ADVANCE được sử dụng. Cấu trúc một Block ADVANCE có dạng:
ADVANCE A,B Trong đó:
A: Số gia thời gian trung bình (bắt buộc).
B: Tùy chọn thời gian khoảng biến thiên giao độ (không bắt buộc).
Khi một Transaction đi đến Block ADVANCE, nó dừng lại trong khoảng thời gian được thiết lập (khoảng thời gian mô phỏng được thiết lập trong Block ADVANCE) sau đó đi đến Block tiếp theo. Một Block ADVANCE thông qua các tham số sẽ tính tốn được một số gia thời gian và đặt Transaction đi vào trên FEC tương ứng với khoảng thời gian trên.