51308

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

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

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

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

Русский

2014-02-10

206 KB

41 чел.

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

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

Кафедра ПОИТ

Отчет

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

           }

       }

   }

}


 

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

57311. Единая государственная система предупреждения и ликвидации ЧС (РСЧС) 232 KB
  Во исполнение указанного закона Постановлением Правительства РФ № 794 от 30.12.2003 г. было утверждено новое Положение о единой государственной системе предупреждения и ликвидации ЧС. Единая государственная система предупреждения и ликвидации чрезвычайных ситуаций (РСЧС) создана с целью прогнозирования, предотвращения и ликвидации...
57313. О рынке и конкуренции. Проблема обмена двух товаров друг на друга 38 KB
  Мы определим общественное богатство как совокупность материальных и нематериальных вещей которые имеют стоимость и могут обмениваться и покажем что все имеющие стоимость и способные к обмену вещи и только они являются одновременно полезными и количественно ограниченными.
57314. Режим дня. Признаки утомления. Учимся и отды 37 KB
  Цель: формировать понятие о режиме дня; показать влияние систематического соблюдения режима дня правильного распределения времени на здоровье человека; развивать память мышление желание быть здоровым; воспитывать бережное отношение к своему здоровью.
57317. Рабочий стол. Курсор. Операция изменения размеров 978.5 KB
  Взаимодействие пользователя с программами и устройствами компьютера осуществляется с помощью мыши. Образом мыши на экране является указатель мыши чаще всего имеющий форму стрелки. Движение указателя по экрану соответствует движению мыши по коврику.
57319. Вимірювання структурних властивостей. Створення 2D ескізу 1.32 MB
  Урок 5 описує вимірювання структурних властивостей з використанням різних методів вибору. Вибираючи різні частини молекули або молекулярної структури, ви можете виміряти довжини звязків та кути, а також відобразити атомні характеристики, такі як заряди та X, Y, і Z координати.