Для их нахождения сделаем дополнительное допущение о том, что на первых двух отрезках обучение отсутствует, т. е. весовой коэффициент
= 0. Без учета случайностей цена на 2-м отрезке определится по формулеР2 = (А - С - Е * Р1) / В. | (8) |
Если предположить, что перед началом работы фирмы исходная цена совпадает с ценой на 1-м отрезке, то величина P1 определится по формуле
Р1 = (А – С) / (В + Е). | (9) |
Задача моделирования заключается в исследовании влияния параметров системы на характер зависимости цены от времени.
3. СХЕМЫ АЛГОРИТМОВ МОДЕЛИ
В качестве языка программирования для разработки компьютерной модели рассматриваемого процесса можно выбрать VisualBasic. Один из возможных вариантов общего вида (макета) стартовой формы состоит из 8 текстовых полей для ввода и корректировки исходных данных (параметров А, В, С, Е, Ro, SigU, SigV и SigW) в верхней части окна. В нижней части окна располагаются три командные кнопки. Кнопка "Расчет" предназначена для проведения расчетов. Кнопка "График" служит для построения в центральной части окна графика зависимости цены от времени. Кнопка "Выход" используется при окончании работы с программой.
Схема алгоритма процедур обработки прерываний показана на рис. 1. После подачи команды Start на экране появляется активная стартовая форма. С этого момента программа находится в режиме ожидания действий пользователя.
Рисунок1
Цифрой 1 на схеме обозначено действие пользователя, которое заключается в корректировке исходных данных. Измененные данные заносятся в соответствующие текстовые поля. При этом они фиксируются в памяти не как числа, а как значения символьных переменных. Цифрой 2 на схеме обозначено действие пользователя, которое заключается в нажатии командной кнопки "Расчет". В результате вызывается одна из так называемых процедур прерываний. Внутри этой процедуры оператор 3 производит преобразование символьных данных в числовые.
Затем оператор 4 обращается к программному модулю общего назначения "Model 1", который производит расчет массива значений цен как функций времени. После окончания работы программного модуля оператор 5 делает кнопку "Расчет" неактивной, а оператор 6 активизирует кнопку "График". Одновременно производится очистка части стартовой формы, которая отведена для построения графика.
Цифрой 7 на схеме обозначено действие пользователя, которое заключается в нажатии кнопки "График" (если она активна). В результате группа операторов 8 обеспечивает построение в центре стартовой формы графика зависимости текущей цены на продукт от времени. Затем оператор 9 делает кнопку "График" неактивной, а оператор 10 вновь активизирует кнопку "Расчет".
Числом 11 на схеме обозначено действие пользователя, которое заключается в нажатии кнопки "Выход". В этом случае работа программы заканчивается.
Схема алгоритма модуля "Model 1" показана на рис. 2.
4
1
5
2
3
6
Рис. 2. Схема алгоритма модуля "Modell"
Внутри этого модуля группа операторов 1 определяет цены для 1-го и 2-го отрезков времени по формулам (8) и (9). Оператор 2 является началом циклического перебора временных отрезков, начиная с 3-го и заканчивая последним ТК-М
Группа операторов 3 вырабатывает три возможных значения эталонной (нормированной и центрированной) случайной величины ή с нормальным распределением, которые используются группой операторов 4 для расчета возможных значений случайных переменных UT, VT, WT с заданными СКО.
Оператор 5 осуществляет расчет выходной переменной РТ по формуле (7), Оператор 6 подготавливает новые значения переменных РТ-1 и РТ-2 для расчета РТ на следующем временном отрезке (следующем витке цикла).
4. ПРИМЕР РЕШЕНИЯ ЗАДАЧИМОДЕЛИРОВАНИЯ
Примем следующие входные данные:
TK = 30; A = 10; В =5; С = 3;
= 0.2; σu = 0.1; σv== 0.1; σw = 0.1; Мu = 0; Mv = 0; Мw. =0,Для варьируемой переменной Е выберем значения: 4; 5; 5,5. Результаты моделирования представлены графиком:
Рис.6. Зависимость цены от времени при Е=6 и В = 5
Анализ результатов моделирования показывает, что зависимость цены товара Р от времени имеет колебательный характер и зависит от соотношения параметров Е и В.
Если Е < В, то колебания незначительны, если Е = B, то колебания имеют постоянную амплитуду, а если Е > В, то амплитуда колебаний имеет тенденцию к безграничному возрастанию. Однако по физическим соображениям цена не может быть отрицательной, С учетом этого ограничения возрастание амплитуды происходит до тех пор, пока не начнут появляться нулевые значения цены. После этого колебания стабилизируются.
5. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
Для рассматриваемой модели целесообразно совместить табличное представление исходных данных с графическим представлением результатов расчетов.
Задание
Создайте программу для "Паутинообразной модели фирмы".
Произведите проверку программы расчетом. Подставьте те же исходные данные, которые были выбраны в приведенном выше примере. Убедитесь в том, что результаты расчетов практически совпадают.
Произведите самостоятельное исследование закономерностей функционирования фирмы с помощью алгоритмической модели. Самостоятельно выберите исходные данные, проведите расчеты и проанализируйте результаты моделирования.
ПРОГРАММА "ПАУТИНООБРАЗНОЙ" МОДЕЛИ НА ЯЗЫКЕ VISUALBASIC 5.0 и выше.
Объект | Свойства | Установки |
Форма | NameCaption | frmForm 1 Паутинообразная модель |
Метка 1 | NameCaption | IbllnputDat Измените исходные данные и нажмите кнопку <Расчет> |
Командная кнопка 1 | NameCaption | cmdRashet Расчет |
Команднаякнопка 2 | Name Caption Enabled | CmdGrafic ГрафикFalse |
Команднаякнопка 3 | Name Caption | CmdExit Выход |
Процедурыобработкипрерываний
Private Sub cmdExit_Click()
End
End Sub
Private Sub cmdGrafic_Click()
Line (600, 3500)-(6600, 3500)
Line (600, 3500)-(600, 1500)
My = 1000
X1 = 600: Y1 = 3500 - P(1) * My
Dx = 100
S = 0: For j = 1 To Tk: S = S + P(j): Next
Pcp = S / Tk
CurrentX = 500: CurrentY = 1500: Print "P"
CurrentX = 6500: CurrentY = 3500: Print "T"
CurrentX = 650: CurrentY = 3300 - Pcp * My
Print "Pcp"
Xk = 600 + Tk * Dx: Ycp = 3500 - Pcp * My
'Form1.ForeColor = 98765
Line (X1, Ycp)-(Xk, Ycp)
For j = 1 To Tk - 1
X2 = X1 + Dx: Y2 = 3500 - P(j) * My
Line (X1, Y1)-(X2, Y2)
X1 = X2: Y1 = Y2
Next j
End Sub
Private Sub cmdRashet_Click()
A = Val(Text1): B = Val(Text2): C = Val(Text3)
E = Val(Text4): Ro = Val(Text5): Su = Val(Text6)
Sv = Val(Text7): Sw = Val(Text8)
Mu = 0: Mv = 0: Mw = 0
Call Model1
Cls
End Sub
Private Sub Form_Load()
frmForm.Show: Cls
End Sub
Модуль общего назначения Model1
Public Const Tk = 30
Public P(Tk) As Single
Public T As Integer, i As Integer, j As Integer
Public A, B, C, E, Ro, Su, Sv, Sw, Mu, Mv, Mw, Et
Public Sub Model1()
P(l) = (A - C) / (B + E)
P(2) = (A - C) / B - E / B * P(1)
For T = 3 To Tk
For j = 1 To 3
Et = 0
For i = 1 To 12
Et = Et + Rnd
Next
If j = 1 Then Ut = Mu + (Et - 6) * Su
If j = 2 Then Vt = Mv + (Et - 6) * Sv
If j = 3 Then Wt = Mw + (Et - 6) * Sw
Next
DP = P(T - 1) - P(T - 2)
P(T) = (A - C - E * (P(T - 1) - Ro * DP) + Ut + Wt - Vt) / B
If P(T) < 0 Then P(T) = 0
P(T - 2) = P(T - 1): P(T - 1) = P(T)
Next
End Sub