Серия изданий«Научно-образовательные инаучно-информационныематериалыМГТУ им. Н.Э. Баумана —национальногоисследовательскогоуниверситетатехники и технологий» Департамент образования города Москвы Ассоциация московских вузов ^ Московский государственный технический университетимени Н.Э. БауманаКафедра ИУ-3«Информационные системы и телекоммуникации»^ А.М. ИвановНаучно-информационный материал«Методические материалы к практическим занятиямпо дисциплине«Интеллектуальные информационные системы»^ МоскваМГТУ им. Н.Э. Баумана2011Оглавление Введение 3Типы агентов в заданиях 4Метод порождения заданий 6Методология работы над заданием 6Технологии 6Инструменты групповой работы 7Требования к выполнению задания 7Результаты, их обобщение и оценка 10 Введение Цели проведения лабораторных работ по дисциплине «Интеллектуальные информационные системы»: дать студентам навыки использования открытых мульти-агентных платформ; дать студентам знания новых шаблонов проектирования параллельных распределенных систем; закрепить навыки групповой разработки качественного ПО; создать силами студентов большую библиотеку задач-поведений для всеобъемлющей мульти-агентной системы интеллектуальной автоматизации.Для достижения поставленных целей использовался комплекс занятий, состоящий 3-х частей:лекционный курс из 4 лекций с теоретической информацией об мульти-агентной платформе Jade;лабораторные работы (4 шт.) для ознакомления с инструментарием групповой разработки ПО, работой механизмов мульти-агентной платформы и получения первичных навыков их использования, необходимых для выполнения домашнего задания;домашнее задание для закрепления навыков использования инструментов групповой разработки и получения опыта в решении задач, связанных с разработкой агентных систем.Домашнее задание состоит в том, что каждому студенту необходимо разработать двух агентов: основного агента, в котором находится основная функциональность задания; тестового агента, который посылает основному агенту команды и настройки, а также принимает результат работы.Распределение заданий: одно задание на 1 студента. Ни одно из заданий не повторяется. Каждый год подготавливается новый набор заданий в соответствии с методом порождения заданий. Все ранее выполненные задания доступны студентам для использования.Оцениваемые результаты выполнения домашнего задания целиком и полностью сдаются в электронном виде: проект среды Eclipse, содержащий исходный код задания, находящийся в системе контроля версий SVN; отчет, находящийся в системе Wiki на странице с конкретным заданием.Защита задания. При защите задаются всего два типа вопросов, но по всему объему задания: Что именно вы сделали? Студент должен знать свою программу. Почему вы сделали именно так? Конструирование – это процесс принятия решений. Необходимо, чтобы студент мог воспроизвести процесс принятия им решений.^ Типы агентов в заданиях Задание состоит в том, чтобы интегрировать агента с какой-то из существующих систем и расширить области автоматизации. Способы интеграции агентов и традиционной системы, встречающиеся в задании, можно разделить на несколько типов. 1. Worker – агент умеет работать с какой-нибудь системной или служебной утилитой. В этой среде есть только программные агенты. Одна часть из этих агентов умеет использовать инструменты-утилиты, а другая умеет просить первых выполнить эту работу и использовать полученный результат. 1.1 MonitorAgent может мониторить (отслеживать) какой-нибудь процесс в окружающей агента среде и распознавать простые ситуации. Взаимодействие агента-монитора с тестовыми агентами (как и любыми другими) обычно происходит по протоколу подписки Subscription: При старте MonitorAgent ожидает подписчиков. У него нет никаких подписчиков и он ничего не отслеживает. При появлении первой подписки запускается поведение для ведения наблюдений. В любой момент времени один или более агентов TestAgent подписываются на получение от MonitorAgent информации (одной и той же или различной). В любой момент времени один или более агентов TestAgent отменяют подписку на получение от MonitorAgent информации. Соответственно, корректируется работа поведения для ведения наблюдений. Ведение наблюдений прекращается случае отмены всех подписок до полного отсутствия. Ведение наблюдений заключается в том, чтобы периодически опрашивать параметры среды и при наличии новой информации отправлять ее нужному агенту-подписчику. Агенты уведомляют друг друга о возникших ошибках в процессе взаимодействия.1.2 ManipulatorAgent может выполнять действия по запросу от другого агента. Взаимодействие агента-манипулятора с тестовыми агентами (как и любыми другими) обычно происходит по протоколу совершения запроса на основе AchieveRE: При старте ManipulatorAgent ожидает запрос на выполнение задачи. В любой момент времени один или более агентов TestAgent посылает запрос ManipulatorAgent на совершение действия. Обычно принимается первый запрос, затем ManipulatorAgent переходит к выполнению действия и на другие запросы отвечает, что он занят. После выполнения запроса ManipulatorAgent отсылает TestAgent уведомление с информацией о достигнутых результатах. Агенты уведомляют друг друга о возникших ошибках в процессе взаимодействия.2 SchizoXXX: интеграция агентов в тот же инструмент, в котором работает его хозяин-человек, на правах полноценного пользователя. Это может быть текстовый редактор, PIM, веб-браузер, IDE. Агент наблюдает за деятельностью пользователя, собирает персональные данные, помогает хозяину. В этой среде есть программный агент, инструмент, агент-хозяин (человек) которые интерактивно взаимодействуют, наблюдают друг за другом.^ Метод порождения заданий Каждый год от преподавателя требуется сформулировать новый набор заданий. Метод порождения заданий заключается в том, что из существующих систем берется новая система, которая интегрируется с агентами.^ Методология работы над заданием Студенты следуют итеративному процессу разработки, суть которого в том, что студенту надо показать проект несколько раз для постепенного устранения замечаний и повышения качества кода.Технологии В качестве агентной платформы использована система открытым исходным кодом Jade от Telecom Italia.^ Инструменты групповой работы Для получения студентами навыков использования инструментов групповой работы используются следующие системы: Eclipse IDE – открытая среда разработка на языке Java. Atlassian Confluence – wiki-сервер для онлайнового ведения документации. Subversion – система контроля версий для проектов, исходного кода и документов. Инструмент контроля версий интегрируется в среду разработки Eclipse. ICQ/Jabber/Skype – для решения неотложных вопросов использовались стандартные средства мгновенной передачи сообщений и электронная почта. TeamViewer – инструмент удаленного управления рабочим столом использовался для доступа к компьютеру студента в случае более сложных проблем.^ Требования к выполнению задания Требования к архитектуре. Весь функционал агентов и все необходимые данные должны находиться в поведениях. Необходимо, чтобы поведения были максимально независимы друг от друга и от агента для того, чтобы их можно было повторно использовать в других агентах. Вплоть до того, что поведения, онтологии и классы агентов должны находиться в трех разных package: behaviors, onto и agents. Использование в глобальных переменных, объявленных в агенте или другом поведении нарушает модульность (независимость) поведений и потому без особой нужды крайне не желательно. Статические переменные – также не желательны. Если без них нельзя, необходимо обосновать свое решение. Если в агенте необходимо хранить какие-то разделяемые данные поведений, необходимо реализовать максимально универсальный механизм хранения, который бы не был завязан на конкретные типы данных или поведения. В агенте должны храниться только данные, которые относятся непосредственно к самому агенту (например, имя, сервис и т.п.). Данные, которыми обмениваются агенты необходимо реализовывать в виде онтологии. Для взаимодействия агентов нужно стараться использовать стандартные протоколы взаимодействия агентной платформы. В случае, если функционала стандартных протоколов недостаточно, необходимо это обосновать и реализовать свои протоколы взаимодействия. Все параметры работы агента должны задаваться при помощи сообщений от TestAgent. При выполнении задания необходимо использовать концепцию "агент и его инструмент". Инструмент – это какой-то функционал, сервис, который должен работать быстро и тупо. По жесткому алгоритму постоянно перемалывать данные. Но инструмент не знает, зачем он это делает. Т.е. выделяем работу с внешними библиотеками в отдельные поведения. Агент, вернее его более высокоуровневые поведения, знают цель действия, и могут использовать инструмент: Настроить-запустить-остановить. Сконфигурировать на обнаружение событий и совершение каких-то примитивных действий (быстрый онлайн-анализ входящей информации). Примеры: сниффер при получении сетевого пакета, соответствующего шаблону, отправляет его агенту; FTP-клиент при успешном получении нужного пакета уведомляет агента об успехе. Запросить информацию (анализ истории, оффлайн дата-майнинг) и т.п. Зачем нужно такое разделение? Обычно основная логика агента работает в одном потоке исполнения и должна быстро реагировать на входящие сообщения. Поэтому инструмент, интенсивно работающий с данными, должен работать в отдельном потоке исполнения. Чтобы не тормозить работу всего менеджера поведений агента. Это как веб-приложение и БД, работающие в разных процессах. Такие инструменты рекомендуется выделять в отдельное поведение типа ThreadedBehaviour (см. п. 3.4.12 Executing Behaviours in a dedicated Java Thread из руководства "Jade Programmer’s Guide"). Менее нагруженные алгоритмы (например, опрос среды раз в 0,5 секунды) можно выделять в поведения, управляемые менеджером агента. Это поведения типа TickerBehaviour (вызывается через фиксированный интервал времени) или CyclicBehaviour (вызывается каждый раз сразу после отработки других поведений). Подробнее см. п. 3.4 The agent tasks. Implementing Agent behaviours из руководства "Jade Programmer’s Guide".^ Требования к реализации. Для выполнения задания обязательно использовать среду разработки Eclipse. Выполненное задание – это проект в Eclipse плюс отчет. Для реализации взаимодействия агентов необходимо использовать стандартные протоколы. Для реализации функционала агентов необходимо использовать поведения. Классы поведений не должны быть внутренними вложенными классами. Делайте их отдельными классами. Это много лучше с точки зрения модульности, т.к. отдельному поведению доступно не все состояние агента, а только те переменные, что вы передали в конструкторе. Необходимо ограничить доступ поведений к общим данным агента только теми данными, которые реально нужны.^ Требования к именованию. Имена классов и переменных должны быть осмысленными и соответствовать общепринятому формату в области Java: maxHeartSize, happyCustomerList, person – имена переменных HumanDestroyer, RssMiningAgent, Person – имена классов Комментарии должны быть как минимум ко всем классам и должны соответствовать формату JavaDoc.Требования к отчету. Отчет должен быть добавлен папку SVN проекта. Содержание отчета: Задание Обзор API сторонних библиотек и каркасов что делает библиотека, ссылки на сайт, вашего описание способа использования библиотеки (последовательность вызова основных функций) Агенты, их протоколы и разговоры диаграммы взаимосвязей агентов, протоколов их взаимодействия + пояснения Поведения агента диаграмма зависимостей поведений каждого агента с пояснениямиРезультаты, их обобщение и оценка Проведение занятий выявило, что студенты плохо усваивают работу сложных многопоточных механизмов распределенных систем. Применение инструментария визуализации сильно облегчило бы понимание внутренней работы такого ПО. Также возможно применение инструментов автоматизации работы с пользователями, проверок соблюдения соглашений оформления исходного кода для облегчения работы преподавателя.