Задание 1. Создание различных типов агентов



Под агентом в агентном моделировании понимается элемент модели, который может иметь поведение, память (историю), контакты и т.д. Агенты могут моделировать людей, компании, проекты, автомобили, города, животных, корабли, товары и т.д.

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

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

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

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

Создание модели

Создайте новую модель

1. Щелкните по кнопке Создать на панели управления. Откроется диалоговое окно Новая модель.

2. Задайте имя модели. Введите Maintenance в поле Имя модели.

3. Укажите местоположение, где Вы хотите хранить файлы модели. Используйте кнопку Выбрать..., чтобы выбрать нужную папку, или введите путь к папке в поле Местоположение.

4. В качестве Единиц модельного времени выберите часы.

5. Щелкните Готово.

Будет создана новая модель. AnyLogic автоматически создаст тип агента  Main и простой эксперимент  Simulation.

В центре рабочего пространства Вы увидите графический редактор. Он отображает диаграмму типа агента  Main. Рамка синего цвета показывает границы окна презентации (настройки окна презентации Вы можете найти в свойствах эксперимента Simulation, в секции Окно).

Слева от графического редактора Вы можете видеть панель Проекты, объединенную с панелью Палитра. Панель Проекты обеспечивает доступ к моделям AnyLogic, открытым в данный момент в рабочем пространстве. Дерево элементов модели позволяет легко ориентироваться в ее структуре. Панель Палитра содержит все графические элементы, которые Вы можете добавлять на диаграмму типа агента, просто перетаскивая их в графический редактор. Элементы сгруппированы в отдельные палитры.

Справа Вы можете найти панель Свойства. Панель Свойства отображает и позволяет изменять свойства выбранного в данный момент элемента (группы элементов) модели. Когда Вы выделяете какой-либо элемент, например, в панели Проекты или в графическом редакторе, панель Свойства отображает свойства выделенного элемента.

Вы можете открывать и закрывать конкретные панели с помощью меню Вид.

Теперь начнем разрабатывать нашу модель.

Создание агентов

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

Добавьте сервисный центр

1. В панели Палитра, наведите мышь на вертикальную полосу навигации и выберите палитру Агент.

2. Перетащите элемент Агент  из палитры на диаграмму типа агента  Main. Окно мастера Создание агентов откроется автоматически.

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

4. Мы не будем использовать данные из базы данных, поэтому оставьте выбранным опцию Создать новый тип агента «с нуля». Задайте Имя нового типа: MC и имя самого агента center в поле ниже. Щелкните Далее, чтобы продолжить.

5. Выберите тип анимации 3D, затем фигуру анимации Ангар из секции Здания и щелкните Далее.

6. Пропустите четвертый шаг по добавлению параметров, просто щелкните Далее.

7. Мы хотим, чтобы все наши агенты «жили» в непрерывном пространстве, размерами 1000x600, в сети со случайным расположением агентов. Популяции агентов, которые мы позже так же добавим на диаграмму Main, будут жить в той же среде.

8. Щелкните Готово.

После создания нового типа агента MC, Вы можете найти его в дереве модели на том же уровне, что и тип агента Main, а сам агент  center находится в ветке Main > Агенты.

Фигура анимации агента отображается как на диаграмме его типа, так и на  Main. Нам необходимо изменить масштаб фигуры. Мы зададим нужный масштаб для каждого агента в модели.

1. Сделайте двойной щелчок мышью по типу агента MC в дереве элементов модели, чтобы открыть его диаграмму. Затем передвиньте диаграмму вниз, чтобы видеть элементы, находящиеся над осью X.

2. Здесь Вы найдете объект Масштаб. Выделите его, чтобы открыть его свойства.

3. Установите Масштаб: Задан явно. Затем задайте сам масштаб в поле ниже: 4 пикселя в метре.

Добавьте ветряные турбины

1. Перетащите элемент Агент  из палитры Агент на диаграмму типа агента  Main.

2. В этот раз выберите опцию Популяция агентов. Щелкните Далее на шаге 2 (по умолчанию выбрана нужная нам опция Я хочу создать новый тип агента). На следующем шаге мастера создания агентов введите имя нового типа: Turbine и тогда автоматически появится имя популяции: turbines. Щелкните Далее.

3. Выберите 3D фигуру анимации Ветряная турбина из секции списка объектов Энергетика.

4. Нам не нужно сейчас создавать какие-либо параметры, так что пропустисте шаг 5. На шаге 6, задайте количество агентов, которые мы хотим видеть в этой популяции: 10 агентов.

5. Вы можете щелкнуть Готово уже на шаге 6. Настойки шага 7, Конфигурация создаваемой среды, будут автоматически заполнены, так как мы добавляем популяцию агентов в тип агента  Main, где мы уже задавали среду при создании агента сервисного центра.

6. Откройте диаграмму типа агента Turbine, которого мы сейчас создали, и так же измените Масштаб (1 м = 4 пикс.), как мы делали ранее для агента MC.

Добавьте транспорт

1. Перетащите элемент Агент  из палитры Агент на диаграмму типа агента  Main.

2. Снова выберите опцию Популяция агентов. Щелкните Далее на шаге 2 (Я хочу создать новый тип агента). На следующей странице мастера (шаг 3) введите в поле Имя нового типа:Transport, то же введите в поле Имя популяции: transport. Щелкните Далее.

3. Это пустая популяция, которой не нужна анимация. Мы будем использовать этот тип агента, чтобы задать логику модели.Выберите Нет для типа анимации, пропустите шаг создания параметров, выберите опцию Я хочу добавить агентов позже, во время выполнения модели, а пока оставить популяцию пустой и щелкните Готово.

4. Когда тип агента будет создан, измените его Масштаб на 4 пикселя в одном метре.

Добавьте в модель грузовики и вертолеты

1. Перетащите элемент Агент  из палитры Агент на диаграмму типа агента  Main.

2. Снова выберите опцию Популяция агентов. Щелкните Далее на шаге 2 (Я хочу создать новый тип агента). На следующей странице мастера (шаг 3) введите в поле Имя нового типа:Truck, пусть имя популяции автоматически заполнится как trucks. Щелкните Далее.

3. Выберите фигуру 3D анимации Грузовик из секции Автодорожный транспорт на следующем шаге. Нам не нужно добавлять сейчас параметры в мастере. Всего в популяции будет 5 агентов, а настройки среды уже будут заполнены.

4. После того, как создадите тип агента Truck, выделите Truck в дереве элементов модели и перейдите в панель Свойства. Сначала откройте секцию свойств Движение. Мы считаем, что грузовики в среднем движутся со скоростью 55 миль в час.

5. Откройте секцию свойств Специфические и задайте типу агента Truck наследовать конфигурацию типа агента Transport, выбрав его в параметре Расширяет тип агента: Transport.

6. Теперь тип агента Truck полностью задан. Нам необходимо добавить еще одну популяцию для вертолетов. Вернитесь на Main и снова перетащите элемент Агент  из палитры Агент и выберите Популяция агентов на первом шаге.

7. Введите имя нового типа Helicopter, оставьте имя популяции helicopters. Вы можете найти фигуру 3D анимации Вертолет в секции Военного назначения. Мы хотим использовать 2 вертолета для обслуживания турбин. Эта популяция живет в той же среде, что и все остальные.

8. Helicopter также Расширяет тип агента: Transport. Мы предполагаем, что вертолеты движутся со скоростью, равной 160 миль в час.

9. Мы не будем менять масштаб агентов Truck и Helicopter. Вы можете проверить объект Масштаб этих агентов: его свойства тоже наследуются от типа агента Transport.

Добавьте запросы на обслуживание

1. Перетащите элемент Агент  из палитры Агент на диаграмму типа агента  Main.

2. Выберите опцию Просто создать тип агента. Нам нужен тип агента, чтобы задать логику модели специальными параметрами, которые мы создадим на его диаграмме.

3. Введите имя типа ServiceRequest в соответствующем поле и щелкните Далее. Выберите Нет для типа анимации и перейдите на следующий шаг.

4. На шаге 4 мы создадим в мастере параметр, а также список вариантов.  Список вариантов - это элемент, который позволяет задавать параметры агента, которые имеют ограниченный выбор вариантов. В нашем случае, нам необходимо различать грузовики и вертолеты в общем транспортном парке. Назовите параметр type и выберите его Тип: Список вариантов. Так как в этой модели мы еще не создавали списков вариантов, по умолчанию мастер предложит Вам Создать новый список вариантов: введите имя TransportType. Добавьте варианты в таблицу, по одному в каждой строке: AUTO, AVIA.

5. Щелкните Готово. Список вариантов не имеет отдельного значка, который можно выбрать щелчком в графическом редакторе. Вы можете найти секцию Список вариантов в дереве модели:

6. После того, как Вы щелкните Готово, AnyLogic откроет диаграмму типа агента ServiceRequest. Здесь Вы можете увидеть параметр type, который мы создали в мастере. Добавьте еще один Параметр  из палитры Агент. Назовите его turbine и выберите его Тип из выпадающего списка: Turbine. Теперь тип агента ServiceRequest полностью задан.

Все агенты появятся на диаграмме  Main. Вы можете заметить, что популяции отмечены [..]. Переместите агентов за рамку окна презентации, а центры всех фигур анимации поместите в начало координат.

Вы можете найти настройки среды в секции Пространство и сеть свойств типа агента Main:

Последнее, что нам необходимо сделать на этом шаге разработки модели: задать масштаб типа агента Main:

Запустите модель

1. Постройте свой проект, щелкнув кнопку Построить Модель  на панели управления. Если в модели есть какие-либо ошибки, то построение будет неудачным, и Вы увидите панель Ошибки, в которой будут перечислены все ошибки в модели. Вы можете открыть место ошибки двойным щелчком по ее описанию в списке, чтобы исправить ее. После того, как модель будет успешно построена, Вы можете запустить ее. Запуская эксперимент, Вы автоматически обновляете модель.

2. Выберите эксперимент, который хотите запустить, открыв выпадающий список рядом с кнопкой запуска модели Запуск  на панели управления. Ваш эксперимент называется  Maintenance/Simulation. Потом Вы сможете запускать этот эксперимент, просто щелкая кнопку Запуск , поскольку она будет запускать последний запущенный эксперимент.

3. Запустив модель, Вы увидите окно презентации. На ней отображается презентация, созданная для этого эксперимента. AnyLogic автоматически создает заголовок и кнопку запуска модели.

4. Щелкните кнопку Запустить.

5. Мы только начали разрабатывать модель. В данный момент мы можем видеть сервисный центр, турбины и разные типы транспорта, случайно расположенные в непрерывном пространстве.

Далее давайте зададим местоположение транспорта, грузовиков и вертолетов, в сервисном центре.


Дата добавления: 2020-04-25; просмотров: 327; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!