2.4.1. Dòng sự kiện đầu vào
Trong thực tế chúng ta thƣờng mô phỏng các hệ thống trong đó có dòng sự kiện đầu vào. Ví dụ: Dòng khách hàng chờ quầy tính tiền của siêu thị, dòng các sản phẩm đi đến gia công ở các máy công cụ, dòng tàu biển chở vào bến cảng, dòng ôtô đến trạm sửa chữa... Những sự kiện đầu vào nhƣ vậy là những sự kiện gián đoạn, thời gian xuất hiện và khoảng cách giữa các sự kiện mang tính ngẫu nhiên. Trong nhiều trƣờng hợp ta gọi các sự kiện đầu vào là các khách hàng.
2.4.2. Thời gian phục vụ
Khi có khách hàng đến, hệ thống sẽ phục vụ khách hàng, thời gian phục vụ cũng là một đại lƣợng ngẫu nhiên tuỳ thuộc vào đặc điểm của khách hàng. Ví dụ: Khách hàng mua nhiều hay mua ít hàng mà thời gian tính tiền dài hay ngắn, tuỳ theo ôtô hang nhiều hay ít mà thời gian sửa chữa tại trạm sửa chữa dài hay ngắn.
Trong trƣờng hợp khách hàng đến mà hệ thống đang bận phục vụ khách hàng đến trƣớc đó thì khách hàng mới sẽ xếp hàng để chờ đến lƣợt mình. Nhƣ vậy sẽ xuất hiện hàng đợi trƣớc điểm phục vụ. Hệ thống nhƣ vậy thƣờng gọi là hệ thống hàng đợi.
34
2.4.3. Dòng sự kiện đầu vào Poatxông (Poisson Arrivals)
Dòng sự kiện đầu vào là dòng sự kiện ngẫu nhiên phức tạp. Tuy nhiên trong thực tế có nhiều dòng sự kiện có thể quy về dòng có các tính chất sau:
- Tính chất xảy ra các sự kiện trong quãng thời gian khảo sát đều nhƣ nhau, đó là dòng dừng.
- Các sự kiện xảy ra độc lập với nhau, đó là tính chất không hiệu quả. - Tại mỗi thời điểm chỉ có một sự kiện xảy ra, đó là tính chất sự kiện đơn.
Một dòng sự kiện có ba tính chất nêu trên đƣợc định nghĩa là dòng tối giảng hay còn gọi là dòng Poatxông. Chú ý rằng nếu một dòng sự kiện là một dòng tối ƣu, thì khoảng cách giữa các sự kiện sẽ tuân theo luật phân phối mũ.
Gọi λ - cƣờng độ xuất hiện có nghĩa là số sự kiện xảy ra trên cùng một đơn vị thời gian. Vậy hàm mật độ xác suất của quãng thời gian giữa các sự kiện sẽ là:
f(t) t e . Và hàm phân bố xác suất là: F(t) t e 1 .
Nhƣ vậy, khoảng cách giữa các sự kiện của dòng đầu sẽ tuân theo luật phân phối mũ.
Có thể lựa chọn các luật phân phối mũ khác nhau nhƣ phân bố Gamma, phân bố Weibull. Tuy nhiên phân phối Poatxông và phân phối mũ là hai loại phân phối có công thức tƣơng đối đơn giản mà trong thực tế phù hợp với dòng đầu vào của nhiều hệ thống sản xuất. Vì vậy hai loại phân phố số mũ nêu trên thƣờng đƣợc sử dụng trong mô phỏng các sự kiện gián đoạn trong các hệ thống sản xuất.
2.5. Thiết kế và phân tích thực nghiệm mô phỏng
Sau khi đã xây dựng mô hình mô phỏng và kiểm tra thấy mô hình làm việc tốt chúng ta chuyển sang bƣớc thiết kế thực nghiệm mô phỏng. Thiết kế thực hiện mô phỏng là xác định những điều kiện để thực hiện mô phỏng nhƣ điều kiện khởi động và ngừng mô phỏng, thời gian chạy mô phỏng..., chúng ta cũng phải thiết kế các
35
kịch bản mô phỏng và xác định số lần chạy mô phỏng cho mỗi kịch bản. Thiết kế thực nghiệm mô phỏng có vai trò quan trọng vì nó ảnh hƣởng trực tiếp đến kết quả mô phỏng. Nếu thực nghiệm mô hình không hợp lý, không tối ƣu thì dữ liệu đầu ra của mô phỏng có thể rất nhiều nhƣng chúng ta không thu đƣợc các kết quả mong muốn.
2.6. Số lần chạy mô phỏng và chiều dài mô phỏng
Nhƣ đã trình bày ở các phần trên, trong mô hình mô phỏng có các yếu tố ngẫu nhiên, nên mỗi lần chạy mô phỏng chỉ cho ta một bộ thông số ứng với một điều kiện nhất định. Vì vậy, muốn chạy mô phỏng nhiều lần với chiều dài lớn, tuy nhiên trong thực tế do hạn chế về thời gian,về khả năng tính toán nên số lần chạy mô phỏng không thể lớn đƣợc. Nên khi chạy mô phỏng một số lần với chiều dài mô phỏng lớn tốt hơn là chạy nhiều lần với chiều dài mô phỏng ngắn. Bởi vì mỗi lần chạy mô phỏng phải tốn thời gian nạp điều kiện đầu vào, và nếu chiều dài mô phỏng ngắn không đủ mô tả dáng điệu của hệ thống. Thông thƣờng số lần chạy mô phỏng nằm trong khoảng 10 – 30 lần tuỳ thuộc mức độ phức tạp của hệ thống mô phỏng.
Nhƣ chúng ta đều biết mối một bƣớc mô phỏng chỉ cho ta một bộ giá trị các thông số ứng với điều kiện nhất định. Muốn có giá trị trung bình theo xác suất (kỳ vọng toán) của các thông số mô hình thì số bƣớc mô phỏng phải đủ lớn, tức chiều dài mô phỏng phải đủ dài. Theo kinh nghiệm chiều dài mô phỏng thì rất nhiều bƣớc tính.
Tuỳ thuộc vào mục đích mô phỏng, vào đặc điểm của hệ thống đƣợc mô phỏng mà chọn chiều dài mô phỏng thích hợp, đảm bảo cho các dữ liệu đầu ra ổn định.
2.7. Điều kiện khởi động (Starting Conditions) và ngừng mô phỏng (Stopping Rules) Rules)
a) Điều kiện khởi động tuỳ thuộc vào mục đích mô phỏng. Điều kiện khởi động chung nhất là điều kiện “hệ thống đang còn rỗng” (Emptyandidle) có nghĩa là các sự kiện đầu vào chƣa xảy ra.
36 Có thể chọn một trong ba điều kiện sau đây:
- Nếu mục đích của mô hình là phân tích hành vi của hệ thống ở trạng thái ổn định thì trong quá trình mô phỏng phải bỏ qua thời kỳ quá độ, lúc này điều kiện khởi động chỉ tính từ khi hệ thống bắt đầu ổn định.
- Nếu mục đích của mô hình là phân tích hành vi quá độ của hệ thống thì điều kiện khởi động chính là điều kiện đầu của hệ thống.
b) Điều kiện ngừng mô phỏng đƣợc xác định bởi một trong các điều kiện sau đây tuỳ thuộc vào mục đích mô phỏng:
- Khi thời gian mô phỏng (tổng thời gian giữa các sự kiện) đạt tới giá trị xác định.Trong trƣờng hợp này số sự kiện đầu ra sẽ không xác định trƣớc và trạng thái kết thúc của mô hình có thể không phải là trạng thái rỗng.
- Trong trƣờng hợp này mô hình sẽ đƣợc chạy cho đến khi sự kiện đầu và cuối cùng đi qua và trạng thái kết thúc của mô hình là trạng thái rỗng.
- Số sự kiện đầu ra đạt tới giá trị xác định.Trong trƣờng hợp này trạng thái kết thúc của mô hình có thể không phải là trạng thái rỗng.
- Khi thông số của mô hình đạt tới giá trị xác định.Trong trƣờng hợp này trạng thái kết thúc của mô hình có thể không phải là trạng thái rỗng.
2.8. Cách tạo dòng thời gian mô phỏng.
Trong mô hình mô phỏng cần có một biến để biểu thị thời gian đã trôi qua của quá trình mô phỏng. Gọi biến trong mô hình mô phỏng để tạo ra giá trị thời gian mô phỏng là đồng hồ mô phỏng. Tại thời điểm bắt đầu mô phỏng, đồng hồ mô phỏng đặt thời gian t = 0. Sau đó đồng hồ mô phỏng ghi nhận dòng thời gian và chỉ ra bao nhiêu đơn vị thời gian đã đi qua trong quá trình mô phỏng. Một đơn vị thời gian trong mô phỏng sẽ tƣơng ứng với bao nhiêu thời gian trong hệ thống thực (giây, phút, giờ, tháng, năm...) là do ngƣời lập trình định trƣớc.
37 Có hai loại thời gian mô phỏng:
- Thời gian sự kiện:
Thời gian sự kiện đƣợc tính bằng thời gian để sự kiện kế tiếp xảy ra. Nhƣ vậy thời gian mô phỏng đƣợc tính bằng cách cộng dồn các quãng thời gian giữa các sự kiện xảy ra trong quá trình mô phỏng. Hình 2.3 Cách biểu diễn thời gian sự kiện. Trong đó A1, A2,…là các sự kiện t1, t2…là các thời điểm xảy ra sự kiện tƣơng ứng.
Hình 2.5. Cách biểu diễn thời gian sự kiện
Thời gian sự kiện thƣờng đƣợc dùng trong mô phỏng các sự kiện gián đoạn. Ví dụ mô phỏng hàng đợi, trong đó sự kiện gián đoạn là các khác hàng đến hệ thống để đƣợc phục vụ.
Mỗi lần chạy mô phỏng đồng hồ mô phỏng đƣợc đặt lại giá trị bằng không và bắt đầu tính thời gian mô phỏng cho mỗi lần chạy mô phỏng mới.
- Thời gian cố định:
Trong trƣờng hợp mô phỏng dùng thời gian cố định đồng hồ mô phỏng sẽ tăng lên những quãng thời gian chính xác là Δt. Sau đó sẽ xác định xem trong quãng thời gian Δt có bao nhiêu sự kiện xảy ra, xem là quãng thời gian cần khảo sát ví dụ là hình 2.4.
Hình 2.6. Cách biểu diễn thời gian cố định
Thời gian cố định thƣờng đƣợc dùng trong mô phỏng các hệ thống liên tục, các hệ kinh tế xã hội, trong đó Δt là khoảng thời gian cần khảo sát, ví dụ là một năm kế hoạch, một năm tài chính hay là quãng thời gian cố định nào đó tuỳ thuộc vào mục đích mô phỏng.
38
CHƢƠNG III: GIỚI THIỆU VỀ HỆ THỐNG (PHẦN MỀM) SLAMII VÀ MÔI TRƢỜNG AWESIM
3.1. Tìm hiểu chung về các phần mềm mô phỏng.
Trƣớc khi tiến hành tìm hiểu về SLAM II và AWESIM, chúng ta sẽ đi tìm hiểu và so sánh các hệ thống và ngôn ngữ mô phỏng cơ bản đang đƣợc sử dụng.
Chúng ta phân loại các ngôn ngữ mô phỏng và môi trƣờng mô phỏng cơ bản nhƣ trong bảng dƣới đây:
Bảng 3.1. Phân loại ngôn ngữ mô phỏng và môi trường mô phỏng.
NGÔN NGỮ MÔ PHỎNG Ngôn ngữ chƣơng trình tổng
quát
C,C++,FORTRAN, Pascal, Visual Basic
Ngôn ngữ mô phỏng tổng quát GPSS,GPSS/H,SIMAN,SLAM,Sim Py
Ngôn ngữ thiết kế mô hình tổng quát SIMULA,SIMSCRIPT MÔI TRƢỜNG MÔ PHỎNG Hoạt cảnh 2-D Arena,Extend,Awesim,Visim,Isim Hoạt cảnh 3-D AutoMod,Quest,Arena,Awesim CHƢƠNG TRÌNH MÔ PHỎNG Hệ thống sản xuất Factor,Aim
Mạng lƣới máy tính MOGUL
Chƣơng trình sửa chữa MEDMODEL
39
3.1.1. GPSS.
GPSS: General Purpose Simulation System (Hệ thống mô phỏng mục đích tổng quát) đƣợc viết bởi Gordon năm 1961. “Chƣơng trình mô phỏng GPSS bao gồm một tập hợp các khối và các kết nối giữa chúng.”
Đây là ngôn ngữ hƣớng quá trình có các khối để biểu diễn các quá trình, các hình ảnh mô phỏng chuyển động theo quá trình mô phỏng rất thuận tiện cho việc theo dõi quá trình mô phỏng.
3.1.2. SIMAN/ARENA.
SIMAN/ARENA tạo bởi Rockwell Automation , Inc.
Là một chƣơng trình mô phỏng các vấn đề trên máy tính một các nhanh chóng và chính xác. Khái niệm của SIMAN sẽ gặp một chút vấn đề khi sử dụng, nhƣng một khi đã nắm vững, nó cung cấp một cơ chế mạnh mẽ cho việc xác định mô phỏng.
SIMAN đƣợc sử dụng kết hợp với môi trƣờng ARENA. Để định nghĩa chƣơng trình SIMAN, khối dữ liệu đƣợc định nghĩa và kết hợp nhiều cách khác nhau. Hơn thế SIMAN và SLAMII là những ngôn ngữ mô phỏng, có cùng nguồn gốc.
3.1.3. SIMPY
SimPy (Simulation in Python) là một chủ đề có định hƣớng, SimPy là một đối tƣợng định hƣớng, quy trình dựa trên ngôn ngữ mô phỏng sự kiện rời rạc và trên tiêu chuẩn Python và phát hành dƣới GNU GPL (General Public License).
Trong Simpy, các thành phần đƣợc cung cấp để xây dựng mô hình đƣợc chia làm hai loại: Thành phần hoạt động và các thành phần thụ động.
Các thành phần hoạt động đƣợc bao gồm khách hàng, phƣơng tiện, tài nguyên, vv..
Các thành phần thụ động bao gồm máy chủ, truy cập kiểm tra, đƣờng truyền, vv…Trong Simpy, biến ngẫu nhiên thƣờng đƣợc sử dụng bởi các module Python ngẫu nhiên tiêu chuẩn và nó cũng đã có những ứng dụng lớn.
40
3.1.4. SIMCRIPT
SIMCRIPT: (H.Markowitz et al, Rand Corporation, 1962).
Là một ngôn ngữ mô phỏng với cả hai tính năng khai báo thủ tục, thiết kế cho các sự kiện rời rạc và rời rạc lai, mô hình liên tục.
Các báo cáo trong ngôn ngữ Simcript cho phép xây dựng và viết các chƣơng trình môphỏng, mà chúng dễ dàng để nghiên cứu và hiểu đƣợc.
Trong Simcript, thuộc tính đƣợc định nghĩa trong nhóm của các quá trình đối tƣợng. Dữ liệu trong Simcript đƣợc phân chia thành 2 loại: dữ liệu cơ bản và dữ liệu hỗn hợp.
Kiểu dữ liệu cơ bản về các loại thuộc tính và các loại biến mã thủ tục bao gồm: nguyên, thực, chuỗi và con trỏ. Kiểu dữ liệu tổng hợp bao gồm: mảng, bảng ghi và danh sách.
Tất cả các phần tử dữ liệu trong chƣơng trình Simscript là hệ thống cấp phát bộ nhớ động , nó là hệ thống tự động hoàn toàn.
Simscript thƣờng sử dụng quá trình mô phỏng bởi các sự kiện rời rạc trong khoảng thời gian nhƣ nhau.Trong Simscript, nút dữ liệu đƣợc hiểu nhƣ là nguyên nhân của quá trình đặc biệt, và có thể hiểu nhƣ là thời gian cơ bản hoặc tƣơng thích để mô phỏng sự kiện.
3.1.5. SIMULA
SIMULA (Simula đƣợc viết năm 1962 và đƣợc sử dụng năm 1964).
Simula là một khối cấu trúc ngôn ngữ thủ tục với một số tính năng lập trình hƣớng đối tƣợng. Nó là ngôn ngữ đầu tiên cung cấp kiểu dữ liệu trừu tƣợng. Do vậy nó đƣợc công nhận nhƣ là một phần tử tìm kiếm, đối tƣợng định hƣớng cho máy tính.
Ngôn ngữ Simula là một ngôn ngữ chƣơng trình cao cấp và chức năng đặc biệt. Simula cũng bao gồm kiểu dữ liệu, chuỗi, kiểu kiểm tra, cấu trúc điều khiển cơ bản, dữ liệu đóng kín, dữ liệu kế thừa đơn giản, và đặc biệt có ý nghĩa để mô phỏng rời rạc.
41
3.1.6. SLAMII/Awesim.
SLAMII/Awesim (Simulation Language for Alternative Modeling): Là ngôn ngữ mô phỏng cho mô hình thay thế.
AweSim là một hệ thống mô phỏng hỗ trợ xây dựng mô hình, phân tích các mô hình sử dụng mô phỏng, và trình bày các kết quả mô phỏng. Windows đơn giản hóa các đầu vào của thông tin đồ họa, văn bản và đƣợc sử dụng để nhập vào các mô hình, dữ liệu và thông tin dự án khác.
Trình bày khả năng bao gồm các hình ảnh động để hình dung sự năng động, cơ cấu, và điều khiển logic của một mô hình cũng nhƣ báo cáo và đồ thị để hiển thị các biện pháp định lƣợng mô phỏng hiệu suất từ một hoặc nhiều kịch bản.
AweSim hỗ trợ một cách tiếp cận mô hình lặp đi lặp lại bằng cách cung cấp một môi trƣờng để xác định, phát triển, tinh chỉnh, cập nhật, sửa đổi, và mở rộng mô hình. Các dự án AweSim duy trì thực hiện các nhiệm vụ cần thiết cho mỗi lần lặp. Mô hình hiện có sẵn làm cơ sở cho việc xây dựng các mô hình trong tƣơng lai. AweSim cho phép bạn xây dựng Visual SLAM các mạng tƣơng tác và đồ họa. Dữ liệu ngƣời dùng, cũng nhƣ sự kiện rời rạc và các mô hình liên tục, đƣợc nhập dƣới dạng văn bản. Khởi động kiểm soát thông tin đƣợc nhập về một loạt các hình thức cung cấp các lĩnh vực thúc đẩy và mô tả.
Trong khuôn khổ AweSim, khi bạn yêu cầu các kết quả mô phỏng, thì AweSim sẽ trình bày nó trong một cửa sổ. Nội dung của một cửa sổ có thể đƣợc gửi đến máy để in ra hoặc chuyển vào bản ghi để lƣu lại.
Với những phân tích, đánh giá trên chúng tôi sẽ tập trung vào nghiên cứu và tìm hiểu phần mềm SLAMII và môi trƣờng Awesim. Đồng thời sử dụng phần mềm SLAMII để giải quyết một bài toán cụ thể.
3.2. Giới thiệu về AWESIM.
Awesim là hệ thống đƣợc xây dựng bởi Symix Systems Inc và Pritsker Corporation từ 1990-1999.
AweSim là một hệ thống mô phỏng hỗ trợ xây dựng mô hình, phân tích các mô hình sử dụng mô phỏng, và trình bày các kết quả mô phỏng. Windows đơn giản
42
hóa các đầu vào của thông tin đồ họa, văn bản và đƣợc sử dụng để nhập vào các mô hình, dữ liệu và thông tin dự án khác.
Trình bày khả năng bao gồm các hình ảnh động để hình dung sự năng động, cơ cấu, và điều khiển logic của một mô hình cũng nhƣ báo cáo và đồ thị để hiển thị các biện pháp định lƣợng mô phỏng hiệu suất từ một hoặc nhiều kịch bản.
AweSim hỗ trợ một cách tiếp cận mô hình lặp đi lặp lại bằng cách cung cấp một môi trƣờng để xác định, phát triển, tinh chỉnh, cập nhật, sửa đổi, và mở rộng mô hình. Các dự án AweSim duy trì thực hiện các nhiệm vụ cần thiết cho mỗi lần lặp. Mô hình hiện có sẵn làm cơ sở cho việc xây dựng các mô hình trong tƣơng lai.
3.2.1. Tổng quan về AWESIM.
3.2.1.1. Hỗ trợ cho mô hình hóa VISUAL SLAM .
AweSim hỗ trợ một cách tiếp cận mô hình lặp đi lặp lại bằng cách cung cấp một môi trƣờng để xác định, phát triển, tinh chỉnh, cập nhật, sửa đổi, và mở