51308

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

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

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

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

Русский

2014-02-10

206 KB

49 чел.

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

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

Кафедра ПОИТ

Отчет

по лабораторной работе №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);

           }

       }

   }

}


 

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

66434. Акцизний збір в системі платежів в державний бюджет України 331 KB
  Необхідність збільшення податків і в той же час справедливого їх розподілу ставить державу перед складною дилемою: економічна ефективність чи справедливість? Оптимальне поєднання й урахування цих аспектів - неодмінна умова гармонійності податкової політики.
66435. Методика обліку і організація аналізу і аудиту виробничих запасів підприємства (ТзОВ „Уніплит”) 860.5 KB
  Теорикоекономічна сутність виробничих запасів та їх характеристика як обєкту обліку та аудиту Економічна сутність запасів та іх класифікація Оцінка виробничих запасів для цілей обліку Нормативноправова база з обліку та аудиту виробничих запасів Загальноекономічна характеристика ТзОВ...
66436. Облік і аудит основних засобів на ЗАТ „Лукор” 511.5 KB
  Методика обліку нематеріальних активів Визнання нематеріальних активів Відповідно до ПБО 8 нематеріальними вважаються немонетарні активи які: не мають матеріальної форми; не можуть бути ідентифіковані; утримуються підприємством з метою використання протягом періоду більше одного року...
66437. Поняття модернізму і постмодернізму в українському літературознавстві 249 KB
  Об’єктом дослідження стали два потужних явища літератури: модернізм і постмодернізм. Зважаючи на усталеність і визнаність їх у світовому літературному процесі, прагнемо “узаконити” їх в українській літературі, оскільки ще точаться суперечки щодо правомірності вживання термінів...
66438. Стан та перспективи розвитку управлінського консультування на підприємствах України 747.5 KB
  У практичній частині проведений аналіз тенденцій консалтингового забезпечення підпрємств а також аналіз перешкод та приоритетів розвитку менеджмент-консалтингових компаній. Особливості взаємодії консалтингових компаній та підприємств замовників в контексті світових економічних тенденцій...
66439. Анализ особенностей фразеологического оборота в романе М.А. Шолохова «Поднятая целина» 126 KB
  Это произошло без участия сознательной авторской воли просто за прошедшие годы самостоятельность и зрелость были искоренены в крестьянстве приученном к тому что за самостоятельность наказывают вплоть до физического уничтожения.