Моделирование системы равновероятностных событий с использованием мультиагентной платформы JADE

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    143,83 Кб
  • Опубликовано:
    2016-01-30
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Моделирование системы равновероятностных событий с использованием мультиагентной платформы JADE

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное заведение

высшего профессионального образования

Белгородский Государственный Технологический Университет им В.Г. Шухова

Кафедра программного обеспечения вычислительной техники и автоматизированных систем





КУРСОВАЯ РАБОТА

по дисциплине «Технология построения защищенных автоматизированных систем»

на тему: «Моделирование системы равновероятностных событий с использованием мультиагентной платформы JADE»

Выполнили:

студенты группы

КБ-51

Григорьев А.С.

Панкратов А.В.

Проверил:

Поляков В.М.

Белгород

г.

Содержание

Содержание

Аннотация.

Постановка задачи.

.        Теоретические сведения.

.1      Агентно ориентированный подход.

.2      Мультиагентная платформа JADE.

.        Практическая часть.

.1      Описание работы системы.

.1.1   Master.

.1.2   Player.

.1.3   Apprentice.

.2      Демонстрация работы.

Вывод.

Список литературы.

Приложение.

Листинг программы агента «Master».

Листинг программы агента «Player».

Листинг программы агента «Apprentice».

 

Аннотация


В данной курсовой работе изучается мультиагентная платформа JADE, применение её для моделирования различных систем, а также разрабатывается приложение, моделирующее систему равновероятностных событий, частным случаем которой является игра в «наперстки», для демонстрации возможностей данной платформы. Приложение было разработано совместно Григорьевым А.С. и Панкратовым А.В.

 

Постановка задачи


В ходе выполнения курсовой работы необходимо:

.        Изучить мультиагентную платформу JADE.

.        Разработать приложение, моделирующее систему равновероятностных событий, с использованием мультиагентной платформы JADE.

.        В приложение необходимо использовать агентов, нарушающих принятый порядок работы системы, тем самым показать уязвимости моделируемой системы.

.        Программу реализовать на языке Java.

.       
Теоретические сведения

1.1.   Агентно ориентированный подход

Агентно-ориентированный подход(АОП) - разновидность представления программ, или парадигма программирования, в которой основными концепциями являются понятия агента и поведения. Агент в данном случае понимается как некая программная сущность, которая обладает собственным поведением. Агент представляет собой более сложную, активную и автономную единицу чем объект.

В ООП вычислительный процесс понимается как система, собранная из модулей, которые взаимодействуют друг с другом и имеют собственные способы обработки данных. В свою очередь, АОП уточняет эти рамки, фиксируя активность агентов и изменения их состояний через анализ убеждений, обязательств, намерений и пр. Наличие у агента механизма целеобразования обеспечивает принципиально новый уровень автономии. Агент необязательно выполняет распоряжения какого-либо другого агента или пользователя, а просто зависит от условий среды, включая цели и намерения других агентов. В отличие от объекта, агент может принять на себя определенные обязательства или, наоборот, отказаться от выполнения некоторой работы, мотивируя это отсутствием компетентности, занятостью другой задачей и т. п. В то же время, агент может выполнять такие действия как порождение, подавление и замена других агентов, активизация функций (как своих, так и у других агентов), активизация сценария деятельности, запоминание текущего состояния других агентов и пр. Все это наглядно показывает, что агент, будучи «активным объектом» или «искусственным деятелем», формирующим свое собственное поведение, находится на более высоком уровне сложности по отношению к традиционным объектам в ООП.

Основными свойствами агентов считаются:

·   Автономность - способность выполнять действия самостоятельно.

·   Гомогенность/гетерогенность - способность объединять однородные или разнородные функции

·   Способность к обучению, и «интеллект» - машинное обучение коррекция поведения для улучшения собственной эффективности

·   Активное поведение, постоянный обмен информацией «внутри» агента и между агентом и средой

·   Коммуникативность - обмен данными

·   Восприятие среды - наличие специальных «средств» восприятия среды функционирования агента

·   Мобильность - перемещение агента внутри других программных и физических сред и / или компонентов

Примером АОП можно считать ботов, имитирующих действия игроков в играх, программы в чатах выполняющие роль “собеседника”. Однако некоторые боты выполняют не только роль имитаторов в процессе общения или игры, они используются для редактирования текстовой информации, для наладки сетевых соединений, модерирования ресурсов и т. п.

1.2 Мультиагентная платформа JADE

JADE это прослойка которая используется в разработке мультиагентных систем на языке Java. Она включает:

·   Среда выполнения в которой агенты могут “жить” и которая должна быть запущена на машине, прежде чем один или более агентов смогут быть запущены на этом узле.

·   Библиотека классов, которую программист получает, чтобы разрабатывать его агентов.

·   Набор графических инструментов, который позволяет управлять и наблюдать за деятельностью запущенных агентов.

Приложение, базирующееся на JADE, состоит из набора компонентов, называемых агентами, каждый из которых имеет уникальное имя.

Агент - это программная сущность для выполнения поставленных задач. Обладает поведением, а именно: взаимодействует с внешней сложной и динамично-развивающейся средой, способной модифицироваться или быть модифицированной другими агентами в зависимости от конкретных условий.

Взаимодействие подразумевает:

·   восприятие динамики среды;

·   действия, изменяющие среду;

·   рассуждения в целях интерпретации наблюдаемых явлений, решения задач, вывода заключений и определения действий.

Вычислительная модель агента является многозадачной. В агенте отдельные задачи (или поведения) могут выполняться одновременно. Каждые функциональная возможность и/или сервис, предоставляемый агентом, должны быть реализованы как одно поведение или их набор. Внутренний планировщик, скрытый от разработчика, автоматически управляет планированием поведений.

Такой подход позволяет гибко конфигурировать политики выделения потоков агентам:

·   один поток на всех агентов;

·   жесткое выделение одного потока на агента;

По умолчанию в системе каждому агенту платформы соответствует один поток.

В зависимости от степени свободы среды, подразумевающей наличие в ней соответствующего типа агента, среды подразделяются на:

·   Замкнутые

Конечное детерминированное или вероятностное описание всей среды, которое известно агенту априори или путём исследования.

·   Открытые

Конечное детерминированное или вероятностное описание локальной области среды, в которой находится агент и которое известно ему априори или путём исследования.

·   Трансформируемые

Динамически-развивающиеся среды, развивающей структурой которых является агент.

Агент JADE может находиться в одном из состояний, согласно жизненному циклу агентной платформы:

·   AP_INITIATED - агент создан, но пока не зарегистрирован в AMS, поэтому он не имеет ни имени, ни адреса и не может обмениваться сообщениями с другими агентами.

·   AP_ACTIVE - агент зарегистрирован в AMS, имеет постоянное имя и адрес и может использовать все различные особенности JADE.

·   AP_SUSPENDED - агент в текущий момент времени остановлен. Его внутренний поток приостановлен и не выполняется никакого поведения агента. Все входящие сообщения буферизуются.

·   AP_WAITING - агент блокирован (в ожидании). Его внутренний поток бездействует, и он пробудится при выполнении некоторого условия (например, поступление сообщения).

·   AP_DELETED - агент явно мертв. Внутренний поток завершил его выполнение, и агент больше не зарегистрирован в AMS.

·   AP_TRANSIT - мобильный агент перемещается к новому местоположению. Система продолжает буферизовать сообщения, которые будут посланы ему, когда он прибудет в новое местоположение.

·   AP_COPY - создание копии агента.

·   AP_GONE - мобильный агент переместился к новому местоположению, и имеет устойчивое состояние.

Агент вместе со всеми своими структурами данных и поведениями может быть средствами платформы реализован в поток байтов и передан на другой контейнер, где он продолжит свою работу. Агенты выполняют задачи и взаимодействуют путем обмена сообщениями.

Каждая запущенная копия среды JADE называется контейнером, который может содержать несколько агентов. Множество работающих контейнеров называется платформой. Один специальный главный контейнер должен всегда быть запущен в платформе и все другие контейнеры регистрируются у него, как только они запускаются. Отсюда следует что первый контейнер при старте платформы должен быть главным, а все остальные должны быть “нормальными” контейнерами и должны “сказать” как найти (хост и порт) их главный контейнер.

“Главный контейнер” так же может содержать в себе агентов, но отличается от других контейнеров тем что:

·   Он должен быть первый запущенный контейнером, в котором регистрируются все остальные контейнеры во время запуска;

·   Он включает в себя два специальных агента:

·   AMS, который является авторитетным в платформе и единственным агентом способным управлять платформой, т.е. запускать/убивать агентов или закрывать саму платформу(обычные агенты могут попросить AMS сделать это);

·   DF, который предоставляет услуги справочника, в котором агенты могут публиковать свои сервисы или найти других агентов которые будут предоставлять им необходимые сервисы.

Если другой главный контейнер запускается где-то в сети это является другой платформой, для которой новые нормальные контейнеры имеют возможность присоединяться.

Взаимодействие агентов

Агенты могут взаимодействовать независимо от того живут ли они в одном и том же контейнере, в разных контейнерах (на том же самом или на разных узлах), принадлежат ли к одной платформе, или же в разных. Взаимодействие основано на асинхронной передаче сообщений.

Формат сообщения определяется языком ACL, определенный международной организацией FIPA, которая выпустила ряд технических спецификаций для совместимости агентных систем. ACL сообщение содержит ряд полей:

·   отправитель;

·   получатель;

·   коммуникативный акт, содержит намерения отправителя сообщения. Например, когда агент посылает сообщение INFORM, он хочет, чтобы получателю стало известно о каком-то факте (например, INFORM “сегодня идет дождь”). Когда агент передает сообщение REQUEST, он хочет, чтобы получатель выполнил какое-то действие. FIPA определяет 22 коммуникативных акта, каждый с четко определенной семантикой, что как утверждают может покрыть 95% всех возможных ситуаций. К счастью, в 99% случаях мы не должны заботится о формальной семантике, мы просто используем их для интуитивного смысла;

·   содержание - фактическая информация, передаваемое в сообщении (то что получатель должен осознавать в случае INFORM и действие, которое он должен выполнить в случае REQUEST).

2.     
Практическая часть

.1 Описание работы системы

моделирование система jade java

В рамках данной курсовой работы было реализовано приложение для изучения и демонстрации работы мультиагентной платформы JADE. Данное приложение моделирует игру в «наперстки». На рис.1 представлена схема взаимодействия агентов в приложении.

Рис.1. Схема взаимодействия агентов в приложении.

Приложение состоит из следующих типов агентов:

2.1.1 Master

Агент данного типа является ведущим в данной игре. Он имеет набор поведений, характерный для ведущего, что позволяет ему реагировать на различные виды событий, происходящие при взаимодействии с агентами других типов. Кроме того, он может общаться со всеми другими типами агентов.

2.1.2 Player

Агент данного типа является игроком в данной игре. Его набор поведений позволяет ему общаться только с агентом типа «Master» и реагировать на события, происходящие при их взаимодействии. Вероятность его выигрыша равна 33%.

2.1.3 Apprentice

Агент данного типа является подставным игроком в данной игре, то есть ведущий спрашивает у него: «В каком стаканчике шарик?» - с определенной интонацией. Для большей реалистичности модели данный агент не всегда может распознать подсказку ведущего. Вероятность его выигрыша равна 83%, в отличии от «Player».

.2      Демонстрация работы

На рис.2 продемонстрирована работа программы при взаимодействии агентов типа «Master» и «Player».

Рис.2. Демонстрация работы программы при взаимодействии агентов типа «Master» и «Player».

На рис.3 продемонстрирована работа программы при взаимодействии агентов типа «Master» и «Apprentice».

Рис.3. Демонстрация работы программы при взаимодействии агентов типа «Master» и «Apprentice».

 

Вывод


В ходе данной курсовой работы мы изучили мультиагентную платформу JADE, научились моделировать системы с её помощью, разработали приложение для демонстрации возможностей данной платформы.

 

Список литературы


1.      Интернет ресурс. URL: https://ru.wikipedia.org/wiki/Агентно-ориентированный_подход.

2.      Shoham Yoav. Multiagent systems: Algorithmic, Game-Theoretic, and Logical Foundations = Artificial Intelligence: A Modern Approach. - Cambridge University Press, 2009.

.        Educational Technology & Society 8(3) 2005 ISSN 1436-4522 Использование JADE (Java Agent Development Environment) для разработки компьютерных систем поддержки дистанционного обучения агентного типа Глибовец Н.Н. Университет “Киево-Могилянская академия”.

4.      Архитектура и реализация платформы JADE. Гореликов М.В., Иванов А.М. МГТУ им. Н.Э. Баумана, каф. ИУ-3.

5.      Интернет ресурс. URL: http://jade.tilab.com/documentation/tutorials-guides/.

.        Особенности разработки мультиагнетных систем на платформе Jade Semantic Agent Framework.

7.      Интернет ресурс. URL: <http://www.iro.umontreal.ca/~vaucher/Agents/Jade/JadePrimer.html>.

.        Агенты, многоагентные системы, виртуальные сообщества: стратегическое направление в информатике и искусственном интеллекте. Тарасов В.Б.

 

Приложение


Листинг программы агента «Master»

package kr;jade.core.Agent; jade.core.behaviours.*;

import jade.domain.DFService;

import jade.domain.FIPAAgentManagement.DFAgentDescription;jade.domain.FIPAAgentManagement.ServiceDescription;jade.lang.acl.*;java.util.Random;class master extends Agent {String[][] list = {

{

"Привет players !"

},

"В первом стаканчике !",

"Во втором стаканчике !",

"В третьем стаканчике !"

},

{

"В кaком стаканчике шарик ?",

"В каком стaканчике шарик ?",

"В каком стакaнчике шарик ?",

"В каком стаканчике шарик ?"

},

{

"Пока players !"

}

};[] result;String secret = "";int scrt = 0;boolean flag = true;void setup() {DFAgentDescription dfd = new DFAgentDescription();

//dfd.setName(getAID());sd = new ServiceDescription();

//sd.setType("kr");

//sd.setName("master");.addServices(sd);{= DFService.search(this, dfd);.out.println(result.length + " в ожиданиие игры" );

} catch (Exception e) {.out.println(e);

}Agent agent = this;msg = new ACLMessage(ACLMessage.INFORM);(int i = 0; i<result.length; i++) {.addReceiver(result[i].getName());.setLanguage("English");

//Random r = new Random();.setContent(list[0][0]);(msg);.out.println(" <- " + getLocalName() + " отправил сообщение " + " ''" +msg.getContent() + "'' ");

}(new TickerBehaviour(this, 5000) { // 5000 = 5 секундамvoid onTick() {{= DFService.search(agent, dfd);(result.length>0) {

} else {.out.println(" ** " + getLocalName() + " ожидает новых игроков... ");

}

} catch (Exception e) {.out.println(e);

}msg = new ACLMessage(ACLMessage.INFORM);(int i = 0; i<result.length; i++) {(result.length != 0) {.addReceiver(result[i].getName());.setLanguage("English");r = new Random();(flag == true) {= r.nextInt(4);

//System.out.println(scrt);

}(flag == false) {= r.nextInt(3);

}(scrt == 3) {= (list[1][r.nextInt(3)]);.setContent(list[2][scrt]);

} else {= (list[1][scrt]);.setContent(list[2][scrt]);

}(msg);.out.println(" <- " + getLocalName() + " отправил сообщение " + " ''" +msg.getContent() + "'' ");

} else {.out.println("Нет игроков, ожидаю...");

}

}

}

});(new CyclicBehaviour(this) {void action() {msg = receive();(msg!=null) {.out.println(" -> " + getLocalName() + " принял сообщение" + " ''" +msg.getContent() + "'' ")(msg.getContent().equals(list[1][0])) {(msg.getContent().equals(secret)) {reply = msg.createReply();.setPerformative( ACLMessage.INFORM );.setContent("Верно !");(reply);.out.println(" <- " + getLocalName() + " отправил сообщение " + " ''" +reply.getContent() + "'' ");.out.println(" ** " + getLocalName() + " отдает деньги выигравшему игроку ");

} else {reply = msg.createReply();.setPerformative( ACLMessage.INFORM );.setContent("Не верно !");(reply);.out.println(" <- " + getLocalName() + " отправил сообщение " + " ''" +reply.getContent() + "'' ");.out.println(" ** " + getLocalName() + " забирает деньги проигравшего игрока ");

}

}(msg.getContent().equals(list[1][1])) {(msg.getContent().equals(secret)) {reply = msg.createReply();.setPerformative( ACLMessage.INFORM );.setContent("Верно !");(reply);.out.println(" <- " + getLocalName() + " отправил сообщение " + " ''" +reply.getContent() + "'' ");.out.println(" ** " + getLocalName() + " отдает деньги выигравшему игроку ");

} else {reply = msg.createReply();.setPerformative( ACLMessage.INFORM );.setContent("Не верно !");(reply);.out.println(" <- " + getLocalName() + " отправил сообщение " + " ''" +reply.getContent() + "'' ");.out.println(" ** " + getLocalName() + " забирает деньги проигравшего игрока ");

}

}(msg.getContent().equals(list[1][2])) {(msg.getContent().equals(secret)) {reply = msg.createReply();.setPerformative( ACLMessage.INFORM );.setContent("Верно !");(reply);.out.println(" <- " + getLocalName() + " отправил сообщение " + " ''" +reply.getContent() + "'' ");.out.println(" ** " + getLocalName() + " отдает деньги выигравшему игроку ");

} else {reply = msg.createReply();.setPerformative( ACLMessage.INFORM );.setContent("Не верно !");(reply);.out.println(" <- " + getLocalName() + " отправил сообщение " + " ''" +reply.getContent() + "'' ");.out.println(" ** " + getLocalName() + " забирает деньги проигравшего игрока ");

}

}

}

}

});

}

}

Листинг программы агента «Player»

kr;jade.core.Agent;jade.core.behaviours.*;jade.domain.DFService;jade.domain.FIPAAgentManagement.DFAgentDescription;jade.domain.FIPAAgentManagement.ServiceDescription;jade.lang.acl.*;java.util.Random;class player extends Agent {String[][] list = {

{

"Привет master !"

},

{

"В первом стаканчике !",

"Во втором стаканчике !",

"В третьем стаканчике !"

},

{

"Ура я выйграл !",

"Жаль я проиграл !"

},

{

"Пока master !"

}

};int cash = 3;void setup() {dfd = new DFAgentDescription();.setName(getAID());sd = new ServiceDescription();.setType("kr");.setName("player");.addServices(sd);Agent agent = this;{.register(this, dfd);.out.println(getLocalName() + " Пришёл играть... ");

} catch (Exception e) {.out.println(e);

}(new CyclicBehaviour(this) {void action() {msg = receive();(msg!=null) {.out.println(" -> " + myAgent.getLocalName() + " принял сообщение " + " ''" +msg.getContent() + "'' ");reply = msg.createReply();.setPerformative( ACLMessage.INFORM );r = new Random();(msg.getContent()) {"Привет players !":.setContent(list[0][0]);

break;"В кaком стаканчике шарик ?":

break;"В каком стaканчике шарик ?":

reply.setContent(list[1][r.nextInt(2)]);

break;"В каком стакaнчике шарик ?":

reply.setContent(list[1][r.nextInt(2)]);

break;"В каком стаканчике шарик ?":

reply.setContent(list[1][r.nextInt(2)]);;"Верно !":.setContent(list[2][0]);++;.out.println(" ** " + getLocalName() + " Имеет на руках сумму равную " + cash);;"Не верно !":.setContent(list[2][1]);-;.out.println(" ** " + getLocalName() + " Имеет на руках сумму равную " + cash);;

}(reply);.out.println(" <- " + getLocalName() + " отправил сообщение " + " ''" +reply.getContent() + "'' ");(cash == 6) {{.deregister(agent);

}(Exception e) {.out.println(e);

}.out.println(" ** " + getLocalName() + " ''Спасибо за хорушую игру! Всем пока...'' ");();

}(cash == 0) {{.deregister(agent);

}(Exception e) {.out.println(e);

}

System.out.println(" ** " + getLocalName() + " ''Увы у меня кончились деньги, немогу играть. Всем пока...'' ");();

}

}

}

});

}

}

Листинг программы агента «Apprentice»

package kr;

import jade.core.Agent;jade.core.behaviours.*;jade.domain.DFService;jade.domain.FIPAAgentManagement.DFAgentDescription;jade.domain.FIPAAgentManagement.ServiceDescription;jade.lang.acl.*;java.util.Random;class apprentice extends Agent {String[][] list = {

{

"Привет master !"

},

{

"В первом стаканчике !",

"Во втором стаканчике !",

"В третьем стаканчике !"

},

{

"Ура я выйграл !",

"Жаль я проиграл !"

},

{

"Пока master !"

}

};int cash = 3;void setup() {dfd = new DFAgentDescription();.setName(getAID());sd = new ServiceDescription();.setType("kr");.setName("apprentice");.addServices(sd);Agent agent = this;{.register(this, dfd);.out.println(getLocalName() + " Пришёл играть... ");

} catch (Exception e) {.out.println(e);

}(new CyclicBehaviour(this) {void action() {msg = receive();(msg!=null) {.out.println(" -> " + myAgent.getLocalName() + " принял сообщение " + " ''" +msg.getContent() + "'' ");reply = msg.createReply();.setPerformative( ACLMessage.INFORM );r = new Random();(msg.getContent()) {"Привет players !":.setContent(list[0][0]);

break;"В кaком стаканчике шарик ?":

reply.setContent(list[1][0]);;"В каком стaканчике шарик ?":.setContent(list[1][1]);;"В каком стакaнчике шарик ?":.setContent(list[1][2]);;"В каком стаканчике шарик ?":.setContent(list[1][r.nextInt(2)]);;"Верно !":.setContent(list[2][0]);++;.out.println(" ** " + getLocalName() + " Имеет на руках сумму равную " + cash);;"Не верно !":.setContent(list[2][1]);-;.out.println(" ** " + getLocalName() + " Имеет на руках сумму равную " + cash);;

}(reply);.out.println(" <- " + getLocalName() + " отправил сообщение " + " ''" +reply.getContent() + "'' ");(cash == 6) {{.deregister(agent);

}(Exception e) {.out.println(e);

}.out.println(" ** " + getLocalName() + " ''Спасибо за хорушую игру! Всем пока...'' ");();

}(cash == 0) {{.deregister(agent);

}(Exception e) {.out.println(e);

}

System.out.println(" ** " + getLocalName() + " ''Увы у меня кончились деньги, немогу играть. Всем пока...'' ");();

}

}

}

});

}

}

Похожие работы на - Моделирование системы равновероятностных событий с использованием мультиагентной платформы JADE

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!