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


 

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

27900. Диагностирование тормозных качеств а/м. Параметры. Оборудование 47 KB
  К первой группе относятся: тормозной путь и замедление автомобиля тормозные силы и их разность на колесах каждой оси ко второй сила нажатия на педаль скорость нарастания и спада тормозных сил время срабатывания тормозных механизмов хода штоков тормозных камер свободный ход педали производительность компрессора и некоторые другие. Перечисленные диагностические параметры измеряют: путем ходовых испытаний на дороге; в процессе эксплуатации встроенными средствами диагностирования; в стационарных условиях при помощи тормозных...
27901. Диагностирование а/м по мощностным и экономическим показателям. Устройство стендов 50 KB
  Исследования показывают что до 30 автомобилей АТП эксплуатируют со значительным недоиспользованием мощности и перерасходом топлива. После диагностирования и устранения обнаруженных неисправйостей средняя максимальная сила тяги увеличилась а средний контрольный расход топлива уменьшился в среднем на 13 кроме того значительно снизилось рассеивание этих показателей. Восстановление колесной мощности автомобиля повышает его среднюю скорость движения а следовательно и производительность работы а м а также снижает расход топлива. На этих...
27902. Пластины АКБ 34 KB
  Сильно сульфатированные пластины бракуют слабо сульфотированные восстанавливают без разборки без разборки батарей продолжительным зарядом током малой силы не более 005 от емкости при низкой плотности электролита не более 111 2 Варианты ремонта ЦПГ двигателя поминальный размер ремонтный размер сухая и мокрая гильза Различают мокрые и сухие гильзы. Внешняя поверхность мокрых гильз омывается охлаждающей жидкостью а сухие гильзы непосредственно с охлаждающей жидкостью не соприкасаются и избыточное тепло отводится через...
27903. ОПРЕДЕЛЕНИЕ ЧИСЛО ПОСТОВ 47.5 KB
  Xео и то: такт ритм Хто2 Д = такт ритм ню ню коэф исп времени рабочего поста 2 Основные конструкционные стали применяемые в автомобилестроении и авторемонтном производстве и их характеристики. Конструкционные стали предназначены для изготовления деталей машин машиностроительные стали. К этой группе относятся углеродистые и легированные стали с содержанием не более 0708 углерода. Низкоуглеродистые стали до 03 углерода пластичны хорошо свариваются и деформируются.
27904. Организация заправки а/м сжиженным газом (стационарные, полустационарные, передвижные АГНС) 70.5 KB
  Оборудование для восстановления протектора Для горячей накатки протектора Для холодной накатки протектора 4 Характеристика основных разделов текущего плана АТП План перевозок грузов пассажиров Разработка плана установление объемов и структуры транспортных услуг которые намечается предоставить потребителю. Основой составления плана является анализ показателей использования подвижного состава за предшествующий период. Разработка плана ведется по двум направлениям: Расчет показателей на основе известных объемов и структуры перевозок...
27905. Особенности пуска двигателя на газе и переключения с одного топлива на другое 59.5 KB
  Уровень механизации. Одним из основных показателей использования средств механизации является уровень механизации. Уровень механизации определяется долей трудовых затрат на ТО и Р а м выполняемых с использованием средств механизации в общих трудозатрат выраженных в . При определении уровня механизации все работы делятся на: механизированные; механизированоручные; работы выполняемые в ручную.
27906. Особенности хранения газобаллонных а/м на стоянках закрытого типа 40.5 KB
  В места хранения автомобилей в помещении и на посты линии ТО и ТР автомобили должны поступать после проверки герметичности газовой системы питания с выработанным газом при закрытых расходных вентилях. Допускается проектировать помещения для хранения газобаллонных автомобилей без естественного освещения. В одноэтажном здании помещения для газобаллонных автомобилей должны быть отделены от помещений для карбюраторных и дизельных автомобилей несгораемыми стенками и перекрытиями с пределом огнестойкости не менее 15 ч. В помещениях для...
27907. Диагностирование рулевого управления. Параметры. Оборудование 38.5 KB
  При диагностике РУ определяют люфт рул колеса и усилие необходимое для его поворота при вывешенных колёсах потерь на трение проверяют также крепления и состояние шарнирных сочленений тяг рулевого привода. На а м с гидравлическим усилителем рулевого управления люфт измеряют при работающем двигателе. Кроме люфта рулевого колеса необходимо проверить зазоры в шарнирных соединениях рулевых тяг по относительному перемещению шаровых пальцев и наконечников или головок тяг при резком повёртывании рулевого колеса в обе стороны зазор в...
27908. Причины, затрудняющие пуск холодных двигателей. Средства, облегчающие пуск холодных двигателей (без подогрева, разогрева) 188.5 KB
  Припуском на обработку называется слой металла подлежащий удалению с поверхности заготовки в процессе обработки для получения готовой детали. Размер припуска определяют разностью между размером заготовки и размером детали по рабочему чертежу; припуск задается на сторону. Обозначая общий припуск на обработку z0 размер заготовки аз и размер готовой детали ад получаем: для наружных поверхностей z0 = аз ад; для внутренних поверхностей z0 = ад аз. Тогда общий припуск на обработку равен сумме межоперационных припусков по всем...