УДК 004.021

PАЗРАБОТКА И ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА МОДЕЛИРОВАНИЯ ПРОЦЕССА РАСПРОСТРАНЕНИЯ ИННОВАЦИЙ

Короткова Неля Николаевна
Волжсикй политехнический институт (филиал) Волгоградского государственного технического университета
кандидат технических наук, доцент кафедры информатики и технологии программирования

Аннотация
В статье содержится алгоритм соделирования распространения инноваций и его программная реализация.

DEVELOPMENT AND PROGRAM IMPLEMENTATION OF ALGORITHM OF MODELING THE PROPAGATION OF INNOVATIONS

Korotkova Nelya Nikolaevna
Volzhsky polytechnical institute (branch) Volgograd state technical university
PhD in Engineering Sciences, Associate Professor of Computer Science and Software Engineering

Abstract
This article contains the algorithm of modeling the propagation of innovations and its program implementation.

Keywords: algorithm of modeling, Diffusion of innovation, model, propagation of innovations


Библиографическая ссылка на статью:
Короткова Н.Н. Pазработка и программная реализация алгоритма моделирования процесса распространения инноваций // Современная техника и технологии. 2015. № 11 [Электронный ресурс]. URL: http://technology.snauka.ru/2015/11/8058 (дата обращения: 29.05.2017).

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

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

Другим параметром модели является наличие инноваций, имитации и их сочетания.

Кроме того, учитывают зависимость коэффициентов от времени, а также зависимость размеров рынка от времени.

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

Рассмотрим модель диффузии инноваций, которая описывается уравнением       при начальном условии f(0).


Рис. 1. Блок-схема функции fun1(m,h)

На рисунке 1 представлена блок-схема функции fun1(m,h), позволяющей определить долю занятого продуктом рынка в каждый момент времени (m-количество интервалов моделирования, h- шаг метода сеток). На первом шаге мы задаем индекс равным 0, и начальный элемент вектора f задаем равным начальному условию f0, вычисляем количество проданных товаров p и долю на рынке в первый момент времени f1, нулевой элемент вектора ans1 задаём равным нулевому значению вектора f. Затем в цикле до номера m-1 вычисляем p, следующий элемент вектора f и значение текущего элемента вектора ans1. Возвращаем из функции вектор ans1.

Рис.2. Реализация функции fun1(m,h)  в  MathCAD

На рисунке 2 представлена реализация этого алгоритма в  MathCAD.

Рис.3.  Блок решения, позволяющий найти точное решение дифференциального уравнения и функция Prodano в MathCAD

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

Рис.4. Результаты работы функции fun1(m,h)

Результаты работы функции fun1 на 50 временных интервалах с шагом 1 и 0,2, а также точное решение уравнения диффузии инноваций представлены на рисунке 4. Очевидно, что при меньшем шаге сетки получаем более точное решение.

Рис.5. Блок-схема функции max(Ress1)

На рисунке 5 показана блок-схема функции max(Ress1), позволяющей определить момент наполнения рынка на 99% (Ress1-вектор, описывающий распространение продукта). На первом шаге номеру максимального элемента вектора maxiRess присваиваем значение 0, максимальное значение вектора maxfRess считаем равным нулевому значению вектора Ress1. Далее в цикле до конца вектора Ress1 проверяем, меньше ли текущее максимальное значение вектора 0.99 и больше ли очередное значение вектора текущего максимального (так как элементы вектора возрастают, то можно не проверять условие, что элемент вектора больше текущего максимального значения). Если да, то номеру максимального элемента вектора присваиваем значение i, а очередное значение вектора становится максимальным. Выполняем цикл до конца вектора Ress1. Если в векторе Ress1 250 значений (шаг равен 0.2), то после цикла округляем номер момента времени, в который продукт заполнил 99% рынка, предварительно разделив его значение на 5 для единообразия с результатом при шаге 1. Возвращаем номер maxiRess и значение maxfRess.

Рис.6. Реализация  функции max(Ress1) в MathCAD

На рисунке 6 представлена реализация этого алгоритма в MathCAD.  На этом же рисунке приведены результаты расчетов, что подтверждается и рисунком 4.

 

Рис.7. Блок-схема функции maxxf

На рисунке 7 показана блок-схема функции maxxf, с помощью которой можно определить момент времени, в который действительно произойдет наполнение рынка на 99%, так как мы используем точное решение уравнения диффузии инноваций. В начальный момент времени считаем текущий номер максимального элемента maxi1 равным 1, а текущее значение функции maxf1 равным начальному значению f(0). Затем в цикле по номеру момента времени i. который изменяется до 49, проверяем, меньше ли текущее максимальное значение 0.99 и меньше ли оно f(i)-точного значения функции в момент i. Если условие выполняются, то  номеру максимального значения функции  присваиваем значение i, а очередное значение функции f(i) становится максимальным. После окончания цикла возвращаем значения maxi1 и  maxf1.

Рис.8. Реализация функции maxxf в MathCAD

На рисунке 8 эта функция реализована в MathCad.

Рис.9. Блок-схема функции fun2(m,h)

На рисунке 9 представлена блок-схема функции fun2(m,h), позволяющей определить продажи в каждый момент времени (m-количество интервалов моделирования, h- шаг метода сеток). На первом шаге мы задаем индекс равным 0, и начальный элемент вектора f задаем равным начальному условию f0, вычисляем продажу p и выручку pr, долю на рынке в первый момент времени- первый элемент вектора f, нулевой элемент вектора ans2 задаём равным нулевому значению вектора pr. Затем в цикле до номера m-1 вычисляем продажу p, выручку pr,  следующий элемент вектора f и значение текущего элемента вектора ans2. Возвращаем из функции вектор ans2.

Рис.10. Реализация функции fun2(m,h) в MathCAD

На рисунке 10 представлена реализация этого алгоритма в в MathCAD.

Рис.11. Результаты работы функции fun2(m,h)

Результаты работы функции fun2 на 50 временных интервалах с шагом 1 и 0.2, а также точное значение выручки представлены на рисунке 11.

Рис.12. Блок-схема функции maxPr(Res)

На рисунке 12 показана блок-схема функции maxPr(Res), позволяющей определить момент максимальной продажи (Res-вектор, описывающий прибыль от продажи продукта). На первом шаге номеру максимального элемента вектора maxiPrприсваиваем значение 0, максимальное значение вектора maxfPr считаем равным нулевому значению вектора Res. Далее в цикле до конца вектора Res проверяем, больше ли очередное значение вектора текущего максимального. Если да, то номеру максимального элемента вектора присваиваем значение i, а очередное значение вектора становится максимальным. Выполняем цикл до конца вектора Res. Если в векторе Res 250 значений (шаг равен 0.2), то после цикла округляем номер момента времени максимальной продажи, предварительно разделив его значение на 5 для единообразия с результатом при шаге 1. Возвращаем номер maxiPr и значение maxfPr.

Рис.13. Реализация  функции maxPr(Res)  в MathCAD

На рисунке 13 представлены реализация этого алгоритма в MathCAD и результаты работы этой функции на векторах Pr1 (50 временных интервалов, шаг 1), Pr2 (50 временных интервалов, шаг 0.2) и Prodaza (точное значение продаж). Получены очень близкие результаты.

Далее рассмотрим обобщенную аналитическую модель диффузии инноваций, описываемую уравнением   (F=1-потенциальная доля на рынке, -доля принявших новое программное обеспечение, b=0.5) при начальном условии f(0)=0.1.

Рис.14. Блок-схема функции fun3(m,h)

На рисунке 14 представлена блок-схема функции fun3(m,h), позволяющей определить долю занятого продуктом рынка в каждый момент времени (m-количество интервалов моделирования, h- шаг метода сеток). На первом шаге мы задаем индекс равным 0, и начальный элемент вектора f задаем равным начальному условию f0, вычисляем количество проданных товаров p и долю на рынке в первый момент времени f1, нулевой элемент вектора ans3 задаём равным нулевому значению вектора f. Затем в цикле до номера m-1 вычисляем p, следующий элемент вектора f и значение текущего элемента вектора ans3. Возвращаем из функции вектор ans3.

Рис.15. Реализация функции fun3(m,h) в MathCAD

На рисунке 15 представлена реализация этого алгоритма в в MathCAD.

Рис.16. Блок решения, позволяющий найти точное решение дифференциального уравнения и функция Prodano1 в MathCAD

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


Рис.17. Результаты работы функции fun3(m,h)

Результаты работы функции fun3 на 50 временных интервалах с шагом 1 и 0,2, а также точное решение уравнения диффузии инноваций представлены на рисунке 17. Очевидно, что при меньшем шаге сетки получаем более точное решение.

Рис.18.Реализация  функции maxxff1 в MathCAD и нахождение момента наполнения рынка на 99%

На рисунке 18 показана реализация в MathCAD нахождения момента наполнения рынка на 99% при шаге сетки 1 и при шаге 0.2, а также для точного решения дифференциального уравнения. Полученные результаты подтверждаются рисунком 17.

Рис.19. Блок-схема функции fun4(m,h)

На рисунке 19 представлена блок-схема функции fun4(m,h), позволяющей определить продажи в каждый момент времени (m-количество интервалов моделирования, h- шаг метода сеток). На первом шаге мы задаем индекс равным 0, и начальный элемент вектора f задаем равным начальному условию f0, вычисляем продажу p и выручку pr, долю на рынке в первый момент времени- первый элемент вектора f, нулевой элемент вектора ans4 задаём равным нулевому значению вектора pr. Затем в цикле до номера m-1 вычисляем продажу p, выручку pr,  следующий элемент вектора f и значение текущего элемента вектора ans4. Возвращаем из функции вектор ans4.

Рис.20. Реализация функции fun4(m,h) в MathCAD

На рисунке 20 представлена реализация этого алгоритма в MathCAD.

Рис.21. Результаты работы функции fun4(m,h)

Результаты работы функции fun4 на 50 временных интервалах с шагом 1 и шагом 0.2, а также точное значение выручки представлены на рисунке 21.

Рис.22.   Нахождение момента максимальных продаж

На рисунке 22 в MathCAD реализовано нахождение момента максимальных продаж по полученным по методу сеток продажам (Вектор Pr3- с шагом 1, вектор Pr4-с шагом 0.2, вектор Prodaza1-точное решение дифференциального уравнения).

                                                                        a) f(0)=0.1                                                                                                                       б) f(0)=0.5

Рис.23. Функции распространения инноваций при различных начальных условиях.

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

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



Все статьи автора «Короткова Неля Николаевна»


© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте или через форму обратной связи.

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

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

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться: