СМО с ожиданием

Автор работы: Пользователь скрыл имя, 09 Января 2012 в 01:09, курсовая работа

Краткое описание

Теория массового обслуживания впервые применялась в телефонии, а затем и в других областях хозяйственной деятельности, где и сейчас занимает важное место. Примерами СМО могут служить телефонные станции, ремонтные мастерские (заводы, базы, бригады), погрузочно-разгрузочные комплексы (порты, товарные станции), транспортные системы, автозаправочные станции, больницы, торговые точки, предприятия бытового обслуживания и т. д..

Содержание работы

Введение: СМО и их актуальность.
Обзор типов СМО.
СМО с ожиданием: математическая модель и алгоритм работы.
3. Постановка задачи, математическая модель задания, алгоритм выполнения задания.
4. Программная реализация.
Заключение.
Приложения
6. 1. Листинг программы
7. Список используемых источников.

Содержимое работы - 1 файл

да.doc

— 308.00 Кб (Скачать файл)

            double r2 = ((1 - p) * (1 - step2));

            double r = r1 / r2;//средняя длина очереди

            double w = (p - step2) / (1 - step2);//среднее число заявок, находящихся на обслуживании

            double k = r + w;//число заявок, связанных с системой

            double Toj = r / la;//время ожидания заявки

            double Tobsl = q / mu;//время обслуживания заявки

            double Tsmo = Toj + Tobsl;//время нахождения заявки в СМО

            string Votk = Convert.ToString(Potk);//конвертация для вывода

            string Otnosit = Convert.ToString(q);//конвертация для вывода

            string Absolut = Convert.ToString(A);//...

            string Sredn = Convert.ToString(r);//...

            string Obsluj = Convert.ToString(w);//...

            string Svyaz = Convert.ToString(k);//...

            string toj = Convert.ToString(Toj);//...

            string tobsl = Convert.ToString(Tobsl);//...

            string tsmo = Convert.ToString(Tsmo);//...

            richTextBox1.Text = Votk;//Вывод полученных данных

            richTextBox2.Text = "Относительная пропускная способность - " + Otnosit + "\r\n" +

                "Абсолютная пропускная способность - " + Absolut + "\r\n" + "Среднее время нахождения заявки в очереди - " + Sredn + "\r\n" +

                "Среднее время обслуживания заявки - " + Obsluj + "\r\n" + "Кол-во заявок связанных с системой - " + Svyaz + "\r\n" +

                "Время ожидания заявки - " + toj + "\r\n" + "Время обслуживания заявки - " + tobsl + "\r\n" + "Время нахождения заявки в СМО - " + tsmo;

            //вывод полученных выше данных

        }

      private void button2_Click(object sender, EventArgs e)

        {

            PointPairList list = new PointPairList();//лист для записи переменных

            PointPairList list2 = new PointPairList();//лист для записи переменных

            GraphPane pane = new GraphPane();

            zedGraphControl1.GraphPane = pane;

            // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы

            pane.CurveList.Clear();//очистить график

            double xmin = 0;//задание минимальной координаты Х

            double xmax = 200;//задание максимальной координаты Х 

            double ymin = 0;//задание минимальной координаты Y

            double ymax = 2;//задание максимальной координаты

//Далее  следует ввод и рассчет координат  для построения графика

            double Y = Convert.ToDouble(textBox1.Text);//координата Y для построения графика

            double X = Convert.ToDouble(richTextBox1.Text);

            double Y3 = 0;

            double X3 = 0;

           double mu = Convert.ToDouble(textBox2.Text);//ввод переменной мю (интенсивность обработки заявок)

          double m = Convert.ToDouble(textBox3.Text);//ввод переменной м (длина очереди)

          double x;//переменная для рассчета

          for (double y = 0; y <= Y; y++)//цикл для определения точек

              //далее следуют рассчеты

          {   double p = y / mu;

              double step = Math.Pow(p, m);

              double step1 = Math.Pow(p, m + 1);

              double step2 = Math.Pow(p, m + 2);

              x = (step1 * (1 - p)) / (1 - step2);//определение координат по оси x

              list.Add(y, x);//вывод этих координат в лист

             

          }

              LineItem myCurve = pane.AddCurve("P_отк", list, Color.Green, SymbolType.Circle);//определение

          //парамметров точки

              myCurve.Line.IsVisible = false;

              myCurve.Symbol.Fill.Color = Color.Green;//цвет зеленый

              myCurve.Symbol.Fill.Type = FillType.Solid;//тип точки

              myCurve.Symbol.Size = 5;//размер точки 

              double x1;//переменная для рассчетов

              for (double y = 0; y <= Y; y++)//цикл для определения точек

              //далее следуют рассчеты

              {

                  double p = y / mu;

                  double step = Math.Pow(p, m);

                  double step1 = Math.Pow(p, m + 1);

                  double step2 = Math.Pow(p, m + 2);

                  x1 = (step1 * (1 - p)) / (1 - step2);

                  double x2 = 1 - x1;//определение координат x для пропускной способности

                  list2.Add(y, x2);//занесение этих координат в лист2

}

              LineItem myCurve1 = pane.AddCurve("Q", list2, Color.Red, SymbolType.Circle);//определение

          //парамметров точки

      myCurve1.Line.IsVisible = false;

              myCurve1.Symbol.Fill.Color = Color.Red;//цвет зеленый

              myCurve1.Symbol.Fill.Type = FillType.Solid;//тип точки

              myCurve1.Symbol.Size = 5;//размер точки

             // Устанавливаем интересующий нас интервал по оси X

           pane.XAxis.Scale.Min = xmin;

                    pane.XAxis.Scale.Max = xmax;

      // Устанавливаем интересующий нас  интервал по оси Y

                    pane.YAxis.Scale.Min = ymin;

                    pane.YAxis.Scale.Max = ymax;

Информация о работе СМО с ожиданием