51308

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

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

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

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

Русский

2014-02-10

206 KB

78 чел.

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

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

Кафедра ПОИТ

Отчет

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

           }

       }

   }

}


 

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

31915. УЧЕТА И АУДИТ ДЕНЕЖНЫХ СРЕДСТВА НА ПРЕДПРИЯТИИ ООО «ЭТАЛОН -СПБ» 696.5 KB
  Денежные средства выполняют следующие основные задачи: проверка правильности документального оформления и законности операций с денежными средствами, расчетных и кредитных операций, своевременное и полное отражение их в учете; обеспечение своевременности, полноты и правильности расчетов по всем видам платежей и поступлений
31918. АЛГОРИТМЫ СОРТИРОВКИ 358.5 KB
  DFHBFYN ЛАБОРАТОРНАЯ РАБОТА 2 АЛГОРИТМЫ ОБРАБОТКИ МНОЖЕСТВ Цель лабораторной работы освоение программирования операций над множествами. При программировании задач над множествами естественно рассматривать конечные множества. Число элементов множества называется его мощностью и обозначается через .
31919. ОСНОВНЫЕ НАПРАВЛЕНИЯ ФОРМИРОВАНИЯ СИСТЕМЫ БАНКОВСКОГО ПОТРЕБИТЕЛЬСКОГО КРЕДИТОВАНИЯ В СОВРЕМЕННОЙ АБХАЗИИ С УЧЕТОМ РОССИЙСКОГО ОПЫТА 177.5 KB
  Именно поэтому формирование национальной банковской системы соответствующей потребностям и масштабам Абхазии выступает на современном этапе важнейшим фактором укрепления Республики основой ее экономического развития. Современное состояние и перспективы развития банковской системы Абхазии необходимо рассматривать в контексте общей трансформации экономики. В результате экономика Абхазии оказалась отброшенной на многие годы назад в республике прекратили свое существование многие предприятия и учреждения.
31920. Генерування випадкових даних 24 KB
  Генерування нормально розподілених випадкових чисел 1. Написати програму мова програмування на вибір студента що генерує ряд вказаної довжини випадкових чисел розподілених за нормальним законом із заданими параметрами. Для генерування рівномірно розподілених випадкових чисел з інтервалу [0;1 використати лінійну змішану формулу див.
31921. Коефіцієнт кореляції 49.5 KB
  Знайти вибірковий коефіцієнт кореляції. Перевірити значення коефіцієнта кореляції користуючись вбудованими можливостями MS Excel функція КОРРЕЛ