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


 

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

34105. Уголовная ответственность за регистрацию незаконных сделок с землей (ст. 170 УК РФ) 22 KB
  Уголовная ответственность за регистрацию незаконных сделок с землей ст. 254 УК; государственная регистрация незаконных сделок. Государственная регистрация незаконных сделок с земельными участками ст.
34106. Уголовная ответственность за порчу земель (ст. 254 УК РФ) 22.5 KB
  Уголовная ответственность за порчу земель ст. Порча земель ст. За порчу земель предусмотрена как административная так и уголовная ответственность в зависимости от последствий. Порча земель это ухудшение физических и биологических свойств почвы снижение ценности земли.
34107. Порядок установления и взимания земельного налога 32 KB
  Существует две формы платы за землю: земельный налог; арендная плата. Земельный налог. Земельный налог относится к категории местных налогов. Земельный налог устанавливается исключительно нормативноправовыми актами органов местного самоуправления либо законами представительных органов Москвы и СанктПетербурга.
34108. Арендная плата и нормативная цена земли 40.5 KB
  Оценка земли виды стоимости. Существует 4 вида стоимости цены: нормативная цена; кадастровая стоимость; рыночная стоимость; выкупная цена. В любом случае нормативная цена земельного участка не должна быть более 75 от рыночной стоимости аналогичных земельных участков. были внесены изменения в Закон âОб оценке и оценочной стоимости в РФâ и впервые кадастровая стоимость получила закрепление на законодательном уровне.
34109. Пять базовых техник психотерапии:суггестия, абреакция, манипуляция, разъяснение, интерпретация 95 KB
  Абреакция как основа эмоционального состояния и способности пациента справляться с ним. кратко говоря различных ментальных процессов терапевтом индивидуум в авторитетном положении у пациента индивидуума в зависимом положении независимо от или с исключением рационального или критического реалистического мышления последнего. Техническое использование суггестии может быть главным образом формальным к примеру чтобы в общем индуцировать пациента к фантазии или сну какой бы не была эта фантазия или сон или главным образом...
34110. Понятие регрессии. Роль регрессии в развитии психоаналитической терапии 48 KB
  Понятие регрессии. Роль регрессии в развитии психоаналитической терапии. Процесс регрессии как временный постоянный защитный топический ситуационный. Патологическая и нормальная регрессии их формирование в процессе развития и их значение в функционировании психического аппарата и формировании различных уровней психопатологии.
34111. Принцип психоаналитической нейтральности. Реакции аналитика на пациента: рациональные аффективные, комплиментарные, эмпатические, контрпереносные 48 KB
  Принцип психоаналитической нейтральности. В данной теме особое внимание следует уделить пониманию центрального базового значения психоаналитического понимания нейтральности. Слово НЕЙТРАЛЬНОСТЬ neutrlity и концепция ПСИХОАНАЛИТИЧЕСКОЙ НЕЙТРАЛЬНОСТИ были амбивалентными с самого момента рождения психоанализа. Приветствуемая одно время как настолько фундаментальная что принимается как данность к нейтральности тут же стали тихо относиться как мифу.
34112. Психоаналитическое понятие тревоги и ее типы 85.5 KB
  Тревога и процесс регрессии в психоаналитической ситуации. Тревога рассматривается как архаичный аффект оторвавшийся от первоначального смыслового контекста. Объективная тревога это тревога вызванная известной опасностью. Невротическая тревога вызвана неизвестной опасностью.
34113. Неспецифические аспекты психоаналитической терапии 77 KB
  В данной теме необходимо сформировать четкое представление о неспецифических формах взаимодействия аналитика и пациента. Данный раздел дает четкое представление о вспомогательных формах и методах во взаимодействии аналитика и пациента в рамках психоаналитической терапии. Если он будет это делать с неохотой аналитик может сказать что его интересуют факты. Пациента увязнувшего в неискренней похвале своих родителей можно спросить: Ваши родители действительно замечательные люди Расспрашивание для прояснения очевидности: Вместо того чтобы...