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


 

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

41658. Защита информации, антивирусная защита. Эксплуатационные требования к компьютерному рабочему месту 185.58 KB
  Лист № докум. Подпись Дата Лист 1 Лабораторная работа № 3 Разраб. Листов 3 47Э1 Цель работы Ознакомиться с теоретическими аспектами защиты информации от вредоносных программ: разновидности вирусов способы заражения и методы борьбы. Лист № докум.
41659. РАБОТА В ПРОГРАММНОЙ СРЕДЕ MICROSOFT OUTLOOK 757.34 KB
  Программная среда Microsoft Outlook пришла на смену разнообразным видам бумажных носителей которые использовали руководители и секретари для организации своей работы. Сегодня для организации документов и отправки почты планирования задач встреч событий и собраний ведения списка контактов а также учета всех выполненных работ используется программа Microsoft Outlook. Информация в среде Outlook организована в виде папок аналогичных по назначению своим бумажным предшественникам.
41660. Поверка средств измерений 39.3 KB
  Поверка средств измерений Цели и задачи работы: Изучение правил организации и порядка проведения поверки средств измерения. Краткие сведения из теории: Поверкой средств измерений называют совокупность действий выполняемых для определения и оценки погрешностей средств измерений. Вид поверки определяют в зависимости от того какой метрологической службой проведена поверка от характера поверки инспекционная экспертная каков этап работы средства измерений первичная периодическая внеочередная. Организацию и поверку средств измерений...
41661. Косвенные измерения. Определение показателей точности косвенных измерений 587.13 KB
  Косвенные измерения. Определение показателей точности косвенных измерений Цели и задачи работы: изучение методов измерения при которых искомое значение физической величины находят путем согласованных наблюдений других величин определяемых опытным путем связанных с искомой физической величиной известной зависимостью; ознакомление с правилами оценивания погрешностей косвенных измерений. При выполнении работы необходимо практически ознакомиться с системой допусков и посадок требованиями к точности линейных и угловых параметров изделий...
41662. Вставка и редактирование формул в редакторе WORD 73.64 KB
  Вставка и редактирование формул. Вставка формул. Вставка формул в редакторе WORD осуществляется с помощью формульного редактора. Вызов формульного редактора Eqution Editor из Word можно осуществить следующей последовательностью действий: поместите курсор в то место где должна быть вставлена формула; в меню вставка выберите команду обьект ; выберите закладку создание ; В окне тип обьекта выберите Microsoft Eqution 3.
41663. Теория электрической связи 263.74 KB
  Получение характеристик частотного модулятора при воздействии на его вход моногармонического сигнала. Напряжение смещения Есм являющееся постоянной составляющей модулирующего сигнала позволяет установить несущую частоту модулированного сигнала а переменная составляющая т. сам модулирующий сигнал поданный на гнезда КТ1 обеспечивает девиацию частоты fmx зависящую от амплитуды модулирующего сигнала. В схеме модулятора имеется блок автоматической регулировки усиления поддерживающий постоянную амплитуду ЧМ сигнала на схеме не показан.
41664. Исследование зависимости выходного напряжения усилительного каскада от амплитуды и частоты входного сигнала 155.55 KB
  Цель: Научиться определять и анализировать зависимости выходного напряжения усилительного каскада от амплитуды и частоты входного сигнала. Лабораторная работа №6 Тема: Исследование зависимости выходного напряжения усилительного каскада от амплитуды и частоты входного сигнала. Лабораторная работа №6 Тема: Исследование зависимости выходного напряжения усилительного каскада от амплитуды и частоты входного сигнала.