4.3.1. Mô tả thí nghiệm
Thí nghiệm đánh giá độ chính xác của hàm F(N).
Hàm F(N) sẽ được tính theo công thức (10). Thực nghiệm ta đo số tác tử có thông tin về dịch vụ và tới thăm một host xác định. So sánh 2 kết quả ta sẽ rút ra kết luận.
Nguyễn Thị Kim Oanh – K50MTT Trang 40 ĐH Công nghệ - ĐH Quốc Gia HN
Do dịch vụ cũng có tính di động được, nghĩa là nó có thể xuất hiện ở một nút ngẫu nhiên trong mạng rồi di chuyển tới host mới nên nhiệm vụ của các tác tử bây giờ là đi tìm kiếm dịch vụ, cố gắng phát hiện dịch vụ trên 1host nào đấy trong mạng.
Tại mỗi bước lặp ta đếm số lần 1 tác tử nhìn thấy dịch vụ . Tại mỗi host, ta
đếm số lần các tác tử này tới thăm nó. Đồng thời ta cũng đếm số host mà 1 tác tửđã
đi qua trong quá trình di trú.
Ta cũng cho thí nghiệm lặp 100000 lần, sau mỗi 500 lần cho kết quả chương trình kiết xuất ra file text để xử lý.
4.3.2. Thiết lập các tham số liên quan
Trong file Experiment.javađặt:
int num_hosts = 30; int num_agents = 15; int num_service = 3;
và add ngẫu nhiên dịch vụ vào các host.
Xây dựng file ServiceTemplate.java mô tảđối tượng ServiceTemplate. Lớp này thừa kế từ lớp Agent. ServiceTemplate cũng di chuyển ngẫu nhiên trong mạng, nó cũng có thể coi là 1 agent.
Bổ sung một số thuộc tính và thêm một số phương thức cho đối tượng
AgenTemplate như sau:
Host destination; // Host chứa dịch vụ
int count_service = 0; //Số dịch vụ mà tác tử tìm thấy
LinkedList track_back; //Danh sách các host mà tác tửđi qua
Trong hàm khởi tạo AgentTemplate đặt thời gian timeout cho quá trình di trú là 1000.
Thêm phương thức _searchingService() mô tả quá trình tìm kiếm dịch vụ. Phương thức getNumService() trả về số dịch vụ mà tác tử tìm thấy.
Phương thức getNumHost() trả về số lượng host mà tác tửđi qua. Phương thức getDestination() lấy thông tin về host chứa dịch vụ
Nguyễn Thị Kim Oanh – K50MTT Trang 41 ĐH Công nghệ - ĐH Quốc Gia HN
Trong hàm run() mỗi lần tác tử chọn hàng xóm mới để di trú tới, ta add host mới này vào danh sách track_backđể lưu đường đi của tác tử.
Trong file Simulator.java, bố sung 2 thuộc tính
int service_counter = 0;//Đếm số dịch vụ mà tác tử tìm thấy int num_host = 0; //Đếm số host mà tác tửđi qua
Tại mỗi lần lặp, đếm số dịch vụ tìm thấy, số host tác tử đi qua và gán vào các biến trên.
4.3.3. Kết quả thu được và đánh giá
Các số liệu ta thu được gồm có:
- Phân bố dừng ứng với host 0
- Số lượng host mà tác tửđi qua
- Số tác tử tìm thấy dịch vụ và tới thăm host 0
- Xác suất 1 dịch vụ tới thăm host : 3/30
Dùng phân bố dừng và xác suất 1 dịch vụ tới thăm host, số lượng host mà tác tửđi qua lắp vào công thức (10) ta tính F(N)
Ta lại bắt gặp trường hợp như thí nghiệm 1 đó là vấn đề với tham số t. Khi t là số lần lặp và tăng dần từ 500 tới 100000 lần thì F(N) tính theo công thức trên tiến rất gần tới 1, có thể coi bằng 1. Theo như lý giải phần thí nghiệm 1 ta cũng có công thức mới tính xác suất tác tử có thông tin về dịch vụ và tới thăm một host cụ thể như
sau: F(N) = ⎟ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎜ ⎝ ⎛ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ − − λ τ η υ H 1 1
Các số liệu tính toán theo công thức mới và tính theo thực nghiệm cho kết quả
Nguyễn Thị Kim Oanh – K50MTT Trang 42 ĐH Công nghệ - ĐH Quốc Gia HN
Hình 5-Hàm dự đoán F(N) và xác suất tới thăm host của tác tử có thông tin về dịch vụ
Đồ thị cho thấy 2 đường xác suất tác tử có thông tin về dịch vụ tới thăm host và đường dự đoán F(N) theo công thức mới có hình dạng khá tương đồng, giá trị
của chúng cũng rất gần nhau. Có thể thấy hàm F(N) đã dự đoán khá chính xác so với kết quả thực đo được.
Nguyễn Thị Kim Oanh – K50MTT Trang 43 ĐH Công nghệ - ĐH Quốc Gia HN