50692

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

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

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

Построить аналитическую и имитационную модели и сравнить результаты исследования Одноканальная СМО с неограниченной очередью Исследовать значения средней длины очереди, среднего времени ожидания в очереди при показательном и равномерном (a = 0.05, b =0,75) распределении входного потока.

Русский

2014-01-28

114.5 KB

9 чел.

Цель:

Построить аналитическую и имитационную модели и сравнить результаты исследования

Одноканальная СМО с неограниченной очередью

               =2.5                                     =3

   

Исследовать значения средней длины очереди , среднего времени ожидания в очереди при показательном и равномерном (a = 0.05, b =0,75) распределении входного потока.                                                 

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

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

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

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

namespace laba4_model

{

   public partial class Form1 : Form

   {

       double l = 2.5;

       double m = 3.0;

       double ostatok=0;

       int ochered = 0;

       //double ostat_och = 0;

       double sr_dlina_och = 0;

       double sr_time_ogid = 0;

       int col_uvilich = 0;

       double[] col = new double[10000];

       List<int> series = new List<int>();

       int n=100;

       int znach;//kolvo sozdaniya ocheredei

       int znacht;//

      // bool flag = false;//dly nachala uvelicheniya kol-vo ocheredei

       bool ind = true;

       double time=0;

       Random rand;

       public Form1()

       {

           InitializeComponent();

           rand = new Random();

           label6.Text = "Кол-во обращений = " + n.ToString();

           label8.Text = "l = " + l.ToString();

           label9.Text = "m = " + m.ToString();

           znacht = 0;

       }

       double eksp(double tmp)

       {

           return -Math.Log(rand.NextDouble()) / tmp;

       }

       double ravn()

       {

           return l+(m-l)*rand.NextDouble() ;

       }

       private void button1_Click(object sender, EventArgs e)

       {

           double temp;

           double ogid, obrab;

           //ochered = 0;

           if (ind)

           {

               ogid = eksp(l);

               obrab = eksp(m);

           }

           else

           {

               ogid = ravn();

               obrab = ravn();

           }

           if (obrab > ogid)

           {

               temp = (obrab - ogid);

               ostatok = ostatok + temp;

               time = time + ostatok;

                 if (ostatok >= ogid)

               {

                   ostatok = ostatok - ogid;

                   time = time + ostatok;

                   col[ochered] = ogid;

                   ochered++;

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

                       time = time + col[i];

                       col_uvilich = ochered;

                   

               }

               else

               {

               }

           }

           else

           {

               

               if (ostatok>0)

               {

                   temp = (ogid - obrab);

                   ostatok = ostatok - temp;

                   

                   

                   if (ochered>0)

                   {

                       

                       ostatok = ostatok + col[ochered];

                       time = time + ostatok;

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

                           time = time + col[i];

                       ochered--;

                       col_uvilich = ochered;

                   }

                   else

                   {

                   }

               }

               else

               {

               }

           }

                   series.Add(col_uvilich);

                   col_uvilich = 0;

                   znach++;

           n++;

           sr_dlina_och = series.Sum() / /*(double)*/znach;

           sr_time_ogid = (double)time / (double)znach;

           temp = ogid - obrab;

           label1.Text ="Ожидание прих. заявки = "+ ogid.ToString();

           label2.Text = "Обработка заявки = " + obrab.ToString();

           label3.Text = "Общий остаток = " + ostatok.ToString();

           label4.Text = "Кол-во заявок в очереди = "+ochered.ToString();

           label5.Text = "Текущий остаток = " + temp.ToString();

           label7.Text = "Средняя длина очереди = " + sr_dlina_och.ToString();

           label6.Text = "Кол-во обращений = " + n.ToString();

           label10.Text = "Среднее время ожидания = " + sr_time_ogid.ToString();

       }

       private void button2_Click(object sender, EventArgs e)

       {

           ochered = 0;

           col_uvilich = 0;

           znach=0;

           time = 0;

           sr_time_ogid = 0;

           label6.Text = "Кол-во обращений = " + n.ToString();

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

           {

               double temp;

               double ogid, obrab;

               if (ind)

               {

                   ogid = eksp(l);

                   obrab = eksp(m);

               }

               else

               {

                   ogid = ravn();

                   obrab = ravn();

               }

               if (obrab > ogid)

               {

                   temp = (obrab - ogid);

                   ostatok = ostatok + temp;

                   

                   if (ostatok >= ogid)

                   {

                       ostatok = ostatok - ogid;

                       time = time + ostatok;

                       col[ochered] = ogid;

                       ochered++;

                       for (int j = 0; j < ochered; j++)

                           time = time + col[j];

                       col_uvilich = ochered;

                   }

                   else

                   {

                   }

               }

               else

               {

                   if (ostatok > 0)

                   {

                       temp = (ogid - obrab);

                       ostatok = ostatok - temp;

                       if (ochered > 0)

                       {

                           ostatok = ostatok + col[ochered];

                           time = time + ostatok;

                           ochered--;

                           for (int j = 0; j < ochered; j++)

                               time = time + col[j];

                           col_uvilich = ochered;

                           //flag = true;

                       }

                       else

                       {

                       }

                   }

                   else

                   {

                   }

               }

                   {

                       series.Add(col_uvilich);

                       col_uvilich = 0;

                       znach++;

                   }

               if (i == n - 1)

               {

                   temp = ogid - obrab;

                   int summa = series.Sum();

                   sr_time_ogid = (double)time / (double)znach;

                   sr_dlina_och = /*(double)*/summa / /*(double)*/znach;

                   sr_time_ogid = sr_time_ogid ;

                   label1.Text = "Ожидание прих. заявки = " + ogid.ToString();

                   label2.Text = "Обработка заявки = " + obrab.ToString();

                   label3.Text = "Общий остаток = " + ostatok.ToString();

                   label4.Text = "Кол-во заявок в очереди = " + ochered.ToString();

                   label5.Text = "Текущий остаток = " + temp.ToString();

                   label7.Text = "Средняя длина очереди = " + sr_dlina_och.ToString();

                   label10.Text = "Среднее время ожидания = " + sr_time_ogid.ToString();             

               }

               

           }

           series.Clear();

           col_uvilich = 0;

          // n = 0;

       }

       private void button3_Click(object sender, EventArgs e)

       {

           if (textBox1.Text != "")

           n = Convert.ToInt32(textBox1.Text);

           label6.Text = "Кол-во обращений = " + n.ToString();

           znach = 0;

           znacht = 0;

           time = 0;

           ochered = 0;

           ostatok = 0;

           sr_time_ogid = 0;

           label10.Text = "Среднее время ожидания = " + sr_time_ogid.ToString();

           //flag = false;

           series.Clear();

       }

       private void button4_Click(object sender, EventArgs e)

       {

           if (textBox2.Text != "")

           l = Convert.ToDouble(textBox2.Text);

           if (textBox3.Text != "")

           m = Convert.ToDouble(textBox3.Text);

           if (ind)

           {

               label8.Text = "l = " + l.ToString();

               label9.Text = "m = " + m.ToString();

           }

           else

           {

               label8.Text = "a = " + l.ToString();

               label9.Text = "b = " + m.ToString();

           }

       }

       private void button5_Click(object sender, EventArgs e)

       {

           if (ind)

           {

               button5.Text = "Изменить на показательное";

               l = 0.05;

               m = 0.75;

               ind = false;

              

           }

           else

           {

               

               button5.Text = "Изменить на равномерное";

               l = 2.5;

               m = 3.0;

               ind = true;

           }

           if (ind)

           {

               label8.Text = "l = " + l.ToString();

               label9.Text = "m = " + m.ToString();

           }

           else

           {

               label8.Text = "a = " + l.ToString();

               label9.Text = "b = " + m.ToString();

           }

       }

   }

}

6


 

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

16930. НЕРВНАЯ РЕГУЛЯЦИЯ РАБОТЫ СЕРДЦА 147 KB
  РАЗДЕЛ. ФИЗИОЛОГИЯ СЕРДЦА И СОСУДОВ. ТЕМА: НЕРВНАЯ РЕГУЛЯЦИЯ РАБОТЫ СЕРДЦА. Работа сердца как насоса его гемодинам ическая производительность является одним из решающих факторов определяющих интенсивность кровотока и соответственно уровень снабжения органов и тк...
16931. ФИЗИОЛОГИЯ СКЕЛЕТНЫХ МЫШЦ. НЕРВНО-МЫШЕЧНАЯ ПЕРЕДАЧА 128.5 KB
  Тема. ФИЗИОЛОГИЯ СКЕЛЕТНЫХ МЫШЦ. НЕРВНОМЫШЕЧНАЯ ПЕРЕДАЧА. Вопросы теоретической подготовки: Физиологические свойства мышечных волокон. Механизм возникновения возбуждения и его проведение в волокнах скелетной мышцы. Типы сокращений мышцы. Двигатель...
16932. ЭЛЕКТРОКАРДИОГРАММА: МЕТОДЫ РЕГИСТРАЦИИ, АНАЛИЗ, ФОРМИРОВАНИЕ 162.5 KB
  Тема. ЭЛЕКТРОКАРДИОГРАММА: МЕТОДЫ РЕГИСТРАЦИИ АНАЛИЗ ФОРМИРОВАНИЕ. При возбуждении сердца на его поверхности и в его тканях возникает разность потенциалов закономерно меняющаяся по величине и направлению. Биоэлектрическая активность разных отделов сердца возника...
16933. Синаптическая передача в ЦНС. Понятие о синапсе. Строение электрического и химического синаптических контактов 75.5 KB
  Физиология лекция №5 Синаптическая передача в ЦНС. Понятие о синапсе. Строение электрического и химического синаптических контактов. События происходящие в химическом синапсе. Медиаторы и принцип Дэйла. Ионотропные и метаботропные эффекты медиаторов. Модуляторы
16934. Этапы изучения мозга человека (от древних египтян до Везалия), какие есть подходы в изучении мозга 72.5 KB
  Физиология лекция №2 Этапы изучения мозга человека от древних египтян до Везалия какие есть подходы в изучении мозга. Что мы знаем и чего мы не знаем о функциях мозга. Какими функциями управляет мозг. Зачем человеку нужно такое длинное детство. В этих вопросах
16935. Ранее рассмотрены функции, связанные с нейросекреторными клетками и клетками которые вырабатывают нейрофебтиды. 72.5 KB
  Физиологи ЦНС лекция №3 Ранее рассмотрены функции связанные с нейросекреторными клетками и клетками которые вырабатывают нейрофебтиды. В гипоталамусе вырабатываются статины и либерины которые включаются в ответную стрэссорную реакцию организма. Если на органи
16936. Психофизиологические методы исследования: артериальное давление, частота сердечных сокращений, ЭКГ, частота дыхания 74 KB
  Физиология ЦНС лекция №4 Психофизиологические методы исследования: артериальное давление частота сердечных сокращений ЭКГ частота дыхания электромиография электроэнцефалография кожногальваническая реакция пупиллометрия. Доказательство влияний на пс
16937. Диспетчерське керування міським електротранспортом 1.08 MB
  Диспетчер на основі автоматизованого виявлення місця розташування ТС має можливість в найкоротший термін організувати виїзд на ДТП чи НС технічної, медичної та іншої допомоги з мінімальними витратами часу. Є можливість проведення радіопереговорів і консультацій про стан учасників події
16938. Свойства нервных центров (на примере двигательной рефлекторной дуги) 79 KB
  Физиология ЦНС лекция №6 Свойства нервных центров на примере двигательной рефлекторной дуги: одностороннее проведение синаптическая задержка иррадиация суммация торможение пре и постсинаптическое Опиатная система мозга: энкефалины и