51317

ПОСТРОЕНИЕ ИМИТАЦИОННОЙМОДЕЛИ СМО И ЕЁ ИССЛЕДОВАНИЕ

Лабораторная работа

Информатика, кибернетика и программирование

Два наладчика обслуживают 6 станков. Станок требует наладки в среднем через каждые 0,5 часа. Наладка занимает у рабочего в среднем 10 минут. Все потоки событий – простейшие. Определить, как изменятся следующие показатели...

Русский

2014-02-09

320 KB

22 чел.

Министерство образования Республики Беларусь

Учреждение образования

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Факультет компьютерных систем и сетей

Кафедра программного обеспечения информационных технологий

Отчёт по лабораторной работе №4

по дисциплине

«Системный анализ и машинное моделирование»

ПОСТРОЕНИЕ ИМИТАЦИОННОЙМОДЕЛИ СМО И ЕЁ ИССЛЕДОВАНИЕ

Вариант 16

Выполнил:         Проверил:

студент гр. 751001       Мельник Н. И.

Мойса Д. С.

Минск, 2010

1. Исходные данные

Два наладчика обслуживают 6 станков. Станок требует наладки в среднем через каждые 0,5 часа. Наладка занимает у рабочего в среднем 10 минут. Все потоки событий – простейшие. Определить, как изменятся следующие показатели:

- среднее число занятых работников;

- абсолютная пропускная способность;

- среднее число неисправных станков,

если рабочие будут налаживать станки совместно, затрачивая при этом на наладку одного станка в среднем 5 минут.

2. Анализ исходных данных

В первом случае, когда наладчики ремонтируют станки по отдельности, получим модель СМО, изображенную на рисунке 1-а.

Во втором случае, когда наладчики работают вместе, получим модель, изображенную на рисунке 2-б.

Рис 1-а

Рис 1-б

Примем во внимание, что если станок сломан и подал заявку на ремонт, то в этом случае он далее заявки не подает, пока не будет отремонтирован.

3. Построение диаграмм интенсивности переходов

В случае А диаграмма интенсивности переходов будет иметь вид:

В случае Б диаграмма интенсивности переходов будет иметь вид:

4. Построение математической модели

Случай А:

- Среднее число занятых рабочих  К=1.3892554194156456173.

- Абсолютная пропускная способность А=8.335532516493873704.

- Среднее число неисправных станков Lc=1.832233741753063148.

Случай Б:

- Среднее число занятых рабочих  К=0.7350776778413736713.

- Абсолютная пропускная способность А=8.8209321340964840556.

- Среднее число неисправных станков Lc=1.5895339329517579722.


5. Исходный код программы

Random R = new Random();

       private void btStart_Click(object sender, EventArgs e)

       {

           TwoChannelsWork();

           OneWorkerWorks();          

       }

       public void TwoChannelsWork()

       {

           double p = 1 / (60 * double.Parse(tbP.Text));

           double q = 1 / (60 * double.Parse(tbQ.Text));

           Queue<Request> RequestQueue = new Queue<Request>();

           int WorkingWorker = 0;

           int BreakingSource = 0;

           int SourcesGot = 0;

           Request[] Worker = new Request[2];

           int[] Source = new int[6];

           for (int i = 0; i < Source.Length; i++)

               Source[i] = ExpDistributionGetInterval(p);

           for (int i = 0; i < Worker.Length; i++)

               Worker[i] = new Request(-1, 0);

           for (int Quant = 0; Quant < 100000; Quant++)

           {

               for (int i = 0; i < Source.Length; i++)

               {

                   if (Source[i] > 0)

                       Source[i]--;

                   if (Source[i] == 0)

                   {

                       RequestQueue.Enqueue(new Request(i, ExpDistributionGetInterval(q)));

                       Source[i] = -1;

                   }

               }

               for (int i = 0; i < 2; i++)

               {

                   if (Worker[i].time == 0)

                   {

                       if (Worker[i].index != -1)

                           Source[Worker[i].index] = ExpDistributionGetInterval(p);

                       if (RequestQueue.Count > 0)

                           Worker[i] = RequestQueue.Dequeue();

                       else

                           Worker[i].index = -1;

                   }

                   else

                       Worker[i].time--;

               }

               for (int i = 0; i < Source.Length; i++)

                   if (Source[i] > 0)

                       SourcesGot += (int)(p * 5000);

               for (int i = 0; i < Worker.Length; i++)

               {

                   if (Worker[i].index >= 0)

                   {

                       WorkingWorker++;

                       BreakingSource++;

                   }

               }

               BreakingSource += RequestQueue.Count;

               //listBox1.Items.Add(w.ToString()+"   "+RequestQueue.Count+"   "+ql.ToString()+"   "+(w+RequestQueue.Count+ql).ToString());

           }

           tbAverageWorkersA.Text = ((double)WorkingWorker / 100000).ToString();

           tbBreakingA.Text = ((double)(BreakingSource) / 100000).ToString();

           tbSourceGotA.Text = ((double)SourcesGot / 100000).ToString();

       }

       public void OneWorkerWorks()

       {

           double p = 1 / (60 * double.Parse(tbP.Text));

           double q = 1 / (60 * double.Parse(tbQ.Text));

           Queue<Request> RequestQueue = new Queue<Request>();

           int WorkingWorker = 0;

           int BreakingSource = 0;

           int SourcesGot = 0;

           int[] Source = new int[6];

           for (int i = 0; i < Source.Length; i++)

               Source[i] = ExpDistributionGetInterval(p);

           Request Worker = new Request(-1, 0);

           for (int Quant = 0; Quant < 100000; Quant++)

           {

               for (int i = 0; i < Source.Length; i++)

               {

                   if (Source[i] > 0)

                       Source[i]--;

                   if (Source[i] == 0)

                   {

                       RequestQueue.Enqueue(new Request(i, ExpDistributionGetInterval(2 * q)));

                       Source[i] = -1;

                   }

               }

               if (Worker.time == 0)

               {

                   if (Worker.index != -1)

                       Source[Worker.index] = ExpDistributionGetInterval(p);

                   if (RequestQueue.Count > 0)

                       Worker = RequestQueue.Dequeue();

                   else

                       Worker.index = -1;

               }

               else

                   Worker.time--;

               for (int i = 0; i < Source.Length; i++)

                   if (Source[i] > 0)

                       SourcesGot += (int)(p * 5000);

               if (Worker.index >= 0)

               {

                   WorkingWorker++;

                   BreakingSource++;

               }

               BreakingSource += RequestQueue.Count;

               //listBox1.Items.Add(w.ToString()+"   "+RequestQueue.Count+"   "+ql.ToString()+"   "+(w+RequestQueue.Count+ql).ToString());

           }

           tbAverageWorkersB.Text = ((double)WorkingWorker / 100000).ToString();

           tbBreakingB.Text = ((double)(BreakingSource) / 100000).ToString();

           tbSourceGotB.Text = ((double)SourcesGot / 100000).ToString();

       }

       public class Request

       {

           public int time;

           public int index;

           public Request(int ind, int tim)

           {

               time = tim;

               index = ind;

           }

       }


q

q

p

p

p

p

p

2q

p

p

p

p

p

6

p

6


 

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

6832. Конфігурування протоколу RIP v.2 233.5 KB
  Конфігурування протоколу RIP v.2 Мета: Навчитися конфігурувати дистанційно - векторний протокол RIP v.2, виявляти та виправляти несправності у його роботі. Задачі поставлені у лабораторній роботі виконуються в два етапи На віртуальному емуля...
6833. Конфігурування протоколу EIGRP 229.5 KB
  Конфігурування протоколу EIGRP Мета: Навчитися конфігурувати протокол EIGRP. Проестувати створену конфігурацю протоколу EIGRP. Задачі поставлені у лабораторній роботі виконуються в два етапи 1. На віртуальному емуляторі Packet Tracer На лабо...
6834. Початкова настройка маршрутизаторів. Конфігурування статичних маршрутів та маршрутів по замовчуванню 378.5 KB
  Початкова настройка маршрутизаторів. Конфігурування статичних маршрутів та маршрутів по замовчуванню Мета: Навчитися налаштовувати маршрутизатори, задавати ім'я маршрутизатору, конфігурувати: інтерфейси, статичні маршрути та маршрути по з...
6835. Фильтрация сетевого трафика в iptables 79 KB
  Фильтрация сетевого трафика в iptables В общем случае правила фильтрации могут использовать любые данные заголовков IP (IP-адреса источника и получателя), ICMP (type и code), UDP (порт - источник и порт - получатель), TCP (порт - источник,...
6836. Конфігурування протоколу OSPF 230 KB
  Конфігурування протоколу OSPF Мета: Ознайомитися з протоколом маршрутизації OSPF, навчитися створювати конфігурацію цього протоколу та тестувати OSPF - маршрутизацію. Задачі поставлені у лабораторній роботі виконуються в два етапи 1. На віртуал...
6837. Основы организации VPN в ОС Windows 150 KB
  Основы организации VPN в ОС Windows Организация VPN средствами протокола PPTP В данном сценарии моделируется VPN-соединение по выделенному каналу на основе Ethernet между клиентом и шлюзом некоторой сети. Предлагается организовать соединение п...
6838. Конфігурування протоколу РРР. Налаштування аутентифікації РАР і СHAP 261.5 KB
  Конфігурування протоколу РРР. Налаштування аутентифікації РАР і СHAP Мета роботи: Вивчити принципи конфігурування протоколу PPPна маршрутизаторі Cisco2800. Порядок виконання роботи: Виконання даної лабораторної ро...
6839. Налаштування початкової конфігурації комутатора 226 KB
  Налаштуванняпочаткової конфігурації комутатора Мета Налаштування початкової конфігурації комутатора CiscoCatalyst 2960. Загальні відомості/підготовка В даній лабораторній роботі PacketTracer описується налаштування клієнтсько...
6840. Служба каталогов Active Directory и использование групповых политик 239 KB
  Служба каталогов ActiveDirectory и использование групповых политик СЛУЖБА КАТАЛОГОВ Общие сведения о службе каталогов На заре компьютеризации все управление пользователями сводилось к администрированию одного единственного сервера. Со...