50689

Построtybt графf состояний СМО

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

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

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

Русский

2014-01-28

293.5 KB

9 чел.

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

Цель:

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

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

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

Ротк – вероятность отказа;  

П1=0,8

П2=0,6

Выполнение  лабораторной работы:

Построение графа  состояний СМО.

Построение аналитической модели.

Построение имитационной программы.

Скриншоты программы.

Листинг программы.

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 laba3_model

{

   public partial class Form1 : Form

   {

       Point st1 = new Point();

       Point st2 = new Point();

       Point st3 = new Point();

       Point st4 = new Point();

       Random random;

       bool flag=false;

       int Potk = 0;

       int chek_kol=0;

       int t;

       int j;

       int s1;

       int s2;

       double tmp,tmp1;//tmp1---для определения ветви если<=0.5,то 2010,иначе 2001

       double p1 = 0.8;

       double p2 = 0.6;

       public Form1()

       {

           random = new Random(Environment.TickCount);

           t=2;

           j = 0;

           s1 = 0;

           s2 = 0;   

           InitializeComponent();

 

       }

      

       private void pictureBox1_Paint(object sender, PaintEventArgs e)

       {

           st1.X = 30;

           st1.Y = 65;

           e.Graphics.DrawString(t.ToString(), new Font("Arial", 30), new SolidBrush(Color.Black), st1);

           st2.X = 190;

           st2.Y = 65;

           e.Graphics.DrawString(j.ToString(), new Font("Arial", 30), new SolidBrush(Color.Black), st2);

           st3.X = 336;

           st3.Y = 23;

           e.Graphics.DrawString(s1.ToString(), new Font("Arial", 30), new SolidBrush(Color.Black), st3);

           st4.X = 339;

           st4.Y = 115;

           e.Graphics.DrawString(s2.ToString(), new Font("Arial", 30), new SolidBrush(Color.Black), st4);

       }

       double rand()

       {

           return  (double)random.Next(0, 100)/100.000;

       }

      

       void fun()

       {

           switch (t)

           {

               case 2:

                   switch (j)

                   {

                       case 0:

                           switch (s1)

                           {

                               case 0:

                                   switch (s2)

                                   {

case 0: tmp = 1; t = 1; j = 0; s1 = 0; s2 = 0; break;

                                       case 1: tmp = rand();

if (tmp <= p2) { t = 1; j = 0; s1 = 0; s2 = 0; }

                                           else { t = 1; j = 0; s1 = 0; s2 = 1; }

                                           break;

                                   } break;

                               case 1:

                                   switch (s2)

                                   {

                                       case 0:

                                           tmp = rand();

if (tmp <= p1) { t = 1; j = 0; s1 = 0; s2 = 0; }

                                           else { t = 1; j = 0; s1 = 1; s2 = 0; } break;

                                       case 1://2011

                                           tmp = rand();

if (tmp <= (1 - p1) * (1 - p2)) { t = 1; j = 0; s1 = 0; s2 = 0; }

                                           else

                                           {

tmp1 = ((1 - p1) * (1 - p2) + (1 - p1) * p2);

if (tmp <= tmp1) { t = 1; j = 0; s1 = 0; s2 = 1; }

                                               else

                                               {

if (tmp <= (tmp1 + (1 - p2) * p1)) { t = 1; j = 0; s1 = 1; s2 = 0; }

                                                   else { t = 1; j = 0; s1 = 1; s2 = 1; }

                                               }

                                           }

                                           break;

                                   } break;

                           } break;

                       case 1:

                           switch (s1)

                           {

                               case 0:

                                   switch (s2)

                                   {

                                       case 0://2100--net

                                           break;

                                       case 1://2101--net

                                           break;

                                   } break;

                               case 1:

                                   switch (s2)

                                   {

                                       case 0://2110--net

                                           break;

                                       case 1://2111

                                           tmp = rand();

                                           if (tmp <= (1 - p1) * (1 - p2))

                                           {

                                               tmp1 = rand();

if (tmp1 <= 0.5) { t = 1; j = 0; s1 = 1; s2 = 0; }

                                               else { t = 1; j = 0; s1 = 0; s2 = 1; }

                                           }

                                           else

                                           {

if (tmp <= ((1 - p1) * (1 - p2) + (1 - p1) * p2 + (1 - p2) * p1)) { t = 1; j = 0; s1 = 1; s2 = 1; }

                                               else

                                               {

                                                   t = 1; j = 1; s1 = 1; s2 = 1;

                                               }

                                           }

                                           break;

                                   } break;

                           } break;

                   } break;

               case 1:

                   switch (j)

                   {

                       case 0:

                           switch (s1)

                           {

                               case 0:

                                   switch (s2)

                                   {

                                       case 0://1000

                                           tmp = rand();

                                        if (tmp <= 0.5) { t = 2; j = 0; s1 = 1; s2 = 0; }

                                           else { t = 2; j = 0; s1 = 0; s2 = 1; }

                                           break;

                                       case 1: //1001

                                           tmp = rand();

                                          if (tmp <= p2) { t = 2; j = 0; s1 = 1; s2 = 1; }

                                           else

                                           {

                                               tmp1 = rand();

if (tmp1 <= 0.5) { t = 2; j = 0; s1 = 1; s2 = 0; }

                                               else { t = 2; j = 0; s1 = 0; s2 = 1; }

                                           }

                                           break;

                                   } break;

                               case 1:

                                   switch (s2)

                                   {

                                       case 0://1010

                                           tmp = rand();

if (tmp <= p1) { t = 2; j = 0; s1 = 1; s2 = 1; }

                                           else

                                           {

                                               tmp1 = rand();

if (tmp1 <= 0.5) { t = 2; j = 0; s1 = 1; s2 = 0; }

                                               else { t = 2; j = 0; s1 = 0; s2 = 1; }

                                           }

                                           break;

                                       case 1://1011

                                           tmp = rand();

                                           if (tmp <= (1 - p1) * (1 - p2))

                                           {

                                               tmp1 = rand();

if (tmp1 <= 0.5) { t = 2; j = 0; s1 = 1; s2 = 0; }

                                               else { t = 2; j = 0; s1 = 0; s2 = 1; }

                                           }

                                           else

                                           {

if (tmp <= ((1 - p1) * (1 - p2) + (1 - p1) * p2 + (1 - p2) * p1)) { t = 2; j = 0; s1 = 1; s2 = 1; }

                                               else

                                               {

                                                   t = 2; j = 1; s1 = 1; s2 = 1;

                                               }

                                           }

                                           break;

                                   } break;

                           } break;

                       case 1:

                           switch (s1)

                           {

                               case 0:

                                   switch (s2)

                                   {

                                       case 0://1100--net

                                           break;

                                       case 1://1101--net

                                           break;

                                   } break;

                               case 1:

                                   switch (s2)

                                   {

                                       case 0://1110--net

                                           break;

                                       case 1://1111

                                           tmp = rand();

                                           if (tmp <= (1 - p1) * (1 - p2))

                                           {

                                               t = 2; j = 0; s1 = 1; s2 = 1;

                                           }

                                           else

                                           {

if (tmp <= ((1 - p1) * (1 - p2) + p1 * p2))

                                               {

                                                   Potk++;

                                                   t = 2; j = 1; s1 = 1; s2 = 1;

                                               }

                                               else

                                               {

                                                   t = 2; j = 1; s1 = 1; s2 = 1;

                                               }

                                           }

                                           break;

                                   } break;

                           } break;

                   } break;

           }

           chek_kol++;

       }

       private void button1_Click(object sender, EventArgs e)

       {

           string txt = "";

          /* Potk = 0;   // БЕЗ НАКАПЛИВАНИЯ

           chek_kol = 0;*/

           

           if (flag==false)

           {

               

               fun();

               double tmp2=0;

               if (Potk == 0) label1.Text = "Pотказа=???";

               else

               {

                   tmp2 = (double)Potk / (double)chek_kol;

                   label1.Text = "Pотказа= " + tmp2.ToString();

               }

               

               label2.Text = "Кол-во отказов = " + Potk.ToString();

               label3.Text = "Кол-во шагов = " + chek_kol.ToString();

           }

           else

           {

               try

               {

                   listBox1.Items.Clear();

                   for (int i = 0; i < 50000; i++)

                   {

                       txt = "";

                       txt = txt + t.ToString() + " " + j.ToString() + " " + s1.ToString() + " " + s2.ToString();

                       //  listBox1.Items.Add(tmp);

                       listBox1.Items.Add(txt);

                       fun();

                   }

                   if (Potk == 0) label1.Text = "Pотказа=?";

                   else 

                   {

                       tmp1 = (double)Potk / (double)chek_kol; label1.Text = "Pотказа=" + tmp1.ToString();

                       label2.Text = "Кол-во отказов = " + Potk.ToString();

                       label3.Text = "Кол-во шагов = " + chek_kol.ToString();

                   }

               }

               catch { };

           }

           txt = "";

           pictureBox1.Invalidate();      

           txt = txt + t.ToString()+" " + j.ToString() +" "+ s1.ToString() +" "+ s2.ToString();

          // listBox1.Items.Add(tmp);

           listBox1.Items.Add(txt);

       }

       private void radioButton2_CheckedChanged(object sender, EventArgs e)

       {

           Potk = 0;

           chek_kol=0;

           label2.Text = "Кол-во отказов = " ;

           label3.Text = "Кол-во шагов = ";

           label1.Text = "Pотказа=?";

           listBox1.Items.Clear();

           flag = true;

       }

       private void Вручную_CheckedChanged(object sender, EventArgs e)

       {

           Potk = 0;

           chek_kol = 0;

           label2.Text = "Кол-во отказов = " ;

           label3.Text = "Кол-во шагов = " ;

           label1.Text = "Pотказа=?";

           listBox1.Items.Clear();

           flag = false;

       }

   }

}

Вывод:

В результате лабораторной  работы были построены имитационная и аналитическая модели,

Были исследованы характеристики данных моделей.

8


 

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

21353. Устройство и принцип работы АПУ Р 330К 1.31 MB
  Сюда вводится режим работы ПУ номера исправных направлений связи дата количество выявленных радиосетей и обнаруженных ИРИ КВ УКВ и радиорелейном диапазонах АСП радиорелейного диапазона сопряженные с данными ПУ не разработаны но информация о них в ПУ введена количество выявленных УС номер этапа работы и время до начала следующего этапа; Е2 поле диагностических сообщений о сбоях в системе; Е3 поле набора команд и сообщений об ошибках в наборе; Е4 поле набора параметров и сообщений об ошибках в наборе; Е5 поле отображения...
21355. Устройство диалогового отображения данных. Устройство управления синхронизацией 1.26 MB
  УДОД может работать в трех основных режимах: ввод в память микроЭВМ данных с клавиатуры пульта оператора; вывод данных и команд из микроЭВМ на устройства отображения информации и регистр индикации пульта управления; автоматизированный контроль блоков УДОД. Интерфейс воспринимается микроЭВМ как ряд адресуемых регистров. Блок 80513 функционально содержит пять адресуемых регистров: регистр состояния; регистр данных клавиатуры; регистр режима; регистр индикации сигнальной информации; регистр тестирования. В блоке 80103 шесть адресуемых...
21356. Назначение, состав вооружения воинских частей и подразделений РЭБ 587.21 KB
  Имеющиеся на вооружении силы и средства РЭБ не в состоянии оказать воздействие на всю систему управления противника поэтому важно применять их в сочетании с огневым поражением на наиболее важных направлениях в нужные периоды боя операции в нужное время по наиболее важным целям. Умелое применение современных комплексов радиоподавления иногда может дать не меньшие результаты чем удары средствами поражения по элементам АСУ противника. Радиоэлектронная борьба РЭБ совокупность согласованных по целям задачам месту и времени мероприятий...
21357. НАЗНАЧЕНИЕ, ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ, СОСТАВ АВТОМАТИЗИРОВАННЫХ СТАНЦИЙ ПОМЕХ Р –325У,Р378А,Б 53 KB
  АСП обеспечивает: автоматический поиск и обнаружение источников радиоизлучений ИРИ в пределах частотного диапазона или в заданном участке диапазона; автоматическое или ручное пеленгование обнаруженных ИРИ; отображение значений частоты и пеленга обнаруженных ИРИ на табло УУС устройство управления станцией; определение принадлежности обнаруженных ИРИ к объекту РЭП радиоэлектронного подавления путем анализа оператором значений частот параметров сигналов и пеленгов; запись и хранение в ЗУ запоминающее устройство значений...
21358. Назначение, состав, ТТХ, БВ автоматизированного комплекса радиоразведки и подавления Р330 «МАНДАТ 1.2 MB
  Комплекс Р330 Мандат состоит на вооружении подразделений и частей РЭБ Сухопутных войск и предназначен для радиоразведки и радиоподавления линий радиосвязи противника в тактическом и оперативнотактическом звене управления в диапазоне от 1. Состав комплекса Мандат по количеству и типам применяемых средств зависит от организационноштатной структуры ОШС частей РЭБ решаемых ими задач и может включать: а автоматизированный пункт управления АПУ Р330К в составе двух машин: машина управления; аппаратная связи; б...
21359. Расчет СЭП 14.7 MB
  Рулевое устройство предназначается для удержания судна на заданном курсе, а также для его поворота при изменении направления движения
21360. Структурная схема, назначение составных частей, принцип работы станции в различных режимах 50.55 KB
  АПОА предназначен для обнаружения пеленгования и технического анализа ИРИ. Он обеспечивает: панорамную перестройку панорамного обнаружителя Р381Т15 и одновременно с ним автоматического пеленгатора по частоте во всем рабочем диапазоне частот или на отдельных участках диапазона с одинаковыми полосами обзора до семидесяти девяти; определение численных значений частот ИРИ и пеленгов на них с вводом измеренных значений в УУС; определение характеристик сигналов в ручном режиме с помощью анализатора Р399Т и занесение их при...
21361. Аппаратура АПОА: АФС КАМА-4, широкополосное входное устройство Т-152, панорамный обнаружитель Р-381Т1-5 38.37 KB
  Основными функциями изделия являются автоматический поиск радиоизлучений в установленной полосе обзора определение их средних частот ширины спектра и уровня на входе изделия формирование кодов характеристик излучений для передачи в УУС определение момента настройки РПУ на центральную или максимальную частоту спектра излучения. Логическая обработка кодов уровней при поиске сигналов со скоростью 0125 и 0250МГц cек предусматривает разделение импульсных помех и сигналов определение ширины спектра сигнала определение момента точной...