Імітаційне моделювання процесу функціонування скінченого дискретного стохастичного автомата

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра автоматизованих систем управління

Інформація про роботу

Рік:
2012
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інформаційні технології

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ Національний університет “Львівська політехніка” Інститут Комп’ютерних наук та інформаційних технологій Кафедра автоматизованих систем управління  Звіт до лабораторної роботи № 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 і має вигляд , а перший стовпчик буде нульовим. З точки зору математичного апарату цей автомат еквівалентний дискретному марківському ланцюгу. Варіант 38 Z0 Z1 Z2 Z3 Z4 Z5  0 1 1 1 0 0    z0 z1 z2 z3 z4 z5    z0 0 0,3 0,2 0,5 0 0    z1 0 0,5 0,2 0,3 0 0    z2 0 0 0 0 0,5 0,5   p = z3 0 0,1 0,1 0,3 0,5 0    z4 0 0 0 0,2 0 0,8    z5 0 0 0 0 1 0    Оскільки фінальні ймовірності не залежать від стану z0, то ймовірність знаходження в станах z1, z2, z3, z4 можна знайти з матричного рівняння:  z0 z1 z2 z3 z4 z5    z0 0 0,3 0,2 0,5 0 0    z1 0 0,5 0,2 0,3 0 0    z2 0 0 0 0 0,5 0,5   p = z3 0 0,1 0,1 0,3 0,5 0    z4 0 0 0 0,2 0 0,8    z5 0 0 0 0 1 0    C = (C0,C1,C2,C3,C4,C5) 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= 1 - умова нормування. c1 = 0,2c3; c2 = 0,34c3; c3 = 0,06 c3 + 0,3 c3+ 0,2 c4; => 0,64c3=0,2c4; c4 = 3,2 c3; c5 = 2,73 c3 ; 7,47 c3 = 1 => c1 = 0,03 c2 = 0,04 c3 = 0,13 c4 = 0,42 c5 = 0,38 Текст програми Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace Lab3_System_Modelling { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } Form.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Lab3_System_Modelling { public partial class Form1 : Form { int kStates = 6; int kTakt = 10; double[,] P = { {0, 0.3, 0.2, 0.5, 0, 0 }, {0, 0.5, 0.2, 0.3, 0, 0 }, {0, 0, 0, 0, 0.5, 0.5}, {0, 0.1, 0.1, 0.3, 0.5, 0 }, {0, 0, 0, 0.2, 0, 0.8}, {0, 0, 0, 0, 1, 0 } }; int[] Z = { 0, 1, 1, 1, 0, 0 }; double[,] B = new double[10,10]; double[] C = new double[10]; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { fill_p(); fill_zy(); fill_b(); textBox1.Text = "10"; } //FILL P Matrix void fill_p() { dataGridView1.Rows.Add(kStates); for (int i = 0; i < kStates; i++) for (int j = 0; j < kStates; j++) { B[i, j] = 0; C[i] = 0; } for (int i = 0; i < kStates; i++) { dataGridView1.Rows[i].Cells[0].Value = "Z" + i; for (int j = 0; j < kStates; j++) dataGridView1.Rows[i].Cells[j + 1].Value = P[i,j]; } } void fill_zy() { for (int i = 0; i < kStates; i++) dataGridView2.Rows[0].Cells[i].Value = Z[i]; } void fill_b() { dataGridView3.Rows.Add(kStates); for (int i = 0; i < kStates; i++) { dataGridView3.Rows[i].Cells[0].Value = "Z" + i; for (int j = 0; j < kStates; j++) dataGridView3.Rows[i].Cells[j + 1].Value = 0; } } private void button1_Click(object sender, EventArgs e) { try { kTakt = Int32.Parse(textBox1.Text); Random rand = new Random(); //Filling for (int i = 0; i < kStates; i++) for (int j = 0; j < kStates; j++) { B[i, j] = 0; C[i] = 0; } //////////////////// int curr = 0; double py = 0; for (int i = 0; i < kTakt; i++) { int j = 0; double sum = 0; double temp = Math.Round(rand.NextDouble(),1); for (j = 0;j < kStates; j++) { if (temp < sum) break; sum += P[curr, j]; } B[curr, j - 1]++; curr = j - 1; } for (int i = 0; i < kStates; i++) { for (int j = 0; j < kStates; j++) C[i] += B[j,i]; C[i] /= kTakt; py += Z[i] * C[i]; } ///// for (int i = 0; i < kStates; i++) { dataGridView4.Rows[0].Cells[i].Value = C[i]; for (int j = 0; j < kStates; j++) { dataGridView3.Rows[i].Cells[j+1].Value = B[i, j]; } } ///// //last double tempSum = 0; for (int i = 0; i < kStates; i++) { if (Z[i] == 1) tempSum += C[i]; } label8.Text = ""+tempSum; } catch(Exception err){ MessageBox.Show(err.Message); } } } } Результат виконання програми  Висновок: На цій лабораторній роботі я вивчив процес функціонування дискретного скінченого стохастичного автомата та знайшов його ймовірностні характеристики за даними експерименту.
Антиботан аватар за замовчуванням

20.02.2013 20:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!