Для имитации процесса функционирования ВА необходимо задать:
- такты моделирования T, а также цикл по тактам моделирования от нуля до заданного числа тактов моделирования TZ;
- закон (правило) появления (генерации) входных параметров хtÎХ на входе ВА;
- модель функции переходов ||Р{zt(t)=z(t)/zt-1,хt}||;
- модель функции выходов ||Р(yt/zt-1,хt,zt)||;
- определить счетчики для набора статистических данных.
Закон генерации входных параметров может быть задан в детерминированном виде и в виде стохастического распределения.
Детерминированный закон определяет детерминированные правила появления входного параметра х в такте моделирования T.
Стохастический закон появления входного параметра х в такте моделирования T представляет собой распределение вероятностей W=|w1,w2,…,wm|, где wi - вероятность появления входного параметра хi.
Структурная схема алгоритма имитационной модели ВА при стохастическом законе появления входного параметра х приведена на рис. 6.1.
Рис. 6.1
Подпрограмма WWOD, как интерфейсная часть, предназначена для ввода исходных данных для моделирования, определенных выше. Подпрограмма WIWOD составляет также интерфейсную часть имитационной модели и предназначена для вывода результатов моделирования. В подпрограмме GENZ0, исходя из значений вероятностей , генерируется в схеме случайных событий (см. разд. 4.4) начальное состояние z(t0) ВА. Алгоритм подпрограммы GENZ0 приведен на рис. 6.2.
Рис. 6.2
Работает алгоритм подпрограммы GENZ0 следующим образом. В блоке 1 вырабатывается датчиком случайных чисел число Р, равновероятно распределенное на отрезке [0,1]. В блоках 2 – 4 число Р сравнивается со значениями , , и т.д. При первом выполнении условия
Р<
считается, что начальным состоянием ВА является состояние zj. Выходным параметром подпрограммы GENZ0 является параметр J – индекс состояния zj.
В подпрограмме GENX, исходя из значений вероятностей w1,w2,…,wm, генерируется входной параметр х. Алгоритм подпрограммы GENX приведен на рис. 6.3.
Рис. 6.3
Алгоритм подпрограммы GENX подобен алгоритму подпрограммы GENZ0. Также в блоке 1 вырабатывается датчиком случайных чисел число Р. В блоках 2 – 4 число Р сравнивается со значениями: w1, w1+w2, w1+w2+w3 и т.д. При первом выполнении условия Р<w1+w2+…+wi считается, что на вход ВА поступает параметр хi. Выходным параметром подпрограммы GENX является параметр I - индекс хi.
Подпрограмму STATX можно реализовать в виде счетчика KX[I], в котором подсчитываются частоты появления входного параметра хi, а также заполнением массива WX[T], который затем будет выведен на экран дисплея и на печать. Алгоритм подпрограммы STATX приведен на рис. 6.4.
Рис. 6.4
В подпрограмме OPRZ, входными параметрами которой является индекс J предшествующего состояния и индекс I входного параметра, определяется состояние в текущем такте T согласно заданным вероятностям функции переходов ||Р{zt(t)=z(t)/zt-1хt}||. Алгоритм подпрограммы OPRZ приведен на рис. 6.5. Работает алгоритм подпрограммы OPRZ следующим образом. В блоке 1 вырабатывается датчиком случайных чисел число Р, равновероятно распределенное на отрезке [0,1].
В блоках 2 – 4 число Р сравнивается со значениями:
P(z1/zj(t-1),хi(t)), P(z1/zj(t-1),хi(t))+P(z2/zj(t-1),хi(t)),
P(z1/zj(t-1),хi(t))+P(z2/zj(t-1),хi(t))+P(z3/z3(t-1),хi(t)) и т.д.
При первом выполнении условия Р<P(z1/zj(t-1),хi(t))+P(z2/zj(t-1),хi(t))+…+P(zk/zj(t-1),хi(t)), считается, что ВА перешел в состояние zk. Таким образом, выходным параметром подпрограммы OPRZ является параметр K – индекс состояния zk. В подпрограмме STATZ в счетчиках KZ[K] подсчитываются частоты нахождения ВА в состояниях zk, а также заполнением массива WZ[T], в котором фиксируется последовательность появления состояний ВА.
Рис. 6.5
Состояние массива WZ[T] затем будет выведено на экран дисплея и на печать. Алгоритм подпрограммы STATZ полностью идентичен алгоритму подпрограммы STATX (см. рис. 6.4).
Подпрограмма OPRY предназначена для определения выходного параметра. Входными параметрами для этой подпрограммы являются:
- индекс J предшествующего состояния (состояния в такте (T-1);
- индекс I входного параметра в текущем такте T;
- индекс K состояния ВА в такте T.
Схема алгоритма подпрограммы OPRY зависит от задания функции переходов. Если функция переходов задана в виде матрицы ||Р(yt/zt-1,хt,zt)||, то схема алгоритма подпрограммы OPRY будет иметь вид, показанный на рис. 6.6.
Рис. 6.6
Отличительная особенность работы алгоритма подпрограммы OPRY состоит в том, что происходит в блоках 2 – 4 сравнение случайного числа Р со значениями:
P(y1/zl(t-1),хi(t)zk(t)),
P(y1/zl(t-1),хi(t)zk(t))+P(y2/zl(t-1),хi(t)zk(t)),
P(y1/zl(t-1),хi(t)zk(t))+P(y2/zl(t-1),хi(t)zk(t))+
+P(y3/zl(t-1),хi(t)zk(t)) и т.д.
При первом выполнении условия
Р<P(y1/zl(t-1),хi(t)zk(t))+P(y2/zl(t),хi(t)zk(t))+…+
+P(yl/zl(t-1),хi(t)zk(t))
считается, что ВА имеет на выходе выходной параметр yl. Таким образом, выходным параметром подпрограммы OPRY является параметр L – индекс выходного параметра yl ВА.
Если функция выходов ВА задана в виде матрицы ||Р(yt/zt-1,zt)||, то в блоке 3 подпрограммы OPRY переменная D определяется как D=D+P[J,I]. В блоках 2 – 4 происходит сравнение случайного числа Р со значениями:
P(y1/zl(t-1),хi(t)), P(y1/zl(t-1),хi(t))+P(y2/zl(t-1),хi(t)),
P(y1/zl(t-1),хi(t))+P(y2/zl(t-1),хi(t))+P(y3/zl(t-1),хi(t))) и т.д.
При первом выполнении условия
Р<P(y1/zl(t-1),хi(t))+P(y2/zl(t-1),хi(t))+…+P(yl/zl(t-1),хi(t)),
считается, что на выходе ВА выходной параметр yl. Выходным параметром подпрограммы OPRY является L.
Если функция выходов ВА задана в виде матрицы ||Р(yt/,хt,zt)||, то в блоке 3 подпрограммы OPRY переменная D определяется как D=D+P[I,K]. В блоках 2 – 4 происходит сравнение случайного числа Р со значениями:
P(y1/хi(t),zk(t)), P(y1//хi(t),zk(t))+P(y2//хi(t),zk(t)),
P(y1//хi(t),zk(t))+P(y2//хi(t),zk(t))+P(y3//хi(t),zk(t)) и т.д.
При выполнении условия
Р<P(y1//хi(t),zk(t))+P(y2//хi(t),zk(t))+…+P(yl//хi(t),zk(t))
считается, что на выходе ВА выходной параметр yl.
Алгоритм подпрограммы STAT приведен на рис. 6.7.
Рис. 6.7
В подпрограмме STATY в счетчиках KY[L] подсчитываются частоты появления на выходе ВА параметра yl, В массиве WY[T] фиксируется последовательность выходных параметров yl. Состояние массива WY[T] затем будет выведен на экран дисплея и на печать. В блоке 3 определяется индекс состояния zj(t+1)=zk(t), (J=K), т.к. состояние ВА zk(t) в текущем такте T будет рассматриваться как предшествующее состояние для последующего такта T+1.