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


 

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

79732. Учет затрат на производство и калькулирование себестоимости продукции 105.5 KB
  Учет затрат на производство и калькулирование себестоимости продукции Задачи учета затрат на производство и калькулирование себестоимости продукции. Варианты учета затрат. Характеристика учет и распределение затрат вспомогательных производств. Методы учета затрат на производство продукции и калькулирование себестоимости продукции.
79733. Учет издержек обращения 60 KB
  Учет издержек обращения Задачи и классификация издержек обращения Учет транспортных расходов Учет расходов связанных с товарными запасами Учет расходов связанных с основными средствами Учет расходов на оплату труда и социальные нужды. Учет издержек обращения относящихся к реализованным товарам Задачи и классификация издержек обращения Издержки обращения – это затраты материальных денежных и трудовых ресурсов связанные с переводом товаров из сферы производства в сферу потребления. Издержки обращения относятся к категории затрат...
79734. Учет реализации товаров в организации оптовой торговли 43 KB
  Учет реализации товаров в организации оптовой торговли Формы оптовой реализации товаров Учет реализации в момент оплаты товаров. Учет реализации в момент отгрузки товаров. Учет реализации товаров транзитом Формы оптовой реализации товаров Различают две основные формы оптовой реализации товаров: реализация товаров со складов складской оборот; реализация товаров транзитом транзитный оборот. Реализация товаров транзитом в свою очередь применяется как с участием так и без участия оптового предприятия в расчетах.
79735. Учет собственного капитала 46.5 KB
  Учет собственного капитала Учет уставного капитала. Учет резервного капитала Учет добавочного капитала Учет уставного капитала Собственный капитал состоит из уставного капитала добавочного и резервного капитала резервных фондов и нераспределенной прибыли. Для характеристики той чисти собственного капитала размер которой указывается в учредительных документах используют понятие уставный капитал складочный капитал уставный фонд паевой фонд. Все эти виды собственного капитала учитываются на счете 85 Уставный капитал. Сальдо этого...
79736. Учет товарных потерь 52.5 KB
  Учет товарных потерь Нормируемые и ненормируемые потери Взаимозачет недостатков одних товаров излишками других Отражение в учете сумм недостач хищений и потерь от порчи ценностей Учет товарных потерь вследствие естественной убыли Товарные потери при транспортировке Нормы естественной убыли на складах Резерв на списание естественной убыли Нормируемые и ненормируемые потери Товарные потери возникают при транспортировке хранении и отпуске товаров. К ненормируемым относятся потери от боя брака и порчи товаров а также потери по...
79737. Учет финансовых результатов 93.5 KB
  Учет прибыли убытков предприятия. Распределение прибыли. Учет прибыли убытков предприятия Финансовый результат хозяйственной деятельности предприятия определяется показателем прибыли или убытка формируемым в течение календарного хозяйственного года. Формирование итогов годового финансового результата осуществляется накопительным путем в течение всего года на счете 80 Прибыли и убытки виде его свернутого остатка отражающего либо прибыль по кредиту счета либо убыток по дебету счета.
79738. Бухгалтерский учет банковских кредитов 106 KB
  Любое предприятие, получив в банке кредит, должно, во-первых, правильно выбрать источник списания затрат на оплату процентов за пользование ссудой, и во-вторых, достоверно отразить в учете и отчетности сумму возникшего перед банком обязательства.
79739. Бухгалтерский учет выпуска готовой продукции 76 KB
  Бухгалтерский учет выпуска готовой продукции Методика расчета фактической себестоимости отгруженной продукции на счете. Методика расчета фактической себестоимости отгруженной продукции с использованием учетных цен Методика использования фактической себестоимости по прямому принципу без использования учетных цен Речь идет о решении организации применять или не применять счет...
79740. Бухгалтерский учет материалов 107.5 KB
  Аналитический текущий учет материальных ценностей можно вести: либо в оценке по учетным ценам, либо в оценке по фактической средней себестоимости. На малых предприятиях, где количество наименований материалов невелико