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


 

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

50432. Изучение явления теплопроводимости в газах и определить коэфицент теплопроводимости воздуха 27.5 KB
  Цель работы: изучение явления теплопроводимости в газах и определить коэфицент теплопроводимости воздуха. Приборы и принадлежности: установка для измерения коэфицента теплопроводимости воздуха. Ход работы: Измеряем напряжение на проводнике, находящегося в трубке, при различном значении силы тока в цепи.
50434. Изучение явления теплопроводности в газах и определение коэффициента теплопроводности воздуха 67.5 KB
  Приборы и принадлежности: установка для измерения коэффициента теплопроводности воздуха. k На рисунке 1 изображена схема устройства установки для измерения коэффициента теплопроводности воздуха.Специализированная программа выдаёт нам следующие значения уравнения функции и коэффициента теплопроводности для каждой трубки: 1 .
50436. Сравнение вельш-корги-кардиган и вельш-корги-пемброк 1.36 MB
  Корги самая маленькая из группы пастушьих собак. Как и все остальные представители этой группы, корги в последнее время редко используются по назначению, однако их высокие рабочие качества постоянно подтверждаются учебными испытаниями и соревнованиями, где они успешно конкурируют с другими
50437. ЛОГІЧНІ ЕЛЕМЕНТИ І НАЙПРОСТІШІ КОМБІНАЦІЙНІ СХЕМИ 284 KB
  Проаналізувати задану комбінаційну схему див. Зібрати задану схему. На підставі отриманої ТС за допомогою ГС і ЛА протестирувати зібрану схему і зняти її часову діаграму. Спробувати спростити отриманий ЛВ і одержати нову схему.
50438. Описание терминального режима 190 KB
  В контексте пользователя доступны только простые команды некоторые базовые операции для мониторинга не влияющие на конфигурацию маршрутизатора. В контексте администратора доступны команды позволяющие получить полную информацию о конфигурации маршрутизатора и его состоянии команды перехода в режим конфигурирования команды сохранения и загрузки конфигурации. Глобальный контекст конфигурирования содержит как непосредственно команды конфигурирования маршрутизатора так и команды перехода в контексты конфигурирования подсистем маршрутизатора...
50439. ОПРЕДЕЛЕНИЕ СКЛОННОСТИ К ОТКЛОНЯЮЩЕМУСЯ ПОВЕДЕНИЮ 305 KB
  Если нет другого выхода то спор можно разрешить и дракой. Если в кинофильме нет ни одной приличной драки это плохое кино. Когда я стою на мосту то меня иногда так и тянет прыгнуть вниз. Если в фильме нет ни одной приличной драки – это плохое кино.