CHƢƠNG 3 : ỨNG DỤNG TÁC TỬ CHO BÀI TOÁN ĐẶT LỊCH HỌP
3.3.3 Một số kỹ thuật liên quan đến hoạt động của tác tử
a. Sự di chuyển của tác tử
Tác tử sẽ dựa vào danh sách khách mời mà chủ nhân của chúng cung cấp để định ra hành trình cho mình. Hành trình này sẽ đi qua một loạt các tác tử của các khách mời. Mỗi tác tử sẽ đƣợc xác định bởi một địa chỉ cụ thể.
Trong trƣờng hợp tác tử đi từ điểm A đến điểm B rồi đến điểm C, nhƣng đƣờng đi từ B đến C bị tắc nghẽn thì tác tử sẽ quay lại A và tìm đƣờng đi khác.
Thuật toán này đảm bảo tác tử sẽ đi đến đƣợc nhiều khách mời nhất và nếu có trục trặc trong quá trình di chuyển nó sẽ quay đƣợc về máy của chủ nhân của nó.
b. Giao tiếp của tác tử:
Một tác tử có thể gọi đƣợc các phƣơng thức của tác tử khác. Ta có thể hiểu các phƣơng thức của các tác tử giống nhƣ các hàm, các thủ tục của các đối tƣợng. Tuy nhiên việc giao tiếp này phải thông qua một Proxy của bên đƣợc gọi.
c. Thuật toán tìm thời điểm cho cuộc họp của tác tử
Trên mỗi máy cơ sở dữ liệu về các cuộc họp của thành viên tại máy đó sẽ đƣợc lƣu thành từng bản ghi, mỗi bản ghi sẽ lƣu trữ ngày, khoảng thời gian mà thành viên tại máy này bận công việc, nội dung công việc. Tuy nhiên khi một tác tử di chuyển đến các máy của các thành viên này để lấy thông tin, thì tác tử của khách tại máy đó chỉ cung cấp các thông tin: ngày và khoảng thời gian mà thành viên này bận công việc mà không cung cấp nội dung công việc của thành viên đó.
Tác tử đi thu thập thông tin lịch biểu sẽ sử dụng một mảng hai chiều để lƣu trữ các thông tin về thời gian trên lịch biểu của khách. Một chiều dùng để lƣu trữ ngày và một chiều để lƣu trữ các khe thời gian. Mỗi ngày sẽ có một khe thời gian tƣơng ứng từ 0 đến 23, tƣơng ứng với 24 giờ của một ngày. Mỗi khe thời gian ban đầu khởi tạo giá trị là 0 tƣơng ứng với việc không có ai bận việc. Khi có yêu cầu tác tử của khách tại máy đó sẽ cung cấp các thông tin về ngày giờ trong lịch biểu của chủ nhân của nó và gửi cho tác tử tổ chức cuộc họp. Tác tử tổ chức cuộc họp sẽ duyệt lần lƣợt các bản ghi, kiểm tra ngày trong các bản ghi đó xem ngày đó đã tồn tại trong mảng danh sách ngày mà nó quản lý chƣa. Nếu đã có thì nó chỉ việc cập nhật lại giá trị cho khe thời gian tƣơng ứng bằng cách tăng thêm một đơn vị. Nếu ngày của bản ghi đó chƣa có trong danh sách ngày mà tác tử đó quản lý thì nó sẽ bổ xung thêm ngày đó vào danh sách ngày và cập nhật lại khe thời gian tƣơng ứng của ngày đó.
Sau khi đi qua tất cả danh sách các thành viên đƣợc mời, tác tử tổ chức cuộc họp sẽ mang về cho chủ nhân của nó một danh sách thời gian mà các thành viên của cuộc họp bận công việc. Dựa trên danh sách này, và điều kiện ràng buộc của cuộc họp ngƣời mời họp sẽ đƣa ra quyết định thời gian cho cuộc họp và cử tác tử đi mời họp thông báo lại cho các thành viên cuộc họp.
Ví dụ:
Dƣới đây là một ví dụ về dữ liệu lịch biểu của một khách và mảng hai chiều tƣơng ứng của tác tử tổ chức cuộc họp sau khi cập nhật thông tin từ lịch biểu.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1/1/2010 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 10/1/2010 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21/1/2010 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23/1/2010 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Trong hình vẽ 3.6, bảng a. mô tả ví dụ về một lịch biểu của một khách mời, bảng b. mô tả mảng thời gian mà tác tử đi mời họp cập nhật từ lịch biểu của khách mời này.
Lịch biểu ví dụ trong bảng a. có nghĩa là: khách mời này bận vào các thời điểm: ngày 1/1/2010 từ lúc 8h đến 9h bận công việc A, ngày 1/1/2010 vào lúc 10h đến 11h bận công việc B,…
Khi tác tử đi mời họp đi đến máy tính của khách mời này chúng sẽ nhận đƣợc các thông tin về ngày giờ bận công việc của khách mời này do tác tử của khách mời này cung cấp và sẽ tiến hành cập nhật vào mảng dữ liệu của mình nhƣ bảng b.
Trong mảng này các phần tử a[i,0] dùng để lƣu trữ ngày bận công việc của các khách mời, trong ví dụ trên a[0,0] = “1/1/2010”, a[1,0]=”10/1/2010”, a[2,0]=”21/1/2010”, a[3,0]=”23/1/2010”. Các phần tử a[i,j] (j=1,2,3,…24) dùng
Ngày Giờ Công việc
1/1/2010 8h-9h A 1/1/2010 10h-11h B 1/1/2010 15h-17h C 10/1/2010 8h-9h D 21/1/2010 9h-10h F 23/1/2010 15h-16h G
a. Lịch biểu của khách mời
b. Mảng thời gian a[i,j] của tác tử đi mời họp
để lƣu trữ khoảng thời gian mà khách mời bận trong ngày tƣơng ứng. Trong ví dụ trên ngày 1/1/2010 khách mời này bận từ 8h đến 9h nên a[0,9]=1, từ 10h đến 11h nên a[0,11]=1, từ 15h đến l6h nên a[0,15]=1, từ 16h đến 17h nên a[0,17]=1, … Nếu cùng một thời điểm nào đó trong cùng một ngày có n khách mời bận thì tác tử sẽ gán giá trị của phần tử mảng tƣơng ứng là n.
Dựa trên mảng giá trị này và điều kiện ràng buộc của cuộc họp mà tác tử tổ chức cuộc họp sẽ đƣa ra cho chủ nhân của nó các thời điểm thích hợp cho cuộc họp.
Kết luận
Nhƣ vậy qua việc phân tích các giải pháp ứng dụng công nghệ tác tử cho bài toán đặt lịch họp ta nhận thấy việc ứng dụng công nghệ tác tử trong việc xử lý phân tán có nhiều ƣu điểm nổi bật so với các công nghệ xử lý tập trung. Chúng đã giải quyết đƣợc hầu hết các vấn đề khó khăn mà các công nghệ truyền thống không giải quyết đƣợc.