- •Введение в Разработку
- •Многоагентных систем
- •В среде Jason
- •Основы программирования на языке
- •© Мирэа, 2009 Введение
- •1. Основные понятия теории агентов
- •1.1. Понятие агента
- •1.2. Программные агенты и программные объекты
- •1.3. Агенты и экспертные системы
- •2. Методика анализа концептуальных структур действий в применении к описанию поведения агентов
- •3.Представление о языках коммуникации агентов
- •3.1. Язык kif
- •3.2. Язык kqml
- •4. Знакомство со средой jason
- •4.1. Что такое Jason?
- •4.2. Установка и настройка Jason
- •4.3 Запуск демонстрационных примеров
- •4.4 Основы программирования на языке AgentSpeak
- •4.4.1 Убеждения
- •4.4.2 Типы данных
- •4.4.3 Сильное и слабое отрицание
- •4.4.4 Цели
- •4.4.5 Планы
- •Имя события : Контекстные ограничения
- •Пример №1
- •Пример №2
- •Пример №3
- •Пример №4(a)
- •Пример №4(b)
- •Пример №4(с)
- •Пример №4(d)
- •Пример №4(e)
- •4.4.6 Операторы
- •4.4.7 Аннотации
- •Аннотации для убеждений
- •Аннотации для планов
- •4.4.8 Работа со списками
- •4.4.9 Общие рекомендации по составлению и расположению планов
- •4.5 Работа агента в среде Jason
- •4.6 Инструменты отладки мас в Jason
- •5. Выполнение лабораторных работ
- •5.1 Описание процесса
- •5.2 Пример выполнения лабораторных работ
- •5.2.1 Постановка задачи
- •5.2.2 Концептуальный анализ поведения агентов
- •5.2.3 Концептуальная модель задачи «Фастфуд»
- •5.2.4 Описание вспомогательных алгоритмов
- •5.2.5 Программная реализация
- •5.2.5.1 Программа агента «Генератор клиентов»
- •1. База убеждений
- •2. Планы по достижению целей (табл. 5)
- •5.2.5.2. Программа агента «Клиент»
- •1. База начальных убеждений
- •2. Планы по достижению целей (табл. 6)
- •5.2.5.3 Программа агента «Продавец»
- •1. База начальных убеждений
- •2. Планы по достижению целей (табл. 7)
- •5.2.5.4 Программа агента «Хранилище»
- •1. База начальных убеждений
- •2. Планы по достижению целей (табл. 8)
- •5.2.5.5 Программа агента «Повар»
- •1. База начальных убеждений
- •2. Планы по достижению целей (табл. 9)
- •5.2.5.6 Файл проекта мас «fastfood.Mas2j»
- •5.2.6 Исследование работоспособности мас
- •Эксперимент №1
- •Эксперимент №2
- •Эксперимент №3
- •5.2.7 Дополнительные задания
- •Заключение
- •Справочник по функциям среды jason Внутренние функции
- •2) Функция «.Send»
- •3) Функция «.My_name»
- •2) Функция «.Length»
- •3) Функция «.Min»
- •4) Функция «.Max»
- •5) Функция «.Member»
- •6) Функция «.Nth»
- •7) Функция «.Sort»
- •8) Функция «.Substring»
- •1) Функция «.Add_plan»
- •2) Функция «.Plan_label»
- •3) Функция «.Relevant_plans»
- •4) Функция «.Remove_plan»
- •1) Функция «.Current_intention»
- •2) Функция «.Desire»
- •2) Функция «.Ground»
- •3) Функция «.Literal»
- •4) Функция «.List»
- •5) Функция «.Number»
- •6) Функция «.String»
- •7) Функция «.Structure»
- •2) Функция «.Add_annot»
- •3) Функция «.At»
- •4) Функция «.Count»
- •5) Функция «.Create_agent»
- •6) Функция «.Kill_agent»
- •11) Функция «.Perceive»
- •12) Функция «.Random»
- •13) Функция «.StopMas»
- •14) Функция «.Wait»
- •15) Функция «.All_names»
- •Содержание
- •Введение в Разработку
5.2.7 Дополнительные задания
Приведенные здесь задачи не являются заданиями на лабораторные работы, а предлагаются в целях самостоятельного изучения среды Jason и языка AgentSpeak. Вам предлагается самостоятельно модифицировать разобранный пример и исследовать работу получившихся МАС. В качестве направлений модернизации могут быть следующие.
1. Первое задание очень простое. Измените программу работы повара так, чтобы он сообщал о выбранной им скорости приготовления пищи.
2. Добавьте покупателям свойство «время ожидания», по истечении которого покупатели будут терять терпение и уходить из очереди.
3. Измените способ пополнения хранилища готовыми блюдами. Пусть теперь в фастфуде работают несколько поваров, изначально обладающих разной, но фиксированной скоростью приготовления, которые будут динамически подключаться к приготовлению по мере необходимости.
4. Расширьте асортимент блюд. Пусть повар может готовить разные блюда, а покупатели, соответственно, выбирать что им нравится на имеющиеся у них средства.
5. Возьмите в качестве исходной модели, модель, описанную в пункте 3, и добавьте в нее учет расходов на оплату труда сотрудникам фастфуда. Исследуйте зависимость получаемой прибыли от количества обслуживающего персонала.
6. Добавьте поварам свойство «уровень мастерства», от которого будет зависеть качество приготавливаемых блюд. Добавьте клиентам какое-либо поведение в зависимости от качества полученной ими еды.
7. Попробуйте спровоцировать конфликт за место в очереди среди более чем 2х покупателей. Пронаблюдайте, правильно ли он будет разрешен, и если нет, внесите исправления в программу.
8. Для простоты в нашем примере количество продавцов фиксировано, и если его изменить, то модель работать не будет. Модернизируйте программу так, чтобы она могла работать с произвольным числом продавцов, которое задается изначально.
9. Возьмите за основу результаты, полученные в предыдущем задании. Сделайте так, чтобы продавцы подключались к работе динамически, например, чтобы при достижении очередью определенного размера, на рабочее место приходил очередной продавец.
10. Измените работу генератора клиентов. По-умолчанию генератор реализует равномерное распределение вероятности прихода клиентов в течении всего времени моделирования. Теперь, предположим, что период моделирования условно соответствует суткам. Известно, что в разное время суток интенсивность прихода клиентов различается. Смоделируйте это изменение интенсивности.
11. Задание повышенной сложности (для владеющих Java).
Посмотрите, как на самом деле уныла наша МАС без модели среды! Мы же хотели смоделировать работу реальной организации, которая находится в физическом пространстве, где перемещаются и принимают решения реальные люди! А что получилось? Без среды наши агенты «слепы» и «неподвижны»! Все что они могут - это «кричать» и надеяться, что им ответят, такие же неподвижные слепцы! Вся их совместная работа это обмен фантазиями о том, как все могло бы происходить в среде и то, если эта среда не оказывает собственного влияния на состояние предметной области.
Изучите соответствующие разделы документации, и запрограммируйте модель среды, в которой у агентов будет «зрение», посредством которого они смогут «видеть» положение других агентов и ресурсов в пространстве. Это позволит сделать информационный обмен между агентами более целенаправленным, а поведение более гибким и подконтрольным законам среды. Реализуйте логику выбора и продвижения в очереди на основе анализа «зрительной» информации, поступающей из среды.
12. Задание повышенной сложности (для владеющих Java).
Разработайте оконный пользовательский интерфейс для любого варианта модели фастфуда. Интерфейс, как минимум, должен позволять изменять начальные убеждения агентов, а также визуализировать сам процесс моделирования.