Computer Science МФТИ Changes    |    Index    |    Search
::: BlackBoard :::

 
  ACM . Agent . BlackBoard # Edit # Attach # Diffs # Printable # More :::

Main
• Register
• Users
• Site Map

Curriculum

Agent Web
• projects

Algorithms

Web Learn

Image Kit

ProgTech

Publishing

Проект BlackBoard(BB)

Используемые сокращения BlackboardAgent(BBA), WorkerAgent(WA), в множественном числе BBAs и WAs.

1. Описание контекста :

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

2. Описание требований:

BBA - это некая "доска объявлений" на которой любой желающий (WA) может излагать свои мысли по какой нить теме, и все подобные ему WAs, которые занимаются той же проблемой (подписаны к той же теме), тоже сразу же становятся в курсе дела, получая все сообщения по этой теме.

Требования к BBA (хранилище данных):

  1. Прием сообщений;
  2. Отправка сообщений агентам подписанных к соотвествующим темам;
  3. Удаление сообщений;
  4. Регулярные репликации данных;
  5. Механизм подключения(подписывания) агентов к группе BBA;
  6. Механизм контроля доступности главного BBA;
  7. Механизм выбора главного BBA;

Требования к WA:

  1. Прием сообщений от BBA;
  2. Отправка сообщения к BBA;
  3. Подписывание/отписывание к/от темы;
  4. Механизм контроля доступности своего BBA;

3. Описание протоколов

1. Подписка:

Подписываемый субъект шлет BBA сообщение типа SUBSCRIBE, в котором в качестве ContentObject'а передает экземпляр класса SubscribeAgent. SubscribeAgent содержит 4 поля : agentType - "Blackboard" что соответствует BBA либо все что угодно, что будет считаться WA, subscribtionType - "subscribe" or "unscribe", topic - название темы, password - пароль к заданной теме. В ответ получает либо сообщение типа CONFIRM либо REFUSE, где в качестве ContentObject'a передается строка текста характеризующее ответ BBA.

2. Передача сообщения:

Сообщение передается сообщением типа INFORM, в котором содержится в качестве ContentObject'a, экземпляр класса Message. Message содержит 5 полей : id - идентификационный номер, text - текст сообщения, topic - тема сообщения, time - время когда сообщение было добавлено к BBA, isNotTransit - булевое поле необходимое для корректной работы репликаций. В ответ отправляется либо сообщение типа CONFIRM либо REFUSE, где в качестве ContentObject'a передается строка текста характеризующее ответ BBA.

3. Запрос:

Сообщение передается сообщением типа REQUEST, в котором содержится в качестве ContentObject'a, экземпляр класса Message. Message содержит 5 полей : id - идентификационный номер, text - текст сообщения, topic - тема сообщения, time - время когда сообщение было добавлено к BBA, isNotTransit - булевое поле необходимое для корректной работы репликаций. В ответ отправляется поток сообщений типа INFORM, удовлетворяющих данному запросу (выборка по времени).

4. Рассылка списка BBA:

Каждый раз, когда изменяется список BBA первичного BBA, Он рассылается всем агентам так или иначе связанных с группой BBA. Сообщение типа PROPOGATE. В качестве ContentObject'а рассылается Вектор, содержащий список всех BBA объединенных в группу.

5. Контроль доступности BBA:

Каждые 6000 миллисекунд главному BBA и той BBA, к которой подисан WA отправляется сообщение типа REQUEST_WHENEVER, в ContentObject содержится "Ping". в ответ незамедлительно высылается "pingEcho". В случае, если ответ не приходит в течении 6000 миллисекунд включается счетчик неотвеченных пинг-сообщений, как только счетчик превышает 3, проверяется второй BBA в списке объединенных BBA в группу по тому же принципу, если сам BBA и есть второй в списке, то он объявляет себя главным и рассылает новый упорядоченный список доступных BBA. Предыдущий главный BBA из списка не вычеркивается - помещается последним в список.

4.Описание алгоритма работы распределенной BBA:

  1. Существует несколько экземпляров BBA, один из них главный. Если вдруг кто то умирает, то в случае отваливания не главного BBA ничего по сути не происходит, если же отваливается главный BBA, то после трех пингов, главным становится тот который следующий в списке, а остальные начинают его пинговать, списки каждому BBA рассылаются главным BBA, и они одинаковые у всех, поэтому главный BBA всегда один.
  2. При падении борды, все подписанные к нему WAs пингуют ее 3 раза, и становятся в неактивное состояние, пока их кто нить не переподпишет к другой, существующей борде.
  3. WA посылает сообщение BBA, она потом рассылает его другим BBAs, и те если кто то подписан к этой теме рассылают это сообщение подписанным WAs. Есть возможность получить от BBA все сообщения по теме с какого то определенного времени(время надо вводить в правильном формате)

5.Необходимые улучшения:

В целом нам удалось создать работающую МАсистему BBA-WА, удовлетворяющую исходным требованиям. Но в силу того, что понимание приходит в процессе разработки, а не во время проектирования программы - есть ряд пожеланий и необходимых улучшений, которые по мнению авторов существенно улучшили бы построенную систему.

  1. Создать собственный набор Типов сообщений, который бы как нельзя лучше соответствовал по названию операциям производимых между BBA и WA
  2. Так как в нашем BBA используется статическая схема дерева тем, то крайне желательно переделать его до динамической схемы, в принципе вся работа уже сделана, осталось только подкорректировать класс онтологию и "научить" передавать класс Node в сообщениях.
  3. В данной работе перед WA в первую очередь ставилась цель - протестировать работу BBA на корректность и надежность работы. Но было бы неплохо внести какой-нибудь конкретный смысл в работу МАС BBA-WA(полезное применение), наделить агентов каким нибудь подобием интеллекта, чтобы они могли решать какую-нибудь задачу. Например предлагается на базе данной системы сделать Форум или Чат. Или систему мониторинга и наблюдения за некоторыми процессами(Часть агентов - сборщики информации(что-то вроде датчиков), сообщают набор какой-то информации в соответсвующую для них тему и другой Агент, который подписан на все и осуществляет задачу мониторинга и управления над первой частью агентов.).
  4. В существующей системе BBA-WA контроллируется доступность только Главного BBA, но неплохо было бы Главному BBA поручить контроллировать на доступность остальных BBA входящих в группу.
  5. Для Гибкости работы при объединении BBA предлагается передавать подписчиком список BBA, уже подписанных к нему.
  6. Предлагается улучшить вывод системных сообщений в окошке system info, для более приятного чтения событий.
  7. Было бы неплохо придумать механизм поиска всех агентов класса BlackboardAgent, запущенных на данной платформе!
  8. Оптимизация запросов по времени(сделать в WA удобную форму запросов по времени, нечто вроде наглядного календарика, где можно было бы выбрать промежуток времени просто с помощью мышки).

6.Инструкции:

Сборка:
  1. Убедитесь, что на Вашем компьютере установлена JDK 1.4 и JADE 3.01
  2. Изменить пути к проекту и к JADE в файле compile.bat
  3. Выполнить compile.bat

Запуск:

  1. Убедитесь, что на Вашем компьютере установлена JDK 1.4 и JADE 3.01
  2. Изменить пути к проекту и к JADE в файле runjade.bat
  3. Изменить название компьютера (HOST) в jade.bat и runremote.bat
  4. Для запуска програмым запустите jade.bat и если хотите создать несколько дополнительных контейнеров запустите runremote.bat необходимое число раз

Выполнение:

  1. Раскрыть дерево до контейнеров в RMA, кликнуть на любом из них правой кнопкой мыши, и выбрать StartNewAgent
  2. Для создания агентов их названия надо писать правильно mipt.BlackboardAgent или mipt.WorkerAgent
  3. Для объединения BAs их нужно законнектить к какой то одной, после чего она станет главной. Имя борды можно подсмотреть в ее контейнере, его надо писать полностью, например: bb@MyHostName:1099/JADE
  4. Каждого WAs можно при необходимости подписать к какой нить теме, к любой борде, для того чтобы подписаться к темам Entity и People нужно вводить еще и такой же пароль, Entity и People соответственно, к остальным темам пароль не требуется.

-- AzilkhanBapayev? -

-- VitaliyPoluosmak? - 08 Jun 2004

  • src.zip: Исходники и батники для сборки и запуска

Attachment sort Action Size Date Who Comment
src.zip manage 77.3 K 17 Jun 2004 - 10:26 AndreyUstyuzhanin Исходники и батники для сборки и запуска

Rambler's Top100 Rambler's Top100


# Edit menu  

Topic revision r1.13 - 17 Jun 2004 - 10:50 GMT - VitaliyPoluosmak? Copyright © 2003-2017 by the contributing authors.