Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
00_ИМЭС Курсовая готовая печать.docx
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
557.18 Кб
Скачать

2.2 Разработка имитационной модели продвижения инвестиционных инструментов

Перед созданием модели продвижения инвестиционных инструментов мы выбираем тип модели, в данном случае нам подойдет агентная модель. Модель будет содержать созданные Мастером создания модели классы активных объектов Main и Person. Активные объекты являются основными строительными блоками модели AnyLogic. Активные объекты могут моделировать любые объекты реального мира: машины, людей, здания, аппаратное обеспечение, программное обеспечение и т.д. В нашем случае активный объект Person будет моделировать агентов (потенциальных клиентов). Этот класс активного объекта был автоматически объявлен агентом (тем самым он получил доступ к специальной функциональности агента). После конфигурирования шаблона создаваемой модели появится окно (Рисунок 2). В левой части расположены панель «Проекты». Панель «Проекты» обеспечивает навигацию по элементам моделей, открытым в текущий момент времени. В центре рабочей области AnyLogic расположен графический редактор. В правой части рабочей области отображается панель Палитра, а внизу - панель Свойства. Панель Палитра содержит разделенные по категориям элементы, которые могут быть добавлены на графическую диаграмму класса активного объекта или эксперимента. Панель Свойства используется для просмотра и изменения свойств выбранного в данный момент элемента (или элементов) модели.

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

Открываем диаграмму класса Person и добавляем элемент «Параметр» из палитры «Основная». Называем AdEffectiveness (Рисунок 1). В панели свойство во вкладке «Основные» в поле «Значение по умолчанию» устанавливаем 0.011.

Рисунок 1. - Изменение свойства элемента «Параметр»

Затем открываем диаграмму класса Person(рисунок 2). Меняем имя верхнего и нижнего состояния.

Рисунок 2. - Диаграмма Person

Левую стрелку удаляем. Правой стрелки изменяем свойство: в поле «происходит» устанавливаем параметр «С заданной интенсивностью» и в поле вводим AdEffectiveness

В панели «Проекты», выделяем эксперимент Simulation. На странице «Модельное время» панели Свойства, выбираем «В заданное время» из выпадающего списка «Остановить». В расположенном ниже поле вводим 8.. Модель остановится после того, как истекут 8 единиц модельного времени.

В результате моделирования процесса моделирования продаж под влиянием рекламы запускается презентация (рисунок 3). На презентации видны моделируемые агенты. Каждый агент отображается своей фигуркой, которая меняет свой цвет в зависимости от того, приобрел ли данный агент рассматриваемый нами продукт или нет. Линиями на презентации будут соединены те агенты, между которыми существуют связи (в данный момент эти связи генерируются случайным образом).

Рисунок 3. - Результат моделирования продаж под влиянием рекламы

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

Открываем диаграмму Main панели «Проекты». Выделяем вложенный объект People. В панели «Свойства» на странице «Статистика» добавляем «Функцию сбора статистики». В поле имя вводим potentialAdopters (являются потенциальными потребителями продукта), задаем условие item.statechart.isStateActive(item.PotentialAdopter). Эта функция будет вести подсчет количества агентов, для которых выполняется заданное условие, т.e. тех агентов, которые находятся в текущий момент времени в состоянии PotentialAdopter. Аналогично создаем еще одну функцию сбора информации. Назовем ее adopter. Задаем условие: item.statechart.isStateActive(item.Adopter).

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

Теперь необходимо добавить элемент данных. Щелкаем по кнопке «Добавить элемент данных». Называем его «Potentialadopters ».В поле значение указываем: people.potentialAdopters(). Ставим синий цвет. Аналогично добавляем еще один элемент данных «Adopters». Задаем здесь значение: people.adopters().Устанавливаем красный цвет. Задаем «Временной диапазон» 8 (рисунок 4).

Рисунок 4.- Изменение свойств временного графика

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

Рисунок 5. - Результат моделирования «Подсчета потребителей продукта»

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

Открываем диаграмму класса Person. Создаем новый параметр «ContactRate»

В свойствах меняю тип. Устанавливаю «int». Значение по умолчанию вводим 300. То есть человек в среднем встречается с 300 людьми в год.

Добавляем еще один параметр под названием «AdoptionFraction». Устанавливаю тип «double». Значение по умолчанию вводим 0.015 (рисунок 15). Этот параметр, задает силу убеждения человека - долю общавшихся с владельцем продукта людей, которая приобретет этот продукт под влиянием общения.

Теперь добавляем элемент «Переход- transition» из диаграммы состояний. Установить его нужно в состояние «Adopter». В свойствах задаю действие: send("Buy!",RANDOM). В поле «Происходит» выбираем «С заданной интенсивностью» .

В свойствах в поле «тип сообщения» устанавливаем «String». Чтобы этот переход срабатывал при получении сообщения, на странице свойств этого перехода нужно выбрать из выпадающего списка «Происходит»: При получении сообщения. Далее выбрать ниже опцию «Если сообщение равно» и ввести "Buy!" в расположенном ниже поле. В поле «Дополнительное условие» будет: randomTrue(AdoptionFraction).

Переходим в класс Personв панели «Проекты». В панели свойств во вкладке «Агент» в поле «Действие при получении сообщения» вводим: statechart.receiveMessage(msg). Теперь, когда агент получит сообщение от какого-то другого агента, он будет перенаправлять его в свою диаграмму состояний, где оно будет обрабатываться так, как я это задала (а именно, вызывать срабатывание перехода, моделирующего приобретение продукта под влиянием личного общения).

Запустив модель и изучив динамику процесса приобретения продукта, можете увидеть, что из-за учета влияния устного общения этот процесс стал проистекать значительно быстрее (рисунок 6).

Графики переменных представляют собой классические S-образные кривые – динамика процесса в чем-то напоминает динамику распространения заболевания. Итак, можно сказать, что мы практически абсолютно точно воспроизвели результаты, которые выдавала для данной постановки задачи системно-динамическая модель. Сейчас люди в данной модели случайно располагаются в прямоугольном пространстве. И наша модель допускает общение любого человека с каждым, вне зависимости от того, на каком расстоянии друг от друга они находятся. Обычно же у человека есть определенный круг знакомых, которые живут в непосредственной близости к нему, и именно с ними он и общается. Поэтому можно сделать, чтобы в нашей модели общались только те люди, которые находятся не далее определенного расстояния друг от друга. Сделаем модель более реалистичной, допустив возможность общения только тех людей, которые находятся друг от друга на расстоянии, не превышающем 25 километров.

Рисунок 6.- Результат моделирования «Учета влияния общения людей»

Свойства формирования сетей контактов агентов, как и многие другие свойства агентной модели, задаются в объекте «Среда».

Открываем диаграмму класса Main. Выделяем объект «environment». Этот объект задает среду, в которой обитают агенты. В свойствах переходу в вкладку «Дополнительные». В поле « тип сети» выбираю «Согласно расстоянию». В «Радиус соединения » вводим 25.

Теперь нужно изменить диаграмму состояний агента, чтобы сообщение "Купи продукт!" отсылалось не случайно выбранному агенту, а только тому агенту, который является знакомым данного агента.

Открываем диаграмму класса Person. Изменяем свойства внутреннего перехода состояния Adopter. Изменяем действие на send("Buy!",RANDOM_CONNECTED). В поле «С заданной интенсивностью» ввожу ContactRate.

Запускаем модель. Видно, что теперь агенты соединены только с теми, которые находятся от них на расстоянии, не превышающем 25 единиц, а сам процесс распространения продукта происходит медленнее (рисунок 7).

Рисунок 7.- Результат модели после изменения свойств

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

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

Открываем диаграмму класса Person. Создаем параметр с названием «DiscardTime». Устанавливаем тип«int». Значение по умолчанию устанавливаем 3.

»

Добавляем элемент «Переход - Transition». Этот переход будет срабатывать по прошествии срока службы нашего продукта, заданного параметром DiscardTime, после того, как управление диаграммы состояний перейдет в состояние Adopter. Поэтому нужно оставить в свойстве «Происходит по» принятое по умолчанию значение Таймауту и ввести в поле «Таймаут»get_Main().DiscardTime. Метод get_Main() здесь возвращает экземпляр класса Main, в котором мы задали параметр

В панели «Проекты», выделяем эксперимент Simulation:Main. На странице «Модельное время» панели «Свойства», выбираю «Нет» из выпадающего списка «Остановить»

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

Рисунок 8.- Результат моделирования жизненного цикла инвестиционного продукта