МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
Національний університет “Львівська політехніка”
Інститут Комп’ютерних наук та інформаційних технологій
Кафедра автоматизованих систем управління
Звіт
до лабораторної роботи № 3
з курсу «Моделювання систем»
на тему: «Імітаційне моделювання процесу функціонування скінченого дискретного стохастичного автомата»
Мета роботи: вивчити процес функціонування дискретного скінченого стохастичного автомата та знайти його ймовірностні характеристики за даними експерименту.
Короткі теоретичні відомості
У загальному випадку ймовірнісний автомат являє собою дискретний потактний перетворювач інформації з пам’яттю, функціонування якого в кожному такті залежить лише від стану пам’яті і може бути описаний статистично.
Застосування схем ймовірнісних автоматів (Р-схем) має важливе значення для розвитку методів проектування дискретних систем, які виявляють статистично закономірну поведінку, обгрунтування алгоритмічних можливостей таких систем та доцільності їх використання, а також для розв’язування задач синтезу дискретних стохастичних систем за обраним критерієм з урахуванням обмежень.
У загальному випадку ймовірнісний автомат являє собою дискретний потактний перетворювач інформації з пам’яттю, функціонування якого в кожному такті залежить лише від стану пам’яті і може бути описаний статистично.
Застосування схем ймовірнісних автоматів (Р-схем) має важливе значення для розвитку методів проектування дискретних систем, які виявляють статистично закономірну поведінку, обгрунтування алгоритмічних можливостей таких систем та доцільності їх використання, а також для розв’язування задач синтезу дискретних стохастичних систем за обраним критерієм з урахуванням обмежень.
Розглянемо більш загальну математичну схему. Нехай Ф - множина різноманітних пар виду , де yj - елемент Y. Поставимо вимогу, щоб довільний елемент множини G спричиняв на множині Ф деякий закон розподілу:
Елементи з Ф
(xi,zs) b11 b12 ... bk,j-1 bkj
При цьому , bkj - ймовірності переходу автомата в стан Zk та генераці вихідного сигналу yj, якщо він знаходився в стані Zs та на його вхід в цей момент прийшов сигнал xi.
Число таких розподілів, які подаються у вигляді таблиць, дорівнює числу елементів множини G. Позначимо множину таких таблиць В і отримаємо опис стохастичного дискретного автомата в вигляді четвірки .
Окремий випадок Р-автомата - це автомат, у якого перехід в новий стан або вихідний сигнал визначаються детерміновано. В першому випадку такий автомат називається Z-детермінованим стохастичним автоматом, в другому - Y-детермінованим.
Розглянемо Y-детермінований P-автомат, який заданий таблицею переходів та виходів:
Таблиця переходів Y-детермірнованого Р-автомата
Zk
Zk
Z1
Z2
...
Zk-1
Zk
Z1
Z2
...
Zk
p11
p21
...
pk1
p12
p22
...
pk2
...
...
...
...
p1(k-1)
p2(k-1)
...
pk(k-1)
p1k
p2k
...
pkk
Таблицю переходів можна в цьому випадку представити у вигляді квадратної матриці перехідних ймовірностей Р:
.
При цьому має виконуватися умова, що .
Для повного опису Y-детермінованого Р-автомата необхідно також визначити початковий розподіл ймовірностей виду
де dk - ймовірність того, що на початку роботи Р-автомат знаходиться в стані Zk.
До початку функціонування Р-автомат знаходиться в стані Z0 і в нульовий такт часу змінює стан згідно з розподілом D. Подальший процес зміни станів автомата визначається матрицею переходів Р. Можливе також введення інформації про початковий стан в матрицю Р шляхом збільшення її розмірності на одиницю до . Перший рядок цієї матриці відповідає початковому стану Z0 і має вигляд , а перший стовпчик буде нульовим.
З точки зору математичного апарату цей автомат еквівалентний дискретному марківському ланцюгу.
Варіант 31
Z0
Z1
Z2
Z3
Z4
Z5
Z6
Z7
0
1
0
1
0
1
0
0
P=
Z0
Z1
Z2
Z3
Z4
Z5
Z6
Z7
Z0
0
0
0.1
0.2
0.7
0
0
0
Z1
0
0
0.6
0.4
0
0
0
0
Z2
0
0
0.4
0
0
0
0.6
0
Z3
0
0.5
0
0
0.4
0
0
0.1
Z4
0
0
0
0.2
0
0.5
0
0.3
Z5
0
0
0
0
0
0.3
0.7
0
Z6
0
0
0
0
1
0
0
0
Z7
0
0
0
0.9
0
0
0
0.1
Оскільки фінальні ймовірності не залежать від стану z0, то ймовірність знаходження в станах z1, z2, z3, z4 можна знайти з матричного рівняння:
C =(C1,C2,C3,C4,C5,C6,C7)
c1 = 0,5 c1 +0,1 c3 ;
c2 = 0,2c1 + 0,1 c3;
c3 = 0,3 c1+ 0,3 c3+ 0,2 c4;
c4 = 0,5 c2 + 0,5 c3 +c5;
c5 = 0,5 c2 + 0,8 c4;
c1 + c2 + c3 + c4 + c5 + c6+c7= 1 - умова нормування.
c1 = 0,5c3;
c2 = 0.6c1+0.4c2;
c3 = 0.4c1 + 0,2 c4;
c4 = 0.4 c3+c6;
c5 = 0.5 c4 ;
c6=0.6c2+0.7c5;
c7=0.1c3+0.3c4+0.1c7;
12,8287 c2 = 1 =>
c1 = 0,07795
c2 = 0,07795
c3 = 0,1559
c4 = 0,18708
c5 = 0,2427
c6= 0.1697
c7= 0.0886
Текст програми
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
StringGrid4: TStringGrid;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
kStates,kTakt,i,j,k,rand,curr:integer;
z:array [0..7] of integer =(0,1,0,1,0,1,0,0);
b:array [0..7,0..7] of double;
c:array [0..7] of double;
p:array [0..7,0..7] of double=((0,0,0.1,0.2,0.7,0,0,0),(0,0,0.6,0.4,0,0,0,0),(0,0,0.4,0,0,0,0.6,0),(0,0.5,0,0,0.4,0,0,0.1),(0,0,0,0.2,0,0.5,0,0.3),(0,0,0,0,0,0.3,0.7,0),(0,0,0,0,1,0,0,0),(0,0,0,0.9,0,0,0,0.1));
py,sum,temp,tempSum:double;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
kstates:=7;
ktakt:=10;
for i:= 0 to kStates do
for j:=0 to kStates do
begin
B[i, j]:= 0;
C[i]:= 0;
end;
for i:=0 to kStates do
begin
StringGrid1.Cells[i, 0]:='z'+inttostr(i);
for j:=0 to kStates do
StringGrid1.Cells[i,j+1]:=floattostr(P[i,j]);
end;
for i:=0 to kStates do
StringGrid3.Cells[i,0]:='z'+inttostr(i);
for i:=0 to kStates do
StringGrid3.Cells[i,1]:=floattostr(z[i]);
for i:= 0 to kStates do
begin
StringGrid2.Cells[i,0]:='z'+inttostr(i);
for j:=0 to kStates do
StringGrid2.Cells[i, j+1]:='0';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
kTakt := StrToInt(edit1.text);;
for i:=0 to kStates do
for j:=0 to kStates do
begin
B[i, j] := 0;
C[i] := 0;
end;
curr:=0;
py:=0;
for i:= 0 to kTakt do
begin
j:= 0;
sum:= 0;
temp := random ;
for j :=0 to kStates do
begin
if temp < sum then
break;
sum := sum+P[curr, j];
end;
B[curr, j - 1]:=B[curr, j - 1]+1;
curr:=j- 1;
end;
for i:=0 to kStates do
begin
for j:=0 to kStates do
C[i]:=C[i]+ B[j,i];
C[i]:= c[i]/kTakt;
py := py+Z[i] * C[i];
end;
for i:=0 to kStates do
begin
StringGrid4.Cells[i,0]:=floattostr(c[i]);
for j:=0 to kStates do
begin
StringGrid2.Cells[j+1,i]:=floattostr(b[i,j]);
end;
end;
tempSum:= 0;
for i:=0 to kStates do
begin
if Z[i] = 1 then
tempSum:=tempsum+ C[i];
end;
label4.caption:=FloatToStr(tempSum);
end;
end.
Результат виконання програми
Висновок: На цій лабораторній роботі я вивчив процес функціонування дискретного скінченого стохастичного автомата та знайшов його ймовірностні характеристики за даними експерименту.