Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse


Скачать 0.66 Mb.
Название Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse
страница 8/12
Тип Лабораторная работа
rykovodstvo.ru > Руководство эксплуатация > Лабораторная работа
1   ...   4   5   6   7   8   9   10   11   12

Выбор сообщений с указанными характеристиками из очереди сообщений


Учитывая, что оба поведения: OfferRequestsServer и PurchaseOrdersServer являются циклическими, метод action() которых начинается с вызова метода myAgent.receive(), можно заметить проблему: как мы можем быть уверены, что поведение OfferRequestsServer выбирает из очереди сообщений только сообщения, в которых содержится запрос о наличии книги, а PurchaseOrdersServer — только сообщения, содержащие заказы на поставку? Для того, чтобы разрешить эту проблему, нужно изменить код, указав соответствующие «шаблоны», когда вызывается метод receive(). Когда шаблон указан, метод receive() возвращает первое сообщение (если оно есть), соответствующее этому шаблону, игнорируя все неподходящие сообщения. Подобные шаблоны реализованы как экземпляры класса jade.lang.acl.MessageTemplate, который предоставляет набор производящих методов, позволяющих просто и гибко создавать шаблоны.

Как было упомянуто в 3.3, мы используем перформатив CFP для сообщений, содержащих запросы на предложение книги, и перформатив ACCEPT_PROPOSAL для сообщений, передающих заказ (согласие с предложением). Поэтому необходимо изменить метод action() класса OfferRequestServer так, чтобы вызов myAgent.receive() игнорировал все сообщения, кроме тех, перформативом которых является CFP.
public void action() {

MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.CFP);

ACLMessage msg = myAgent.receive(); // import jade.lang.acl.ACLMessage;

if (msg != null) {

// Сообщение CFP принято. Обработка.

…………

}

else {

block();

}

}

  1. Сложные коммуникации


Поведение RequestPerformer, упомянутое в главе 2.9.1, представляет собой пример поведения, проводящего «сложную» «беседу». «Беседа», в данном случае — последовательность сообщений, которыми обмениваются два или более агента, с чётко определёнными причинными и временными отношениями. Поведение RequestProposal должно послать CFP-сообщение нескольким агентам (известным агентам-продавцам), получить обратно все ответы и, в случае, если получен хотя бы один ответ типа PROPOSE получен, позже послать сообщение ACCEPT_PROPOSAL (агенту-продавцу, который сделал предложение) и получить обратно ответ. Всякий раз, когда происходит обмен сообщениями, хорошим тоном будет определить управляющие поля в сообщениях, участвующих в обмене. Это позволит легко и недвусмысленно создавать шаблоны, соответствующие возможным ответам.

/**

Внутренний класс RequestPerformer.

Это поведение используется агентами-покупателями книг для отправки запросов

агентам-продавцам данной книги.

*/

private class RequestPerformer extends Behaviour {

private AID bestSeller; // Агент, сделавший лучшее предложение

private int bestPrice; // Цена лучшего предложения

private int repliesCnt = 0; // Количество ответов от агентов-продавцов

private MessageTemplate mt; // Шаблон для получаемых ответов

private int step = 0;

public void action() {

switch (step) {

case 0:

// Послать CFP всем продавцам

ACLMessage cfp = new ACLMessage(ACLMessage.CFP);

for (int i = 0; i < sellerAgents.length; ++i) {

cfp.addReceiver(sellerAgents[i]);

}

cfp.setContent(targetBookTitle);

cfp.setConversationId("book-trade");

cfp.setReplyWith("cfp"+System.currentTimeMillis()); // Уникальное значение

myAgent.send(cfp);

// Подготовка шаблона для получения предложений

mt = MessageTemplate.and(MessageTemplate.MatchConversationId("book-trade"),

MessageTemplate.MatchInReplyTo(cfp.getReplyWith()));

step = 1;

break;

case 1:

// Получение всех предложений/отказов от агентов-продавцов

ACLMessage reply = myAgent.receive(mt);

if (reply != null) {

// Получение ответа

if (reply.getPerformative() == ACLMessage.PROPOSE) {

// Это предложение продавца

int price = Integer.parseInt(reply.getContent());

if (bestSeller == null || price < bestPrice) {

// Это лучшее предоставленное предложение

bestPrice = price;

bestSeller = reply.getSender();

}

}

repliesCnt++;

if (repliesCnt >= sellerAgents.length) {

// Мы получаем все ответы

step = 2;

}

}

else {

block();

}

break;

case 2:

// Отправляем заказ продавцу при условии, что его предложение лучшее

ACLMessage order = new ACLMessage(ACLMessage.ACCEPT_PROPOSAL);

order.addReceiver(bestSeller);

order.setContent(targetBookTitle);

order.setConversationId("book-trade");

order.setReplyWith("order"+System.currentTimeMillis());

myAgent.send(order);

// Подготавливаем шаблон получения ответа на заказ

mt = MessageTemplate.and(MessageTemplate.MatchConversationId("book-trade"),

MessageTemplate.MatchInReplyTo(order.getReplyWith()));

step = 3;

break;

case 3:

// Получение ответа на заказ

reply = myAgent.receive(mt);

if (reply != null) {

// Ответ на заказ получен

if (reply.getPerformative() == ACLMessage.INFORM) {

// Заказ выполнен. Мы можем закругляться

System.out.println(targetBookTitle+" successfully purchased.");

System.out.println("Price = "+bestPrice);

myAgent.doDelete();

}

step = 4;

}

else {

block();

}

break;

}

}

public boolean done() {

return ((step == 2 && bestSeller == null) || step == 4);

}

} // Конец внутреннего класса RequestPerformer
Сложные коммуникации обычно осуществляются следующим хорошо определённым протоколом общения. JADE предоставляет богатый набор средств для реализаций обмена сообщениями по указанным протоколам в пакете jade.protopackage. В частности, обмен сообщениями, который был реализован в примере, придерживается протокола «Contract-net» и может быть легко реализован с помощью класса jade.proto.ContractNetInitiator. Поддержка взаимодействия протоколов выходит за рамки данного руководства. Обратитесь к JADE Programmer's Guide и Javadoc для более детальной информации.
1   ...   4   5   6   7   8   9   10   11   12

Похожие:

Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Лабораторная работа 1 4 лабораторная работа 2 13 лабораторная работа...
Интернете разнообразную информацию – описательную, графическую, картографическую и пр. При разработке сайтов необходимо уметь работать...
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Лабораторная работа №9 59 Лабораторная работа №10 72 Лабораторная...
Рабочая тетрадь для выполнения лабораторных работ по мдк. 03. 01. «Техническое обслуживание и ремонт компьютерных систем и комплексов»...
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Лабораторная работа №2 Разработка цифровой системы фильтрации сигнала. Цель работы
Цель работы: разработка собственной системы обработки сигнала, реализующей ких-фильтрацию, на базе типового аппаратного и программного...
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Методические указания для студентов по выполнению лабораторных работ...
Лабораторная работа 4, 5 Исследование регистров, счетчиков и дешифраторов Лабораторная работа 6, 7 Исследование генератора псевдослучайной...
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Конспект лекций по дисциплине системы обработки экономической информации...
Понятие информационная потребность тесно связано с понятием цели и функции управления. Можно сказать, что потребность в информации...
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Курс лекций Преподаватель Бондаренко А. А. Рыбинск 2001
Типовая информационная технология сбора, передачи, обработки и выдачи информации в централизованных системах обработки данных 17
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Лабораторная работа №10. Изучение принципа действия и функциональной...
Лабораторная работа № Изучение принципов построения системы автоматической подстройки частоты (апч) радиолокационной станции
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Лабораторная работа №1 «Создание общих ресурсов и управление ими»
Лабораторная работа №6-7 «Изучение типов серверов, их настройка и конфигурирование»
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Лабораторная работа №
Лабораторная работа №1. Изучение основных возможностей программного продукта Яндекс. Сервер. Установка окружения, установка и настройка...
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Лабораторная работа №7 «Подготовка и проведение тестирования»
Изучить методы подготовки и проведения тестирования и получить навыки создания и выполнения тестов в среде ms visual Studio для приложений...
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Лабораторная работа №4 Тема: Программирование обработки на станке
Цель: Изучить наладку станка на обработку детали (согласно заданному варианту). Изучить управляющие программы для обработки призматических...
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Элективный курс «Разработка приложений для баз данных в среде объектно-ориентированного...
Гбоу «Губернаторский многопрофильный лицей-интернат для одаренных детей Оренбуржья»
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Самостоятельная работа студентов (срс)
В курсе рассматриваются различные подходы и технологии автоматизированного решения задач кадрового учета, изучаются некоторые распространенные...
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Лабораторная работа №1
Целью работы является изучение технологии построения модели процесса в нотации bpmn 0 с использованием
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Разработка формализованного описания процессов сбора, обработки и...
Данная работа посвящена разработке формализованного описания Банковских процессов средствами uml
Курс: «Технологии обработки информации». Лабораторная работа № Разработка jade агентов, в интегрированной среде eclipse icon Лабораторная работа №27 Лабораторная работа №28 Контрольные работы...
Пм «Сборка монтаж (демонтаж) элементов судовых конструкций, корпусов, устройств и систем металлических судов»

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск