1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lớn môn học chuyên đề công nghệ AgentBài tập lơn môn học chuyên đề công nghệ Agent

22 1,1K 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 210 KB

Nội dung

Luận Văn: Bài tập lớn môn học chuyên đề công nghệ Agent

Trang 2

agent trong OAA biểu diễn sự tương tác dưới dạng những điều nó cần cho mộtagent đặc biệt khác (facilitator agent) Agent này sẽ phối hợp sự hoạt động củacộng đồng agent để hoàn thành công việc, cung cấp các dịch vụ như xử lý songsong failure handling và phát hiện xung đột và các client agent không phải quantâm tới các vần đề đó nữa.

2 Mục đích của việc thiết kế mô hình OAA

Ngày nay, kỹ thuật lập trình dựa trên agent (agent-based programming) đãđược nhắc đến nhiều trong các thuật ngữ kĩ thuật Trong môi trường OAA, cácagent hoạt động một cách độc lập và phối hợp với nhau trong một hệ thống mạngphân tán bởi vì chúng được lập trình trên các ngôn ngữ bậc cao, do đó chúng cókhả năng hoạt động và tính toán một cách độc lập

Mục tiêu và các khái niệm về OAA đã được nói đến một cách chi tiết, nên dướiđây, ta sẽ chỉ đề cập một cách ngắn gọn về các khái niệm này:

2.1 Khả năng phối hợp cùng hoạt động

OAA tập trung vào ý tưởng rằng một cộng đồng agent cùng tham gia vàogiải quyết một công việc chung Mặc dù có thể thiết kế chỉ một agent để giải quyếttất cả mọi công việc nhưng sẽ chuyên nghiệp hơn nếu như ta thiết kế những agent“chuyên gia” (expert agent) và mỗi agent đảm nhận một công việc khác nhau.Trong môi trường OAA, phần lớn các yêu cầu của user đều được giải quyết vớinhiều agent Do đó, việc phối hợp hoạt động giữa các agent phải thật tốt, để đảmbảo không có agent nào phải hoạt động quá tải.

2.2 Sự hoạt động phân tán

Cộng đồng các agent rất đa dạng, cho phép các agent có thể chạy trên mọimôi trường khác nhau, được viết bởi các ngôn ngữ khác nhau Môi trường OAA sẽcung cấp một số quy tắc chuẩn để agent có thể hoạt động và liên kết được vớinhau Sự hoạt động phân tán mở khả ra khả năng tính toán song song khi nhiềuagent cùng thực thi các phần khác nhau của một công việc nào đó.

2.3 Sự thích nghi

Khi có các thành viên mới tham gia vào cộng đồng agent, thì hoạt độngtương tác giữa các agent nhìn chung có sự thay đổi Nếu một agent nào đó thamgia vào hoạt động cộng tác, thì sự tương tác giữa các agent phải đủ linh hoạt, mềmdẻo để cho phép agent mới này tham gia hoạt động Kiến trúc “plug & play” cho

Trang 3

phép xây dựng một hệ thống với các agent đã tồn tại từ trước và có thể dễ dàngphát triển các tính năng mới cho các agent cũ hoặc xây dựng các agent mới.

2.4 Truyền thông giữa các agent

Bởi vì con người luôn muốn tham gia vào hệ thống một cách linh hoạt nêncần phải có một ngôn ngữ đủ mạnh, đủ linh hoạt để có thể diễn tả được ngôn ngữtự nhiên Nếu ngôn ngữ ICL (Interagent Communication Language) có thể diễnđạt được một cách đầy đủ ngôn ngữ tự nhiên thì ta hoàn toàn có thể xây dựngđược các câu lệnh, các thủ tục và tương tác.

2.5 Hoạt động và tái hoạt động tính toán

Agent không chỉ là những nguồn dữ liệu thụ động thực hiện các hành độngvà trả lời thông tin theo yêu cầu Các agent có thể giám sát hoạt động của môitrường xung quanh nó và quyết định khi nào thực hiện hành động, thực hiện hànhđộng nào, cảnh báo cho người dùng về các tình huống thích hợp Hơn thế nữa, cácagent có thể theo dõi sự tương tác giữa các agent khác và đưa ra giải pháp để hệthống hoạt động tốt hơn.

2.6 Client Agents

Mỗi agent trong OAA hoặc là facilitator agent hoặc là client agent Client

Agent được gọi là Client vì xét trên một khía cạnh nào đó nó là client của mộtfacilitator nào đó, các facilitator này cung cấp sự đối thoại và các dịch vụ cần thiếtcho các client Khi cần, một client agent thực hiện kết nối tới facilitator – parentfacilitator Với kết nối này, agent khai báo cho parent agent của nó biết các dịch vụmà nó có thể cung cấp Khi một dịch vụ của agent được yêu cầu, facilitator gửiyêu cầu tới agent đó (sử dụng ICL) Agent phân tích yêu cầu, thực hiện nếu có thểvà trả kết quả, báo cáo về cho facilitator Trong quá trình yêu cầu, agent có thểsử dụng một số chức năng được OAA cung cấp.

2.7 Facilitator Agents

Facilitator là một server agent chuyên dụng, chịu trách nhiệm liên kết hoạtđộng, đối thoại giữa các agent đồng thời giải quyết các vấn đề vướng mắc nảysinh Trong nhiều hệ thống, facilitator được dùng để cung cấp các dữ liệu toàn cụccho các client agents, nó cho phép các agent client có thể chấp nhận tương tác qua

cơ chế blackboard.

Facilitator còn duy trì mối quan hệ giữa các agent, thông báo khả năng củacác agent trong hệ thống, sử dụng các thông tin này để trợ giúp cho quá trình yêucầu và cung cấp các dịch vụ trong hệ thống.

Trang 4

Chức năng trung tâm của facilitator là khả năng delegation một cách trong

suốt Có nghĩa là một agent yêu cầu có thể tạo ra các yêu cầu, facilitator có thểhiệu chỉnh yêu cầu mà không cần agent yêu cầu phải biết bất kì thông tin gì về tính

đồng nhất hay vị trí chính xác của agent cung cấp Delegation một cách trong suốt

hoàn toàn có thể thực hiện được vì khả năng của các agent cũng chính là nhữngdịch vụ mà nó cung cấp chứ không phải là việc tích hợp khả năng đó vào thư việnchung

2.8 Truyền thông giữa các agent

Ngôn ngữa ICL (Interagent Communication Language) của OAA chính làngôn ngữ giao tiếp và truyền thông giữa các agents mà không cần biết các agentđó đang chạy trên máy nào, được viết trên ngôn ngữ nào ICL được thiết kế trênnền mở rộng của ngôn ngữ Prolog, kế thừa những ưu điểm, sự hợp lí và thống nhấtcủa Prolog.

Trong ICL có một số từ khoá, một số thành phần đặc biệt sử dụng câu lệnhICL, bao gồm khả năng khai báo biến, sự kiện, yêu cầu dịch vụ, đáp ứng yêu cầu,chia sẻ các thành phần dữ liệu.

2.9 Sự quản lí quyền thực thi

Hiện nay, do sự khác nhau về cơ chế của các ngôn ngữ, của các platformnên việc cài đặt, thực thi hoạt động bằng agent là rất thích hợp Điều này sẽ giảiquyết được rất nhiều rắc rối gặp phải khi khởi động một hệ thống và duy trì cho hệthống hoạt động thông suốt Hệ thống OAA có một trình quản lý việc thực hiện

của các agent (Execution Manager) để quản lí các hoạt động thực thi gọi là

Khi một tập các agent được liên kết hoạt động để cùng thực hiện một số

nhiệm vụ nào đó, Start-It cung cấp khả năng cài đặt mỗi agent trên một platformthích hợp với agent đó Theo các giao thức hoạt động của platform này, chỉ cần

agent có yêu cầu kết nối tới facilitator thì chắc chắn agent đó sẽ hoạt động được.

Một chức năng quan trọng khác của Start-It là giám sát trạng thái của mỗi agent

xem chúng hoạt động có chính xác không? Nếu Start-It phát hiện thấy một agentnào đó hoạt động không đúng, nó sẽ thực hiện một số bước nào đó để phục hồi lỗivà tự khởi động lại agent đó.

3 Cơ sở hạ tầng của Agent

Trong phần này, chúng ta sẽ xem xét và giải thích từng thành phần củaOAA một cách chi tiết, để giúp những người phát triển OAA có được cái nhìn cănbản nhất về sự hoạt động của các thành phần trong OAA.

Trang 5

3.1 Thư viện Agent

Thư viện agent cung cấp những hàm chức năng căn bản nhất cho mọiagent trong OAA, bao gồm cả agent facilitator Thư viện này đã được chuyển sangnhiều ngôn ngữ khác nhau và một phần của thư viện này chính là cơ chế cài đặtcủa mỗi agent Lập trình viên cần phải gọi các hàm được cung cấp trong thư viện,

khai báo các biến, định nghĩa là các hàm callback đã có sẵn trong thư viện Trong

phần này, ta mô tả qua một vài thành phần cơ bản của thư viện agent và một sốcách sử dụng thư viện chung cho mọi agent.

3.2 Giao thức giao vận Agent

Hiện nay, mọi hệ thống dựa trên mô hình OAA đều sử dụng TCP/IP như làmột giao thức vận chuyển TCP được cài trên nhiều hệ điều hành khác nhau nhưUnix, Macintosh, Dos, MS Windows nên việc sử dụng TCP/IP là rất linh hoạt,thuận tiện cho việc tương tác giữa các agent chạy trên các nền khác nhau.

Tuy nhiên, OAA được thiết kế sao cho nó có thể cho phép sử dụng nhiềugiao thức giao vận khác nữa Điều này được cài đặt trong API với một lớp giaovận Lớp giao vận là một lớp riêng, được tải riêng rẽ từ phần còn lại của một số

thủ tục của thư viện Những thủ tục trong lớp giao vận có tên với tiền tố com_.

Mọi việc truyền thông giữa các agent thông qua các thủ tục API này

3.3 Ngôn ngữ ICL

Như đã nói ở trên, trong phần truyền thông giữa các agent, các biểu thức

ICL được sử dụng để khai báo các solvable, sự kiện, yêu cầu sử dụng dịch vụ, đáp

ứng dịch vụ, chia sẻ dữ liệu thành phần.

Một số framework agent được điều khiển bằng lời nói như là FIPA hayKQML, thì ICL còn có cả một lớp giao thức đối thoại Lớp đối thoại của ICL đượcđịnh nghĩa bởi các kiểu sự kiện, kết hợp với danh sách các tham số để tổ chứcthành kiểu các sự kiện Nội dung của lớp này bao gồm cả kết quả trả về, cơ chếkích hoạt, dữ liệu thành phần có thể được nhúng vào các sự kiện khác nhau.

Ta hoàn toàn có thể nhúng thêm nội dung hàm thành phần viết bằng mộtngôn ngữ khác vào các sự kiện của ICL, đây là một ưu điêm rất lớn của ICL Vớicơ chế này, không chỉ cung cấp cho facilitator thêm nhiều thông tin về bản chấtcủa các yêu cầu từ các agent khác mà còn giúp facilitator phân loại các yêu cầu

3.3.1 Khai báo các solvable trong agent

Mỗi agent tham gia vào hệ thống OAA phải khai báo, đưa ra các khả năngcủa nó, các dịch vụ nó có thể cung cấp thông qua ngôn ngữ ICL Điều đó thiết lậpmột giao diện ở mức cao giữa các agent, giao diện này được facilitator sử dụngtrong việc liên kết, truyền thông giữa các agent để đáp ứng các yêu cầu của cácagent khác.

Trang 6

Một yếu tố quan trọng trong khả năng của agent chính là kiểu (type) cungcấp, có thể là khả năng cung cấp thủ tục (procedure solvable), dữ liệu (datasolvable) hoặc cơ chế kích hoạt (trigger) Khả năng cung cấp thủ tục và dữ liệu cóthể được các agent khác sử dụng một cách trực tiếp (thường thì các agent đó sử

dụng khả năng này bằng cách gọi thủ tục oaa_Solve trong thư viện).

Ở mức khái niệm, một solvable cung cấp thủ tục (procedure) thực hiện mộthành động nào đó, còn solvable cung cấp dữ liệu (data) lưu giữ một tập các côngviệc Ví dụ: Ta tạo một agent cho hệ thống mail, thì solvable cung cấp thủ tục là

việc gửi message tới người sử dụng, liệt kê các thông điệp đã được gửi đến theo

một chủ đề nào đó hay hiển thị một thông điệp nào đó lên màn hình, còn solvable

cung cấp dữ liệu tương ứng với mỗi quan hệ đó với cơ sở dữ liệu hiện tại Thườngthì solvable cung cấp dữ liệu được sử dụng để cung cấp kho dữ liệu dùng chung.

Solvable kích hoạt (trigger) không thể truy nhập trực tiếp từ các agent khác,chúng được sử dụng gián tiếp thông qua việc thiết lập bộ kích hoạt công việc (tasktrigger) của chúng Khả năng này là để phục vụ cho các sự kiện xảy ra dưới mộtđiều kiện đặc biệt Ví dụ: một email agent có thể khai báo một khả năng kích hoạtnhằm kiểm tra các thư đến.

Chú ý rằng có rất nhiều kiểu kích hoạt, task trigger chỉ là một kiểu trong đó Một

agent khai báo các khả năng của chúng bằng cách sử dụng oaa_Declare và

oaa_Undeclare trong thư viện

3.3.2 Sự kiện

Việc truyền thông giữa các agent diễn ra dưới dạng các sự kiện, ngay cảhoạt động và cấu trúc của mỗi agent cũng được tổ chức thành kiểu các sự kiện.Trong việc đối thoại giữa các agent, điều đó có thể giúp ích cho việc nhìn nhận cácsự kiện này như là những thông điệp Phần lớn các sự kiện cần thiết cơ bản đều đãcó trong thư viện nên không cần các lập trình viên viết lại, ta có thể xem trong

oaa_Solve và oaa_AddTrigger.

Ví dụ: lời gọi oaa_Solve(Goal, Params) trong một agent A nào đó, kết quả trả vềcó dạng ev_solve(GoalId, Goal, Params) đi từ A tới facilitator và trả về thông điệpcó dạng ev_solved(GoalId, Requestees, Solvers, Goal, Params, Solutions).

Do các sự kiện này đã được tự động xử lí thông suốt, nên các lập trình viên khôngcần quan tấm đến chúng một cách chi tiết nữa

3.3.3 Yêu cầu dịch vụ

Một agent yêu cầu dịch vụ bằng cách gửi mục tiêu cần đạt được của nó tớifacilitator Mỗi yêu cầu có thể có một hay nhiều khả năng giải quyết.

Trang 7

Thư viện OAA cung cấp cho mỗi agent một cơ chế truy nhập đơn thốngnhất để có thể yêu cầu dịch vụ từ các agent khác, xem trong oaa_Solve

oaa_ Solve cung cấp một số các tham số đầu vào khác nhau, các tham số này có

thể được dùng để thay đổi yêu cầu mong muốn từ facilitator, hoặc là yêu cầu dịchvụ từ agent khác Đặc biệt, tham số địa chỉ có phép xác định rõ lời tới một haynhiều agents Các agent có thể sử dụng oaa_Solve một cách cục bộ bằng cách đưavào tham số đầu vào của agent gọi chính địa chỉ của nó.

3.3.4 Dữ liệu thành phần

Dữ liệu thành phần được trả về từ những câu truy vấn yêu cầu dữ liệu.Trong một vài trường hợp, những dữ liệu thành phần này có thể được fullyinstantiated hoặc là partially instantied.

3.3.5 Cơ chế kích hoạt

OAA trigger cung cấp một cơ chế chung cho các agent có thể xác định rõcác điều kiện để một sự kiện có thể xảy ra Mỗi agent có thể cài đặt trigger môtcách cục bộ (trên chính nó) hoặc là từ xa (trên facilitator hoặc một agent đồng cấpnào đó) Trigger được chia làm 4 loại: Communication, data, task và time trigger.

Triggers liên hệ với solvable theo 2 cách: Cách 1, tất cả các trigger đều

được cài đặt như là data solables, khai báo cho mọi agent Cách 2, task trigger yêucầu khai báo một trigger solvable.

3.3.6 Danh sách tham số

Rất nhiều thành phần của thư viện như là solvable, events, procedures nhận danh sách tham số đầu vào làm đối số Ví dụ : khai báo một solvable data vớidanh sách tham số như sau :

[type(data), single_value(true), persistent(true)]

Nhiều tham số có giá trị mặc định Khi ta muốn một tham số có giá trị mặcđịnh thì không cần thiết phải xác định toàn bộ đối số

Một tham số boolean với giá trị true có thể bỏ qua được Ví dụ: danh sáchtham số dưới đây có thể viết như sau:

[type(data), single_value, persistent]

Để lấy giá trị của một tham số từ danh sách các tham số, ta gọi hàm

icl_GetParamValue Ví dụ, trong ngôn ngữ Prolog, có thể lấy giá trị của tham số

như sau:

icl_GetParamValue(from(Requestor), Params)

Trang 8

3.3.7 Tên và địa chỉ của Agent

Mỗi agent có thể có một hay nhiều server connection và một hay nhiềuclient connection Thường thi facilitator duy trì một kết nối đơn, và mỗi clientagent duy trì một kết nối đơn tới facilitator của agent nó.

Mọi agent (bao gồm cả facilitator) đều có tên đại diện, địa chỉ đầy đủ, địachỉ cục bộ với mỗi kết nối mở client và mỗi kết nối mở server Quy cách về địa chỉđầy đủ phụ thuộc vào giao thức giao vận ta sử dụng Nếu sử dụng TCP/IP, ta sẽ

khai báo địa chỉ như sau: addr(tcp(Host, Port ), còn địa chỉ của agent client sẽ ghinhư sau: addr( tcp(Host, Port), LocalID).

3.4 Sự kiện lặp

Mọi hành động của các agent đều có cấu trúc xoay quanh một sự kiện lặp,sự kiện này được khởi tạo khi một agent được gọi (thường thì đó là lời gọi của một

agent tới các hàm thư viện agent oaa_MainLoop) Việc gọi sự kiện lặp là để lặp lại

quá trình kiểm tra các sự kiện trong hàng đợi của agent

3.5 Các thành phần lập trình cơ bản

Trong mỗi agent có một số thành phần lập trình cơ bản dùng để định nghĩa mộtsố quy tắc ứng xử của agent khi tham gia vào OAA, những thông tin cần thiếtđược cung cấp từ thư viện agent sẽ giúp cho agent thực hiện các hành động khácnhau

Declarations of solvables Mỗi agent cung cấp khả, gửi tới facilitator một

danh sách các dịch vụ mà agent đó cung cấp Facilitator sử dụng thông tinnày để đáp ứng lại các yêu cầu cung cấp dịch vụ Các agent đăng kí dịch vụmình cung cấp bằng cách truyền tham số vào oaa_Register Sau khi đăng

kí, agent có thể thay đổi khai báo bằng cách sử dụng oaa_Declare,

oaa_Undeclare, và oaa_Redeclare

Request handlers Với mỗi khả năng giải quyết của theo kiểu gọi hàm,

agent phải cung cấp một thủ tục callback hoặc định nghĩa một sự kiệncallback app_do mặc định.

oaa_SetTimeout(TimeoutDelay) Với việc gọi thủ tục thư viện này, agent có

thể đưa ra thời gian timeout khi chờ đợi sự kiện quay vòng.

app_idle callback Cho phép một agent định nghĩa ra một thủ tục để agent

khác gọi khi không có sự kiện này trong hàng đợi và xảy ra timeout Nếumuốn viết một thủ tụcnhư thế, ta phải điền thêm thông tin vào libarary bằngcách gọi oaa_RegisterCallback oaa_RegisterCallback(app_idle,

ProcedureName)

Trang 9

3.6 Truyền tham số và cách cài đặt

Một số các tham số đầu vào có thể được sử dụng khi yêu cầu lời gọi tớifacilitator, một số tham số đó được sử dụng với các agent client Tham số đầu vàocó thể được truyền đạt bằng một trong 3 cách sau:

on the command line in environment variables in a setup file

Ví dụ: để báo cho client agent (hoặc facilitator) biết rằng nó nên kết nối tới parent

facilitator trên host 'mymachine.ai.sri.com' và cổng 3345, có thể làm một trong

những cách sau:

1 Dùng các tham số dòng lệnh:

fac -oaa_connect "tcp('mymachine.ai.sri.com', 3345)"

2 Thiết lập biến môi trường OAA_CONNECT để chứa xâu sau:

1 Đường dẫn file được cho trên dòng lệnh (hay trong một biến môi trường)

thì sử dụng -setup_file (or SETUP_FILE)

2 setup.pl nằm trong thư mục hiện hành của agent

3 setup.pl nằm trong "home directory" của người dùng chạy agent (trong

UNIX, ~/setup.pl; trong Windows NT, %HOMEDRIVE%%HOMEPATH%\setup.pl; trong Windows 95/98, /setup.pl của ổ đĩa hiện hành).

4 setup.pl trong thư mục gốc ("/" trong UNIX, "C:\" trong Windows)

3.6.2 Các tham số Invocation của Facilitator

Facilitator có thể nhận biết các tham số đầu vào Trong mỗi trường hợp (trừsetup_file), tham số nên được đưa vào từ dòng lệnh, trong biến môi trường hoặc từsetup file.

Trang 10

3.6.3 Các tham số Invocation của Client Agent

Các tham số Invocation của các Client agent như sau:

• setup_file <đường dẫn file>

Các đoạn mã thư viện kiểm tra điều này bất cứ khi nào oaa_ResolveVariables

được gọi.

• -oaa_connect <địa chỉ>

Tham số này chỉ cho agent biết địa chỉ mạng dùng để kết nối tới một facilitator.

Các đoạn mã của thư viện sẽ kiểm tra điều này bất cứ khi nào com_Connect được

#include <stdio.h>#include <string.h>#include <libicl.h>#include <liboaa.h>#include "SysInfor.h"#include <psapi.h>#include <iphlpapi.h>//#include <winnt.h>//#include <winsock2.h>#define IDT_TIMER 1char AgentName[20];

int updatehost_Callback(ICLTerm* goal,ICLTerm* params,ICLTerm* solutions);int setup_oaa_connection(int argc, char *argv[]);

bool UpdateDatabase();

VOID CALLBACK MyTimerProc(

HWND hwnd, // handle of window for timer messages UINT message, // WM_TIMER message

UINT idTimer, // timer identifier

DWORD dwTime); // current system time int main(int argc, char *argv[]) {

UINT nTime=60000; if(argc!=1)

Trang 11

printf("Usage : ExecAgent nTime(s)\n");return EXIT_FAILURE;

UINT uResult;

uResult=SetTimer(NULL, // handle of main window IDT_TIMER, // timer identifier

nTime, // 60-second interval

(TIMERPROC) MyTimerProc); // timer callback if (uResult == 0)

printf("Could not setup OAA connections exiting.\n"); return EXIT_FAILURE;

}

//********************************** UpdateDatabase();

//********************************** //oaa_MainLoop(TRUE);

MSG msg; BOOL bRet;

Ngày đăng: 10/12/2012, 10:45

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w