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


 

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

42420. Булева алгебра. Законы логики высказываний. Эквивалентные преобразования 83 KB
  Законы логики высказываний. Теоретическая часть Всё множество формул логики высказываний с точки зрения их значения истинности разбивается на три класса: 1 тождественно истинные тавтология; 2 тождественно ложные противоречие; 3 нейтральные. Особое место в логике высказываний занимают законы логики тождественно истинные формулы тавтологии. Законы логики высказываний Закон тождества: А эквивалентно А.
42421. Равносильность формул. Закон двойственности. Логические функции 120.5 KB
  Каждая формула представляет собой функцию входящих в нее букв А В Определение1: Формулы F1 и F2 называются равносильными если при любых значениях входящих в них переменных x1x2xn эти формулы принимают одинаковые значения. Между понятиями равносильности и эквивалентности существует связь: если формулы F1 и F2 равносильны то формула F1F2 эквивалентность принимает одни и те же значения при всех значениях переменных и обратно: если формула F1F2 принимает одни и те же значения при всех значениях переменных то формулы F1 и F2...
42422. Нормальные формы формул. Проблема разрешения 89 KB
  Теорема 1 о приведении к ДНФ: Для любой формулы А можно найти такую формулу В находящуюся в ДНФ что АВ. Формула В называется ДНФ формулы А. Конечно например все ДНФ данной формулы равносильны. Выделим среди ДНФ так называемую совершенную дизъюнктивную нормальную форму формулы.
42423. Полные системы булевых функций. Многочлен Жегалкина. Теорема Поста 60 KB
  Цель работы: овладение навыками представления булевых функций в виде полинома Жегалкина. Теоретическая часть Таблицы истинности булевых функций сростом числа аргументов становятся громоздкими и неудобными. Более удобный аналитический способ задания булевых функций основан на рассмотрении двузначной алгебры Поста с операцией суперпозиции над множеством булевых функций.
42424. Минимизация булевых функций методом Квайна 686 KB
  Теоретическая часть Рассмотренные выше совершенная дизъюнктивная и конъюнктивная нормальные формы СДНФ и СКНФ используются для первоначального представления заданной переключательной функции через функции основной системы. Но эти формы не удобны для построения логических схем ЭВМ так как часто содержат элементы которые можно исключить при синтезе схем исходя из других форм представления функции. Существует ряд эффективных способов нахождения минимальной ДНФ булевой функции. Применяемая в методе Квайна операция неполного склеивания...
42425. Функциональные схемы 435 KB
  Такие схемы встречаются в электронных устройствах используемых в компьютерах калькуляторах телефонных системах и ряде других устройств. Постановка задачи синтеза логических схем По аналогии с тем как из трех элементарных частиц  протонов нейтронов и электронов порождаются различные химические элементы которые соединяясь в молекулы образуют вещества всей живой и неживой природы из трех простейших логических схем  дизъюнктора конъюнктора и инвертора можно образовать сколь угодно сложные функциональные схемы соответствующие...
42426. Нечёткие множества 218 KB
  Стандартное четкое множество строится на основе математической конструкции отсеивающей из универсального множества некоторую часть его элементов. То есть фактически любое множество определяется этим самым свойством или набором свойств S и объединяет некоторое количество не обязательно конечное счетное элементов обладающих свойством S. А теперь давайте попробуем из всей бесконечности всего в нашей Вселенной в которой очевидно есть место и для таких объектов как вода и стаканы сформировать множество на основе вполне понятного...
42427. Фракталы 803.5 KB
  Цель работы: ознакомиться с фрактальными структурами в физических системах и явлениях и научиться их программировать. Как подступиться к моделированию каскадных водопадов или турбулентных процессов определяющих погоду Фракталы и математический хаос подходящие средства для исследования поставленных вопросов. Термин фрактал относится к некоторой статичной геометрической конфигурации такой как мгновенный снимок водопада.
42428. Проектирование RAM 304 KB
  Из-за наличия всего одной шины и для адреса и для данных необходимо ввести дополнительный регистр для чтения в него адреса и следовательно требуется добавить команду записи адреса с шины в регистр. Тогда структурная схема имеет вид: Тогда система команд имеет следующий вид: not RS not CS not WE MO 1 X X M 0 0 0 WR 0 0 1 RD 0 1 X Запись адреса в RG ПРОЕКТИРОВАНИЕ РЕГИСТРА Регистр адреса состоит из 10 одноразрядных регистров-триггеров. Следовательно схема регистра адреса для 1го разряда будет иметь вид: Полный регистр:...