51308

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

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

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

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

Русский

2014-02-10

206 KB

44 чел.

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

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

Кафедра ПОИТ

Отчет

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

           }

       }

   }

}


 

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

13139. Философия морали 85.5 KB
  Философия морали Содержание Введение 1. Происхождение сущность и основные функции морали 2. Исторические типы морали. Моральный прогресс человечества 3. Нравственная атмосфера современного общества Заключение Список использованной литературы Введение ...
13140. Генная психология 194 KB
  Генная психология Факт что генетический код содержащийся в молекулах ДНК передает большое количество физиологической информации является общепринятым. Все признают так же что такие явные физические характеристики как цвет глаз и цвет волос передаются посредст
13141. Технология выращивания и хранения лука 126 KB
  Реферат на тему: Технология выращивания и хранения лука ХРАНЕНИЕ И ПЕРЕРАБОТКА ЛУКА Важнейшее условие хорошей лежкости овощей своевременная уборка их в зрелом состоянии до наступления заморозков. Недозрелые овощи с недостаточно опробковевшей оболочкой не могут...
13142. МЕТОДИ МЕНЕДЖМЕНТУ 102 KB
  ТЕМА 8. Методи менеджменту Сутність та особливості формування методів менеджменту. Характеристика методів менеджменту. Методи менеджменту як результат функціональної діяльності. Вступ: Будьяка управлінська діяльність у т.ч. управлінська повинна б
13143. Отечественная история. Тестирование (1167 вопросов) 866 KB
  Отечественная история Тестирование 1167 вопросов. Централизация русских земель. Возвышение Москвы. Социально-экономическое и общественно-политическое развитие СССР в послевоенный период. Перестройка. Становление российской государственности
13144. БУДОВА ТА КОНСТРУКТИВНІ ОСОБЛИВОСТІ ЛОПАТЕВИХ, ТВЕРДОСПЛАВНИХ, АЛМАЗНИХ ТА ПОЛІКРИСТАЛІЧНИХ ДОЛІТ 645.5 KB
  Лабораторна робота № 1 БУДОВА ТА КОНСТРУКТИВНІ ОСОБЛИВОСТІ ЛОПАТЕВИХ ТВЕРДОСПЛАВНИХ АЛМАЗНИХ ТА ПОЛІКРИСТАЛІЧНИХ ДОЛІТ Мета роботи: вивчити класифікацію та конструкцію лопатевих твердосплавних алмазних та полікристалічних доліт 1 Теоретичні відомості ...
13145. БУДОВА ТА КОНСТРУКТИВНІ ОСОБЛИВОСТІ ШАРОШКОВИХ ДОЛІТ. ВИЗНАЧЕННЯ КОЕФІЦІЄНТУ ПЕРЕКРИТТЯ ШАРОШКОВОГО ДОЛОТА 10.51 MB
  Лабораторна робота № 2 БУДОВА ТА КОНСТРУКТИВНІ ОСОБЛИВОСТІ ШАРОШКОВИХ ДОЛІТ. ВИЗНАЧЕННЯ КОЕФІЦІЄНТУ ПЕРЕКРИТТЯ ШАРОШКОВОГО ДОЛОТА Мета роботи: вивчити класифікацію та конструктивні особливості шарошкових доліт їх переваги та недоліки в порівнянні з іншими тип
13146. ВИВЧЕННЯ ШИФРІВ, ХАРАКТЕРУ ТА КОДУВАННЯ ЗНОСУ ТРИШАРОШКОВИХ ДОЛІТ. КОДУВАННЯ ЗНОСУ АЛМАЗНИХ ДОЛІТ 52 KB
  Лабораторна робота № 3 ВИВЧЕННЯ ШИФРІВ ХАРАКТЕРУ ТА КОДУВАННЯ ЗНОСУ ТРИШАРОШКОВИХ ДОЛІТ. КОДУВАННЯ ЗНОСУ АЛМАЗНИХ ДОЛІТ Мета роботи: вивчити методику описання зносу шарошкових та алмазних доліт. Теоретичні відомості Ретельне вивчення зносу озброєння та ...
13147. БУДОВА ТА КОНСТРУКТИВНІ ОСОБЛИВОСТІ КОЛОНКОВИХ ДОЛІТ ТА ДОЛІТ СПЕЦІАЛЬНОГО ПРИЗНАЧЕННЯ 1.93 MB
  ЛАБОРАТОРНА РОБОТА № 4 БУДОВА ТА КОНСТРУКТИВНІ ОСОБЛИВОСТІ КОЛОНКОВИХ ДОЛІТ ТА ДОЛІТ СПЕЦІАЛЬНОГО ПРИЗНАЧЕННЯ Мета роботи: вивчення будови та особливостей застосування доліт для відбору керна та доліт спеціального призначення 1 Теоретичні відомості КОЛО