Рисунок 2.3 Синхронные и асинхронные коммуникации между агента понимающими KQML.
Интересно, что KQML сообщения могут быть вложенными, т.е. содержанием KQML сообщения может быть другое KQML сообщение. Например, если Агент1 не может общаться напрямую с Агентом2 (но может общаться с Агентом3), Агент1 может попросить Агента3 переслать сообщение Агенту2.
(forward
:from Agent1
:to Agent2
:sender Agent1
:receiver Agent3
:language KQML
:ontology kqml-ontology
:content (tell
:sender Agent1
:receiver Agent2
:language KIF
:ontology Block-World
:content (On (Block A) (Block B))))
В переданном KQML сообщении значение поля :from становиться значением поля :sender поля :content сообщения, значением поля :to в переданном сообщении становиться значением поля :receiver.
Перформативы KQML могут быть организованы в сеть основных категорий:
- базовые перформативы запроса (вычислить, спросить одного, спросить всех, …)
- многоответные перформативы запроса (поток в, поток всем, …)
- перформативы ответа (ответить, извиниться, …)
- основные информационные перформативы (сказать, архивировать, отменить, сказать обратное, разархивировать, …)
- перформативы generator (генератора?) (ожидание, готовность, следующий, отдых, …)
- перформативы определения способностей (объявлять, описывать, наблюдать, …)
- сетевые перформативы (регистрировать, убрать регистрацию, переправить, отправить всем, …)
Перформатив объявить используется отправителем :sender для информирования получателя :receiver о способностях отправителя :sender :
(advertise
:sender Agent2
:receiver Agent1
:language KQML
:ontology kqml-ontology
:content (ask-all
:sender Agent1
:receive Agent2
:in-reply-to id1
:language Prolog
:ontology Block-World
:content “on(X,Y)”))
Теперь Агент1 может запросить Агент2:
(ask-all
:sender Agent1
:receiver Agent2
:in-reply-to id1
:reply-with id2
:language Prolog
:ontology Block-World
:content “on(X,Y)”
Агент2 может ответить с утверждениями соответствующими его базе знаний:
(tell
:sender Agent2
:receiver Agent1
:in-reply-to id2
:language Prolog
:ontology Block-World
:content “[on(a,b), on(c,d)]”
Проблемы:
И отправитель, и получатель должны понимать используемый язык коммуникации агентов; онтология должна быть создана и доступна общающимся агентам.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.