Сдам Сам

Подсчет потребителей продукта

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


Создадим функции сбора статистики для подсчета потенциальных потре- бителей продукта.

1. Откройте диаграмму класса Main. Выделите на диаграмме вложенный объект people.

2. Перейдите на вкладку Статистикапанели свойств объекта people. Щелкните мышью по кнопке Добавить функцию сбора статистики. Откроет- ся секция свойств для задания свойств новой функции сбора статистики по элементам этого реплицированного объекта (people).

3. Задайте имя функции – potentialAdopters. Оставьте выбранный по умолчанию Тип функции– кол-во.

Задайте Условие: item.statechart.isStateActive(item.PotentialAdopter) Эта функция будет вести подсчет количества агентов, для которых вы-

полняется заданное условие, т.e. тех агентов, которые находятся в текущий момент времени в состоянии PotentialAdopter (являются потенциальными по- требителями продукта). Здесь item – это агент (элемент реплицированного объекта people).

4. Создайте еще одну функцию сбора статистики (рис. 46). Назовите ее

adopters. Тип функции– кол-во. Условие:

item.statechart.isStateActive(item.Adopter)

Данная функция будет вести подсчет количества агентов, которые нахо- дятся в состоянии Adopter (т.е. уже приобрели продукт).

Рис. 46


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

Рис. 47

 

Настройте свойства графика (рис. 48).

 
 

Рис. 48

 

6. Запустите модель. На графике (рис. 49) просмотрите динамику модели- руемого процесса.

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


Рис. 49

 

Учет влияния общения людей

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

Чтобы учесть влияние общения людей, внесем в нашу модель небольшие изменения.

Откройте диаграмму класса Person и создайте два новых параметра:

1) параметр ContactRate – среднегодовое количество встреч человека. Значение по умолчанию – 100. Тип – int. Предположим, что человек в среднем встречается со 100 людьми в год;

2) параметр AdoptionFraction – сила убеждения человека, влияющая на то, сколько людей он сможет убедить в необходимости купить продукт. Значение по умолчанию – 0.015. Тип – double.

Измените стейтчарт агента:

1) откройте диаграмму стейтчарта adoption;

2) добавьте в состояние Adopter внутренний переход (рис. 50). Для этого щелкните мышью по кнопке панели инструментов Переход, затем поочередно щелкните по любым двум сторонам состояния Adopter;


 

Рис. 50

3) задайте интенсивность, по которому происходит переход, –

ContactRate.

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

4) задайте Действиеперехода:

send("Buy!", RANDOM);

Такой переход посылает сообщение случайно выбранному человеку. Ме- тод send() отсылает сообщение другому агенту. Первый аргумент зада- ет сообщение, которое будет послано, а второй задает агента, которому сообщение будет адресовано. В нашем случае мы посылаем сообщение какому- то случайно выбранному агенту, поэтому в качестве значения аргумента мы используем специальную константу RANDOM (рис. 51).

Рис. 51

 

Данный переход генерирует сигнал для стейтчарта какого-то знакомого.


Затем срабатывает переход стейтчарта, моделирующий покупку продукта этим знакомым;

5) добавьте еще один переход из состояния PotentialAdopter в состояние Adopter (рис. 52). Он будет срабатывать по сигналу, который будет генериро- ваться внутренним переходом состояния Adopter;

Рис. 52

 

6) измените свойства этого перехода.

Вероятность принятия решения о покупке продукта будет зависеть от си- лы убеждения человека. В нашей модели данная характеристика задается пара- метром AdoptionFraction.

Введите randomTrue(AdoptionFraction) в поле Доп. условие. В результате введения дополнительного условия продукт будет приобретаться с вероятностью, задаваемой параметром AdoptionFraction.

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


 

Рис. 53

 

Измените свойства агента.

Откройте свойства класса Person (рис. 54). В поле Действие при получе- ниисообщения введите statechart.receiveMessage(msg);

 

Рис. 54

 

Запустите модель. Изучите динамику изменения числа потребителей и потенциальных потребителей продукта. Графики переменных должны пред- ставлять собой S-образные кривые.










Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2017 zdamsam.ru Размещенные материалы защищены законодательством РФ.