50341

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

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

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

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

Русский

2014-01-21

166 KB

23 чел.

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

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

Кафедра ПОИТ

Отчет

по выполнению лабораторной работы №3

Выполнила: ст. гр. 950503                                                                           Проверил:

Трутнёва А. А.                                                                 Мельник Н.И.

Минск

2012 г.

Задание

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

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

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

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

13.

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

13

-

0,55

0,5

Рбл, А

Граф СМО


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


Вероятность блокировки  =  0.071

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

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Collections;

namespace Modeling3

{

   class SMO

   {

       public int tics = 0;    //количество повторений

       int s1 = 0;             //источник

       int j1=0;               //очередь

       int t1=0;               //1 канал

       int t2=0;               //2 канал

       int maxJ=0;             //максимальное кол-во заявок в очереди

       public int deny = 0;    //блокировка

       int p=0;           //через сколько тактов источник дает заявку

       double p1=0;

       double p2=0;

       public int c2000 = 0;

       public int c1000 = 0;

       public int c2010 = 0;

       public int c1010 = 0;

       public int c1001 = 0;

       public int c2110 = 0;

       public int c2011 = 0;

       public int c1110 = 0;

       public int c0110 = 0;

       public int c1011 = 0;

       public int c2111 = 0;

       public int c1111 = 0;

       public int c0111 = 0;

       

       Random rnd1;

       Random rnd2;

       public int orders;          //кол-во поступивших заявок

       public int accepted;        //кол-во принятых заявок (заявки, которые прошли систему полностью)

      

       public SMO(int p, double p1, double p2, int maxJ)

       {

           this.p = p;

           this.p1 = p1;

           this.p2 = p2;

           this.maxJ = maxJ;

           orders = 0;

           accepted = 0;

           rnd1 = new Random(2);

           rnd2 = new Random(3);

       }

       public void tick(int counter)

       {

           s1=p;     //считает сколько тактов осталось до выдачи заявки

           bool pw=false;      //сработал источник

           bool p1w=false;     //сработал первый канал

           bool p2w=false;     //сработал второй канал

           bool locked = false; //заявка блокирована

           double tmp=0;       // буфер для записи результата рандома

           c2000 = 1;          // сработал источник

           string currentState = "";

           for (tics = 0; tics < counter; tics++)

           {

               pw=false;

               p1w=false;

               p2w=false;

               if (s1 != 0) s1--;

               if (s1 == 0) pw = true;

               if (t1 == 1)

               {

                   tmp = rnd1.NextDouble();

                   if (tmp > p1) p1w = true;

               }

               if (t2 == 1)

               {

                   tmp = rnd2.NextDouble();

                   if (tmp > p2) p2w = true;

               }

               

               if (p2w)

               {

                   t2 = 0;

                   accepted++;

                   

               }

               if (p1w)

               {

                   t1 = 0;

                   if (t2 == 0) t2 = 1;

                   if (j1 > 0)

                   {

                       j1--;

                       t1 = 1;

                   }

               }

               if (pw)

               {

                   orders++;

                   if ((j1 == 0) && (t1 == 0))

                   {

                       t1 = 1;

                       s1 = p;

                       locked = false;

                   }

                   else if (j1 < maxJ)

                   {

                       j1++;

                       s1 = p;

                       locked = false;

                   }

                   else

                   {

                       if(!locked) deny++;

                       locked = true;

                       s1 = 0;

                       orders--;

                   }

               }

               currentState = s1.ToString() + j1.ToString() + t1.ToString() + t2.ToString();

               switch(currentState)

               {

                   case "2000":

                       {

                           c2000++;

                           break;

                       }

                   case "1000":

                       {

                           c1000++;

                           break;

                       }

                   case "2010":

                       {

                           c2010++;

                           break;

                       }

                   case "1010":

                       {

                           c1010++;

                           break;

                       }

                   case "1001":

                       {

                           c1001++;

                           break;

                       }

                   case "2110":

                       {

                           c2110++;

                           break;

                       }

                   case "2011":

                       {

                           c2011++;

                           break;

                       }

                   case "1110":

                       {

                           c1110++;

                           break;

                       }

                   case "0110":

                       {

                           c0110++;

                           break;

                       }

                   case "1011":

                       {

                           c1011++;

                           break;

                       }

                   case "2111":

                       {

                           c2111++;

                           break;

                       }

                   case "1111":

                       {

                           c1111++;

                           break;

                       }

                   case "0111":

                       {

                           c0111++;

                           break;

                       }

                   default:

                       {

                           break;

                       }

               }

           }

       }  }}


 

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

36559. Понятие о языках программирования 31.5 KB
  Мы все несомненно имеем некоторое представление о языке как средстве общения. Русский английский или японский язык это естественные языки общения людей созданные в процессе длительной эволюции. Однако наряду с естественными языками современная цивилизация широко использует так называемые искусственные или формальные языки.
36560. Аппаратное и программное обеспечение компьютера 32 KB
  Программное обеспечение включает в себя прежде всего операционную систему такую как MS DOS Windows 3.1 или Windows 95. Одной из первых систем графического интерфейса была Windows 3. Так в системе Windows вы можете одновременно выводить информацию на принтер и редактировать какойлибо файл информации.
36561. Программы, управляемые событиями 28.5 KB
  Для реакции такой программы на внешние события например сигналы таймера ошибки в устройствах компьютера и др. аппаратные переключения с выполнения исходной программы на специальную программу обработки прерывания. Средства прерывания широко применяли в рамках концепции последовательной программы при организации многозадачных режимов и эффективного использования процессора компьютера. Однако концепция последовательной программы несмотря на свою универсальность оказывается неэффективной для современного персонального компьютера имеющего...
36562. Принцип программного управления 45 KB
  Всё что способен делать компьютер это выполнять программы. Процессор âдвижущая силаâ исполнитель точно выполняющий команды программы. а также операции копирования перемещения информации из одних ячеек памяти в другие ввода данных в оперативную память например символов набранных на клавиатуре вывода информации например на экран дисплея или на диск окончания программы и другие.  Процессор выполняет команды начиная с первой команды программы.
36563. Структурный тип запись 45 KB
  Например анкета служащего содержит такие данные как фамилия имя отчество строковый тип год рождения целый тип разряд целый тип и многие другие данные. Объединение таких данных общий структурный типанкета затруднительно сделать в рамках массива или множества. Естественным средством структурирования в этом и подобных случаях является структурный тип Запись.
36564. Структурный тип множество 41.5 KB
  Понятие о типе Множество в Турбо Паскале. Множество является ещё одним структурным типом Турбо Паскаля служащим для объединения однородных однотипных элементов. Однако форма объединения в Множество существенно отличается от типа Массив.
36565. Особенности разработки программы с подпрограммой 35.5 KB
  Практически все используемые прикладные программы это программы с подпрограммами процедурами и функциями. Подпрограммы как уже указывалось позволяют преодолевать сложность обеспечивая декомпозицию программы на более простые составные части. Разработка программ на ТурбоПаскале с подпрограммами имеет ряд отличий от той методики которая изложена выше применительно с простым программам.
36566. Область действия имен в программе 29 KB
  В программах не использующих подпрограммы имена описанные в разделе описаний действуют во всей программе не вызывая какихлибо проблем. В подпрограммах могут использоваться свои локальные внутренние имена и кроме того она может также использовать глобальные внешние для неё имена из других подпрограмм или основной программы. Локальными именами подпрограммы называются те имена которые описаны в этой подпрограмме в её разделе описаний. Все остальные используемые в подпрограмме имена являются глобальными именами данной...
36567. Параметры-процедуры и параметры-функции. Процедурный тип 30.5 KB
  Описание процедурных типов имеет форму заголовка процедуры или функции с опущенным её именем: type имя процедурытипа = procedure список формальных параметров ; type имя функциитипа = function список формальных параметров : тип ; Например: type fun =function x:rel:rel; При описании подпрограммы с процедурными параметрами такие параметры указываются формальным именем и соответствующим процедурным типом. Пример процедуры использующей описанный выше процедурный тип fun: procedure print_f n:byte; f:fun; const count = 20; vr X:rel;...