Имитационное моделирование вероятностных автоматов

 

Для имитации процесса функционирования ВА необходимо задать:

- такты моделирования T, а также цикл по тактам моделирования от нуля до заданного числа тактов моделирования TZ;

- закон (правило) появления (генерации) входных параметров хtÎХ на входе ВА;

- модель функции переходов ||Р{zt(t)=z(t)/zt-1t}||;

- модель функции выходов ||Р(yt/zt-1t,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-1t,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(y1i(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.