Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задание 4-6.docx
Скачиваний:
8
Добавлен:
28.05.2015
Размер:
555.85 Кб
Скачать

Задание 6. Выбор оптимального варианта решения развития станции технического обслуживания

Станция технического обслуживания (СТО) выполняет ремонт и обслуживание автомобилей. В среднем в час на СТО прибывает λ автомобилей. СТО имеет m боксов для ремонта и гараж, в котором могут ожидать обслуживания v автомобилей. Среднее время ремонта автомобиля составляет t часов.

Руководство СТО может выбрать одно из двух решений по развитию, затраты на реализацию которых приблизительно равны:

  • построить и оборудовать ещё один бокс для ремонта,

  • увеличить гараж для ожидающих ремонта автомобилей ещё на k мест.

Считая, процесс обслуживания автомобилей марковским процессом с пуассоновским потоком заявок и показательным распределением времени обслуживания, выбрать оптимальный вариант развития СТО по критерию максимума пропускной способности.

Парамет- ры СТО

Номер варианта

6

λ

1.0

m

3

v

2

t

3.5

k

3

Результаты работы программы.

Код основной части программы, выполняющий решение.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace sto_station

{

class Program

{

static void Main(string[] args)

{

double y=1;

double m=3;

double v=2;

double t=3.5;

double k=3;

Console.WriteLine("Исходные данные: " + y + " " + m + " " + v + " " + t + " " + k + Environment.NewLine);

Console.WriteLine("РЕШЕНИЕ");

Console.WriteLine("По условию задачи, нужно сравнить два варианта функционирования СТО:");

Console.WriteLine("а) увеличить значение m до " + Convert.ToString(m + 1));

Console.WriteLine("б) увеличить v на k мест, т.е. до v=" + Convert.ToString(v + k));

double u;

u = 1 / t;

u = Math.Round(u, 3);

Console.WriteLine("μ = 1 / t =" + "1/" + Convert.ToString(t) + " = " + Convert.ToString(u));

double a;

a = y / u;

a = Math.Round(a, 3);

Console.WriteLine("α = λ / μ = " + Convert.ToString(y) + "/" + Convert.ToString(u) + " = " + Convert.ToString(a));

Console.WriteLine(Environment.NewLine + "РАССМОТРИМ ПЕРВЫЙ ВАРИАНТ");

Console.WriteLine("Находим вероятность того, что в системе нет заявок:");

double p0;

double summ1 = 0;

double fact = 1;

summ1 = Math.Pow(a, 0) / 1;

for (int i = 1; i < m + 1; i++)

{

fact = fact * i;

summ1 = summ1 + ((Math.Pow(a, i)) / fact);

}

double summ2;

summ2 = 0;

for (int r = 1; r < m + 1 + 1; r++)

{

summ2 = summ2 + Math.Pow((a / (m + 1)), r);

}

summ2 = summ2 * Math.Pow(a, m + 1);

fact = 1;

for (int i = 1; i < m + +1 + 1; i++)

{

fact = fact * i;

}

summ2 = summ2 / fact;

p0 = 1 / (summ1 + summ2);

p0 = Math.Round(p0, 3);

Console.WriteLine("P(0)=" + Convert.ToString(p0));

double p_mv;

p_mv = 0;

p_mv = Math.Pow(a, (m + 1 + v)) * p0 / (Math.Pow(m + 1, v) * fact);

p_mv = Math.Round(p_mv, 3);

Console.WriteLine("P(m+v)=" + Convert.ToString(p_mv));

double q1;

q1 = 1 - p_mv;

Console.WriteLine("Относительная пропускная способность составит " + Convert.ToString(q1));

Console.WriteLine(Environment.NewLine + "РАССМОТРИМ ВТОРОЙ ВАРИАНТ");

Console.WriteLine("Находим вероятность того, что в системе нет заявок:");

double p0_1;

fact = 1;

summ1 = Math.Pow(a, 0) / 1;

for (int i = 1; i < m + 1; i++)

{

fact = fact * i;

summ1 = summ1 + ((Math.Pow(a, i)) / fact);

}

fact = 1;

for (int i = 1; i < m + +1 + 1; i++)

{

fact = fact * i;

}

double fact1 = fact;

fact = fact * (m + 1 - a);

p0_1 = 1 / (summ1 + ((Math.Pow(a, m + 1)) * (1 - (Math.Pow(a / (m + 1), v)))) / fact);

p0_1 = Math.Round(p0_1, 5);

Console.WriteLine("P(0)=" + Convert.ToString(p0_1));

double p_mv_1;

p_mv_1 = Math.Pow(a, (m + 1 + v)) * p0_1 / (Math.Pow(m + 1, v) * fact1);

p_mv_1 = Math.Round(p_mv_1, 3);

Console.WriteLine("P(m+v)=" + Convert.ToString(p_mv_1));

double q2;

q2 = 1 - p_mv_1;

Console.WriteLine("Относительная пропускная способность составит " + Convert.ToString(q2) + Environment.NewLine);

if (q1 > q2)

{

Console.WriteLine("q1>q2, поэтому первый вариант предпочтительнее");

}

if (q1 < q2)

{

Console.WriteLine("q1<q2, поэтому второй вариант предпочтительнее");

}

if (q1 == q2)

{

Console.WriteLine("q1=q2, оба варианта оптимальны");

}

Console.ReadKey();

}

}

}