Thuật toán ARA

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Hệ đa agent mở dựa trên mô hình role và tổ chức (Trang 45 - 48)

CHƢƠNG 3 : KỸ THUẬT GÁN ROLE TRONG HỆ ĐA AGENT MỞ

3.3 Thuật toán ARA

Với mô hình tổ chức và mô hình role đã trình bày trong chƣơng 2, thuật toán gán role cho các agent sẽ có những đặc điểm sau:

 Sử dụng role lãnh đạo (đƣợc đảm nhiệm bởi agent trung gian).

 Các thành phần đƣợc đƣợc xem xét khi gán role là: tập yêu cầu khởi đầu và tập các role không tƣơng thích.

 Các agent sẽ gửi yêu cầu đến agent trung gian để yêu cầu đảm nhiệm hoặc huỷ role.

Query: Hỏi xem một role nào đó sẵn sàng hay chƣa.

TakeRole: Muốn đảm nhiệm role

Release: Thông báo muốn huỷ role.

Các yêu cầu huỷ role sẽ đƣợc đáp ứng ngay. Yêu cầu dạng query (hỏi thông tin về role) sẽ đƣợc đáp ứng và dự trữ role tƣơng ứng cho agent đó nếu role đó có thể đƣợc đảm nhiệm.

Khi nhận đƣợc yêu cầu cần đảm nhiệm role (TakeRole), agent quản lý sẽ kiểm tra khả năng của agent đó có thoả mãn tập yêu cầu khởi đầu của role tƣơng ứng hay không. Nếu thoả mãn thì role đó sẽ đƣợc gán cho agent. Tuy nhiên, nếu role mới này không tƣơng thích với các role mà agent đó đang đảm nhiệm thì các hành vi gắn với role đó sẽ bị treo.

Thuật toán dạng giả mã đƣợc mô tả nhƣ trong Hình 3.1. Trong thuật toán này:

Input: Thƣ viện role class của hệ thống (biểu diễn dạng XML) (Ký hiệu R)

Output: Các role đƣợc gán (hoặc không) cho các agent.

 Tập agent trong hệ thống ký hiệu là A[] (mảng các agent).

 Role Leader: Ký hiệu là r*.

Procedure A-R_mapping(){

1. Khởi tạo

CreatManagerAgent(am); CreatOrdinaryAgent(A[]);

2. Tạo các role instance

TakeLeadingRole(am , r*) CreatRoleInstances(am , R );

3. Gán role

For mỗi agent a[i] trong A[] Q = ReceiveRequest(a[i]) If Q=Query(r) Then If Search(r, R) Then Reserve(r); Notify(a[i], r, Found); Else

Notify(a[i], r, NotFound); Else If Q=TakeRole(r) Then If Check_Start_Requirement(a[i], r) Then Assign(a[i], r) If Check_Compatibility(a[i].role, r) Then Suspend(r.Behavior); Else If Q=Realease(r) Then

Deact(a[i], r); End For

UpdateRelationship( A[]);

End

Hình 3.1: Thuật toán gán role cho agent

Giải thích chi tiết các hàm

 CreatManagerAgent(agent): Thực hiện tạo agent quản lý, gán role Manager cho agent này (quản lý tên, địa chỉ các agent khác).

 CreatOrdinaryAgent(agent): Thực hiện tạo các agent thông thƣờng theo yêu cầu từ hệ thống, không gán role.

 TakeLeadingRole(am , r*): Gán role Leader cho agent quản lý (đƣợc phép tạo ra role vfa gán role)

 CreatRoleInstances(am , R ): Agent quản lý nhận thƣ viện role

và tạo ra các thể hiện role.

 ReceiveRequest(a[i]): Nhận yêu cầu từ agent a[i]. Trả về một Request.

 Reserve(r): Dự trữ sẵn role r cho agent vừa gửi yêu cầu dạng Query

 Notify(a[i], r, message): Thông báo cho agent a[i] về tình trạng của role r. Có hai dạng message là: Found và NotFound.

 Assign(a[i], r): Gán role r cho agent a[i], bao gồm việc gán toàn bộ

khả năng C và tập hành vi B.

 Check_Start_Requirement(a[i], r): Kiểm tra điều kiện khởi đầu của agent a[i] với role r. Hàm này trả về giá trị dạng Boolean.

 Check_Compatibility(a[i].role, r): Thực hiện kiểm tra tính

tƣơng thích của role r với các role mà a[i] đã đƣợc gán. Việc kiểm tra này dựa trên danh sách các role không tƣơng thích trong mô tả role. Hàm này trả về giá trị dạng Boolean.

 Suspend(r.Behavior): Tạm dừng các hành vi của agent tƣơng ứng với role r cho đến khi thoả mãn tính tƣơng thích.

 Deact(a[i], r): Huỷ role r ra khỏi agent a[i]

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Hệ đa agent mở dựa trên mô hình role và tổ chức (Trang 45 - 48)

Tải bản đầy đủ (PDF)

(79 trang)