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


 

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

59372. Сценарій “У гостях у кота Леопольда” 36 KB
  Шановні учні, вчителі. Сьогодні ви побуваєте у гостях у кафе. А у кого Ви відгадайте. Кіт Леопольд. З мишами дружу. Їх я не ловлю У мультфільм роль я маю Із мишами там співаю.
59373. Прифметрична і геометрична прогресія 63.5 KB
  Означення 2 Формула nчисла члена 3 Сума т перших членів прогресії 4 Властивості Учні заповнюють таблицю потім на зворотній дошці бачимо таблицю учні провіряють правильність заповнення таблиці один у одного з таблицею на екрані.
59374. РОДИННЕ СВЯТО «НАЙКРАЩИЙ У СВІТІ ДІДУСЬ» 61.5 KB
  Шановні гості цю пісню діти вивчили спеціально для нашого свята. Щебечуть тиснуться кожному хочеться поспілкуватися почути цікаві оповідки яких дідусь Михайло знає так багато.
59375. День здоров’я. Сильні, спритні і сміливі 63 KB
  Вправа ноги на ширину ступні обруч опущений. Вправа видих. Вправа ноги нарізно обруч опущений. Вправа вдих.
59376. У ШЕВЧЕНКОВІЙ СВІТЛИЦІ 40.5 KB
  Святково прибраний клас і портрет Тараса Шевченка, рушники, виставка його творів, ілюстрацій. Біля портрету - слова; що є епіграфом свята:
59377. ТАЄМНИЦІ ВЕСНЯНОГО ЛІСУ 134.5 KB
  Вихователь: Так діти ось і прийшла до нас весна із своїми запашними квітами та зеленими травами. Діти заходять у ліс вдихають повітря Вихователь: Чому так легко дихається в лісі Діти: Тому що багато дерев і вони виробляють кисень.