51308

Построить граф состояний P-схемы

Лабораторная работа

Информатика, кибернетика и программирование

Для СМО из задания 1 построить имитационную модель и исследовать ее (разработать алгоритм и написать имитирующую программу, предусматривающую сбор и статистическую обработку данных для получения оценок заданных характеристик СМО). Распределение интервалов времени между заявками во входном потоке и интервалов времени обслуживания

Русский

2014-02-10

206 KB

35 чел.

Белорусский государственный университет

информатики и радиоэлектроники

Кафедра ПОИТ

Отчет

по лабораторной работе №3

Проверил: Выполнил:

Мельник Н.И. студент группы 950503

Реуцкий В.В.

Минск 2012 г.


Задание

Задание 1. Построить граф состояний P-схемы .

 Смысл кодировки состояний раскрыть (время до выдачи заявки, число заявок в накопителе и т.д.).

На схеме условно обозначены:

23.

По графу построить аналитическую модель и, решив ее, определить вероятности состояний. Рассчитать теоретическое значение показателя эффективности, заданного целью исследования задания 2.

Задание 2. Для СМО из задания 1 построить имитационную модель и исследовать ее (разработать алгоритм и написать имитирующую программу, предусматривающую сбор и статистическую обработку данных для получения оценок заданных характеристик СМО). Распределение интервалов времени между заявками во входном потоке и интервалов времени обслуживания – геометрическое с соответствующим параметром (ρ, π1, π2). Если ρ не задано, то входной поток – регулярный.

23

---

0,4

0,5

А, Lоч


Граф СМО:


Расчёт параметров:

Абсолютная пропускная способность:

Средняя длина очереди:


Имитация работы СМО:

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 ModLab3

{

   public partial class Form1 : Form

   {

       private int N;

       private double pi1;

       private double pi2;

       private string[] conditions = {"2 0 0 0", "1 0 0 0", "2 1 0 0", "1 1 0 0", "1 0 0 1", "0 1 0 0", "2 1 0 1", "1 0 1 1", "1 1 0 1",

                                      "1 0 2 1", "0 1 2 1", "0 1 0 1", "0 1 1 1", "2 1 2 1", "2 1 1 1", "1 1 1 1", "1 1 2 1",

                                     };        

       private List<string> condLog;

       

       public Form1()

       {

           InitializeComponent();

       }

       private void button1_Click(object sender, EventArgs e)

       {

            try

           {

               N = int.Parse(tbN.Text);

               pi1 = double.Parse(tbP1.Text);

               pi2 = double.Parse(tbP2.Text);

           }

           catch (Exception ex)

           {

               MessageBox.Show("Ошибка: " + ex.Message);

               return;

           }

/*1 2000*/  double[,] chances = {  { -1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},

/*2 1000*/                         { -1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},

/*3 2100*/                         { -1,-1,-1,1-pi1,pi1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},

/*4 1100*/                         { -1,-1,-1,-1,-1,1-pi1,pi1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},

/*5 1001*/                         { -1,-1,1-pi2,-1,-1,-1,pi2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},

/*6 0100*/                         { -1,-1,-1,-1,-1,pi1,1-pi1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},

/*7 2101*/                         { -1,-1,-1,pi1*(1-pi2),(1-pi1)*(1-pi2),-1,-1,(1-pi1)*pi2,pi1*pi2,-1,-1,-1,-1,-1,-1,-1,-1},

/*8 1011*/                         { -1,-1,-1,-1,-1,-1,1-pi2,-1,-1,-1,-1,-1,-1,-1,pi2,-1,-1},

/*9 1101*/                         { -1,-1,-1,-1,-1,pi1*(1-pi2),(1-pi1)*(1-pi2),-1,-1,-1,-1,pi1*pi2,-1,-1,(1-pi1)*pi2,-1,-1},

/*10 1021*/                        { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,pi2,1-pi2,-1,-1},

/*11 0121*/                        { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(pi1*pi2+(1-pi1)*pi2),-1,pi1*(1-pi2),(1-pi1)*(1-pi2),-1,-1,-1},

/*12 0101*/                        { -1,-1,-1,-1,-1,pi1*(1-pi2),(1-pi1)*(1-pi2),-1,-1,-1,-1,pi1*pi2,-1,-1,(1-pi1)*pi2,-1,-1},

/*13 0111*/                        { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,pi1*(1-pi2),pi1*pi2,(1-pi1)*pi2,(1-pi1)*(1-pi2),-1,-1},

/*14 2121*/                        { -1,-1,-1,-1,-1,-1,-1,-1,-1,(1-pi1)*(1-pi2),-1,-1,-1,-1,-1,pi1*(1-pi2),(pi1*pi2+(1-pi1)*pi2)},

/*15 2111*/                        { -1,-1,-1,-1,-1,-1,-1,(1-pi1)*(1-pi2),pi1*(1-pi2),(1-pi1)*pi2,-1,-1,-1,-1,-1,pi1*pi2,-1},

/*16 1111*/                        { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,pi1*(1-pi2),pi1*pi2,(1-pi1)*pi2,(1-pi1)*(1-pi2),-1,-1},

/*17 1121*/                        { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(pi1*pi2 + (1-pi1)*pi2),-1,pi1*(1-pi2),(1-pi1)*(1-pi2),-1,-1,-1},

                               };

           string curCond = "2 0 0 0";

           double A = new double();

           double L = new double();

           condLog = new List<string>();

           condLog.Add("2 0 0 0");

           int condNumber = 0; // номер состояния в массиве состояний

           Random rnd = new Random();

           int[] pCount = new int[17]; //подсчет нахождений в каждом из состояний

           pCount[condNumber]++;

           for (int i = 0; i < N; i++)

           {

               double buf = rnd.NextDouble();

               for (int j = 0; j < 17; j++)

               {

                   if (chances[condNumber, j] != -1)

                       buf -= chances[condNumber, j]; //отнимаем вероятности пока не найдем то что выдал рандом

                   if (buf <= 0)

                   {

                       int lastCondNumber = condNumber;

                       condNumber = j;

                       L += double.Parse(conditions[condNumber].ElementAt(4).ToString());

                       if (conditions[condNumber].ElementAt(6) == '0')

                       {

                           if (conditions[lastCondNumber].ElementAt(6) == '1')

                           {

                               A++;

                           }

                       }

                       break;

                   }

               }

               curCond = conditions[condNumber];

               pCount[condNumber]++;

               condLog.Add(curCond);             

           }

           double[] pChances = new double[17]; // вероятности каждого состояния

           for (int i = 0; i < 17; i++)

           {

               pChances[i] = (double)pCount[i] / (double)N;

           }

           lbP.Items.Add("P2000 = " + pChances[0].ToString());

           lbP.Items.Add("P1000 = " + pChances[1].ToString());

           lbP.Items.Add("P2100 = " + pChances[2].ToString());

           lbP.Items.Add("P1100 = " + pChances[3].ToString());

           lbP.Items.Add("P1001 = " + pChances[4].ToString());

           lbP.Items.Add("P0100 = " + pChances[5].ToString());

           lbP.Items.Add("P2101 = " + pChances[6].ToString());

           lbP.Items.Add("P1011 = " + pChances[7].ToString());

           lbP.Items.Add("P1101 = " + pChances[8].ToString());

           lbP.Items.Add("P1021 = " + pChances[9].ToString());

           lbP.Items.Add("P0121 = " + pChances[10].ToString());

           lbP.Items.Add("P0101 = " + pChances[11].ToString());

           lbP.Items.Add("P0111 = " + pChances[12].ToString());

           lbP.Items.Add("P2121 = " + pChances[13].ToString());

           lbP.Items.Add("P2111 = " + pChances[14].ToString());

           lbP.Items.Add("P1111 = " + pChances[15].ToString());

           lbP.Items.Add("P1121 = " + pChances[16].ToString());

           A /= (double)N;

           L /= (double)N;

           lA.Text = "A = " + A.ToString();

           lL.Text = "L = " + L.ToString();

           foreach (string str in condLog)

           {

               lbLog.Items.Add(str);

           }

       }

   }

}


 

А также другие работы, которые могут Вас заинтересовать

52269. Методи та прийоми пошуку розв’язання текстових задач з математики 174 KB
  Навчальна програма факультативного курсу Тема Методи та прийоми пошуку розв’язання текстових задач з математики для учнів 6 класу загальноосвітніх шкіл 2010 рік Автор чи укладач __Сторожук Валентина Миколаївна вчитель математики загальноосвітньої школи ІІІ ступенів №12 м. Науковометодична експертиза обласного центру практичної психології : тільки для програм з психології _________________________________________________________________________...
52270. Правила дорожнього руху 204 KB
  ТЕМА УРОКУ: Заборонні знаки. Які у вас існують асоціації спочатку діти висловлюють найстійкіші асоціації Закон України Про дорожній рух Учасники дорожнього руху правила дорожнього руху дорожні знаки а потім – другорядні попереджувальні пріоритету забороні. Яку тему ми розпочали вивчати на минулому уроці Прогнозована відповідь: Забороні дорожні знаки. Кожен з вас обирає цифру під якою ховається запитання з теми Забороні дорожні знаки і надає усну відповідь.
52271. Азбука юного гражданина. Своя игра 45 KB
  Оборудование: иллюстративный материал видеофильм Народні свята Гимн Украины выставка книг по теме таблица экран флажки разных стран. Едины мы в своем стремленьи: Пусть это будет на века Трезубец в гербе Украины – Страны любимой нашей лик. Беседа Что мы называем домом для народа Как называется наше государство Назовите столицу Украины. Можно включить фонограмму 50 Когда была принята Конституция Украины 28 июня 1996г.
52272. Азбука міста 75.5 KB
  Ведучий Дорогі діти сьогодні ви побуваєте на веселому святі де будемо вивчати дорожні знаки та правила вуличного руху. Діти Устає над містом сонце Будить все довкола Зазирає у віконце Кличе нас до школи. У зал заходить Баба Яга Баба Яга Фу фу фу Нас учили в школі Потягується ліниво Не спішіть ніко о о о ли Діти діти айайай Добрий день вам зазвичай Та чому смієтесь ви Не впізнали ви Яги Я колись була весела А тепер ось не до сміху Бо не можу вже вільно літати Знаки на моїй дорозі стали пропадати. Нову...
52273. Профессиональная азбука духовности 81 KB
  Установочномотивационный этап 5 мин Осмысление поставленных задач формирование установки на сотрудничество. Ситуация для группы Мир Труд не позорит человека: к несчастью иногда попадают люди позорящие работу. Вспомните и запишите поговорки пословицы о труде и изобразите их в виде рисунка. Бенчли Великая радость – работа В полях за станком за столом Работай до жаркого пота Работай без лишнего счета Все счастье земли – за трудом В.
52274. Азбуку міста вивчай до ладу, щоб не потрапити раптом в біду 285.5 KB
  Приспів: На дорозі не спіши Щоб не трапилось біди. Світлофор не спить і не дріма До порядку на дорозі всіх нас кличе. На дорозі зупинись Вліво вправо подивись Чемним будь ти у автобусі й трамваї. Я друзі гарно прогулявся Там де машини так награвся Я немаленький вже на зріст До того ж маю гарний хвіст Нікого слухать не збираюсь Бо я дорослий і на дорозі часто граюсь.
52275. Весела нотна азбука 247.5 KB
  Вміння співати по нотах сприяє розвитку музичних здібностей дітей. Навчання молодших школярів музичної грамоти передбачає такі завдання: – розвинути музичні здібності дітей: ладове чуття музичнослухові уявлення музичноритмічне чуття чуття цілого форми; – дати основи нотної грамоти яка є складовою музичної грамоти навчити дітей розуміти нотний запис і сформувати вміння співати по нотах; – сформувати уявлення про елементи музичної мови засоби музичної виразності та музичні явища; – навчити розуміти ідейнохудожній зміст музичних...
52276. Повторювально-узагальнюючий урок за темою: «Передня Азія» 40 KB
  Назвати річки що протікають через Межерічча. Назвати та показати місто яке називали Ворота Божі. Назвати військову державу що розташована у верхній течії р. Назвати столицю Ассирійської імперії яку називали містом крові.
52277. Уроки державної мови 5.42 MB
  Ось що радить доктор філологічних наук Світлана Єрмоленко. У мовній практиці часом використовують ці лексеми як взаємозамінні. Але взаємозамінність у термінологічних висловах – річ небажана, і зрештою в кожному конкретному звороті утворюється якесь одне термінологічне слово, а інші, якщо вони не мають додаткових значеннєвих відтінків, виходять із літературно-нормативного вжитку.