Задание дополнительного требования (проверка насыщения рынка)



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

Задайте the requirement for the optimization experiment

1. Выделите оптимизационный эксперимент в панели Проекты и перейдите в секцию свойств Ограничения. Задайте требование к результатам оптимизации в верхней строке таблицы Требования (проверяются после «прогона» для определения того, допустимо ли найденное решение).

2. Введите root.Adopters в ячейке Выражение. Корневой агент эксперимента доступен здесь по имени root.

3. Выберите >= в ячейке Тип.

4. Введите 80000 в ячейке Граница.

5. Наконец, установите флажок в самом левом столбце таблицы, чтобы активировать это ограничение.

Мы закончили задание дополнительного требования к результатам оптимизации. Оно будет проверяться после каждого «прогона» модели. Если это требование не будет выполнено, то полученный в результате данного «прогона» результат будет отброшен.

Запуск оптимизации

Теперь модель готова к проведению оптимизации.

Запустите оптимизацию

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

2. Запустите процесс оптимизации, щелкнув по кнопке Запустить оптимизацию на холсте презентации эксперимента.

3. AnyLogic запустит модель 500 раз, изменяя значения параметров MonthlyExpenditures и SwitchTime. Итоговая информация о результатах будет отображаться в специальных элементах управления на диаграмме эксперимента в окне презентации.

Когда процесс оптимизации модели завершится, Вы увидите, что Лучшее значение функционала равно четырем с лишним тысячам. Эксперимент в итоге выдаст оптимальные значения параметров SwitchTime и MonthlyExpenditures, при которых было достигнуто это значение функционала.

Теперь можно обновить модель этими значениями параметров SwitchTime и MonthlyExpenditures. Сохраните полученные значения параметров в эксперименте Simulation, чтобы использовать в нашей модели найденную оптимальную стратегию.

Примените результаты оптимизации

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

2. Закройте окно презентации и выделите эксперимент Simulation в панели Проекты.

3. Вставьте скопированные значения параметров из Буфера обмена, щелкнув по кнопке Вставить из буфера в панели свойств эксперимента.

Запустите эксперимент Simulation. Теперь модель будет запущена с оптимальными значениями параметров, при которых в процессе оптимизации было получено наилучшее значение функционала. Можете проверить, что к заданному времени (1,5 года) достигается требуемое количество пользователей продукта.

Теперь мы спланировали стратегию завоевания рынка таким образом, чтобы рекламная кампания была наиболее рациональной и эффективной.

Контрольные вопросы

1. Перечислите основные этапы построения динамических моделей в среде AnyLogic.

2. Для чего используются фазовые графики при представлении результатов моделирования?

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

4. Что представляет собой переходный процесс в динамических системах?

5. Дайте характеристику типовым звеньям динамических систем с точки зрения протекания в них переходных процессов.

6. Как строится интерфейс эксперимента AnyLogic для связи с параметрами модели?

7. Как выполняется соединение подсистем при построении динамической модели в AnyLogic?

8. В чем заключается принцип работы динамической системы с отрицательной обратной связью?

Практическая работа №7

Тема: Разработка многоагентной модели в AnyLogic

Цель: - изучить методологию агентного моделирования. Приобрести практические навыки работы c системой AnyLogic при построении агентных моделей.

Вид работы: фронтальный

Время выполнения: 2 часа

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

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

Агенты в AnyLogic

Агент – это некоторая сущность, которая обладает активностью, автономным поведением, может принимать решения в соответствии с некоторым набором правил, может взаимодействовать с окружением и другими агентами, а также может изменяться (эволюционировать). Многоагентные (или просто агентные) модели используются для исследования децентрализованных систем, динамика функционирования которых определяется не глобальными правилами и законами, а, наоборот, эти глобальные правила и законы являются результатом индивидуальной деятельности членов группы. Цель агентных моделей – получить представление, об общем поведении системы исходя из знаний о поведении ее отдельных активных объектов и взаимодействии этих объектов в системе. Агентная модель может содержать десятки и даже сотни тысяч активных агентов.

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

В среде AnyLogic можно легко и быстро создавать модели с агентами. Агент естественно реализовывать с помощью базового элемента AnyLogic – активного объекта. В модели можно создавать классы активных объектов и далее использовать в модели любое число экземпляров этих классов. Активный объект имеет параметры, которые можно изменять извне, переменные, которые можно считать памятью агента, а также поведение (рис. 1).

Рисунок 1

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

Стейтчарты и таймеры могут выражать поведение: состояния агента и изменение состояний под воздействием событий и условий. Например, переходы в разные возрастные или социальные группы, изменения образования или дохода и т.д.

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

Ход работы

Создайте новый проект для будущей модели и сохраните его в своей папке.

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

Создание агентной модел

Шаг 1. Щелкните мышью по кнопке панели инструментов Создать. Появится диалоговое окно Новая модель. Задайте имя новой модели. Щелкните мышью по кнопке Далее.

Шаг 2. Выберите шаблон модели (рис. 2). В связи с тем, что мы хотим создать новую агентную модель, то нужно установить флажок Использовать шаблон модели и выбрать Агентная модель в расположенном ниже списке Выберите метод моделирования. Щелкните мышью по кнопке Далее.

Рисунок 2

Шаг 3. Создайте агентов, т.е. задайте имя класса агента и количество агентов, которое будет изначально создано в нашей модели. Задайте в качестве имени класса Person и введите в поле Начальное количество агентов 1000. Щелкните мышью по кнопке Далее.

Шаг 4. Задайте свойства пространства, в котором будут обитать агенты и выберите фигуру анимации агента. Установите флажок Добавить пространство и выберите ниже тип этого пространства – Непрерывное. Задайте размерности данного пространства: введите в поле Ширина – 600, а в поле Высота – 350. В результате наши агенты будут располагаться каким-то образом в пределах непрерывного пространства, отображаемого на презентации модели областью размером 600×350 пикселей. Не меняйте значения, выбранные в выпадающих списках Начальное расположение и Анимация; пусть агенты изначально расставляются по пространству случайным образом, а анимируются с помощью фигурки человечка. Щелкните мышью по кнопке Далее.

Шаг 5. Задайте сеть взаимосвязей агентов (рис. 3). Установите флажок Использовать сеть и оставьте выбранной опцию Случайное. Ниже можно установите флажок Показывать связи, чтобы отображать на презентации связи между знакомыми (или потенциально могущими встретиться и пообщаться) агентами с помощью линий. Щелкните мышью по кнопке Далее.

Рисунок 3

Шаг 6. Установите флажок Добавить простое поведение. В результате у агента будет создана диаграмма состояний.

Задание характеристик агента

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

Откройте структурную диаграмму класса Person. Перетащите элемент Параметр  из палитры Основная на диаграмму класса, в окне свойств параметра задайте имя AdEffectiveness, значение по умолчанию – 0.011.

Задание поведения агента

Поведение агента обычно описывается в классе этого агента (в нашей модели это класс Person) с помощью диаграммы состояний (стейтчарт).

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

1. Откройте структурную диаграмму класса Person. На диаграмме класса вы увидите следующую диаграмму состояний (рис. 4).

Рисунок 4

2. Откройте свойства верхнего состояния, переименуйте верхнее состояние в PotentialAdopter. Это начальное состояние. Нахождение стейтчарта в данном состоянии означает, что человек еще не купил продукт.

3. Нижнее состояние назовите Adopter (т.е. человек уже купил продукт).

4. Измените свойства перехода из состояния PotentialAdopter в состояние Adopter. Этот переход будет моделировать покупку продукта.

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

5. Удалите переход, ведущий из нижнего состояния в верхнее, поскольку мы пока создаем простейшую модель, в которой человек, однажды приобревший продукт, навсегда остается его потребителем, и соответственно перехода из состояния Adopter в состояние PotentialAdopter пока что быть не должно (рис. 5). Чтобы удалить переход, выделите его на диаграмме и нажмите Del.

Рисунок 5

6. Настройте выполнение модели (рис. 6). В окне свойств эксперимента перейдите на вкладку Модельное время и задайте останов модели после 8 единиц модельного времени.

Рисунок 6

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


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

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






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