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


 

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

20921. ДОСЛІДЖЕННЯ РОБОТИ МУЛЬТИВІБРАТОРА 64.5 KB
  2 із зображенням мультивібратора рис. Визначити за допомогою осцилографа амплітуду частоту і шпаруватість сигналу на виході мультивібратора. Часові діаграми роботи мультивібратора показані на рис.
20922. ДОСЛІДЖЕННЯ ІНТЕГРАТОРА 184 KB
  Експериментальне визначення перехідних характеристик інтегратора рис. Натисніть кнопку 20 сек панелі і кнопку С1 Інтегратор відлічуючи по секундоміру стенду час за допомогою U вих виконайте вимірювання зміни в часі вихідної напруги інтегратора. побудуйте перехідні характеристики інтегратора.
20923. ДОСЛІДЖЕННЯ ЕЛЕМЕНТІВ, ЩО ВИКОНУЮТЬ ЛОГІЧНІ ОПЕРАЦІЇ 105.5 KB
  Мета роботи: ознайомитися з принципом і режимом роботи логічних елементів. При виконанні роботи визначаються передавальні характеристики логічного елементу при різних опорах навантаження а також складаються таблиці станів для логічних елементів €œІ€ €œНІ€ €АБО€ €АБОНІ€ €ІНІ€. Визначення передавальних характеристик логічних елементів рис. Складання таблиць істинності логічних елементів.
20924. ДОСЛІДЖЕННЯ ТРИГЕРІВ 241 KB
  При виконанні цієї роботи вивчається дія асинхронного RSтригера а також двох синхронних: Ттригера і JКтригера Порядок виконання роботи Робота виконується на лабораторному стенді ЭС21. Дослідження RS тригера рис. З'єднати входи R і S тригера з клемами панелі Рівень логічний. З'єднати прямий вихід тригера з клемами вольтметра що вимірює вихідний сигнал.
20925. ДОСЛІДЖЕННЯ ЛІЧИЛЬНИКІВ 1.12 MB
  Порядок виконання роботи Робота виконується на стенді ЭС21 Дослідження двійкового лічильника рис11. З'єднати вхід R лічильника з клемою панелі €œРівень логічний€ а вхід С лічильника з клемою панелі €œІмпульс одиночний€ і з клемою €œВхід€ панелі €œЛічильник імпульсів€. Натисненням кнопки панелі €œІмпульс одиночний€ подавати імпульси на вхід С досліджуваного лічильника. Після подачі чергового імпульсу визначати стан всіх виходів досліджуваного лічильника за допомогою вольтметра €œ U вих.
20926. ДОСЛІДЖЕННЯ ФОТОЕЛЕМЕНТІВ І ФОТОРЕЛЕ 806 KB
  Величина напруги необхідної для зняття характеристик встановлюється за допомогою відповідних потенціометрів а світлового потоку перемикачами розташованими під вікном з фотоелементами. Порядок виконання роботи Зібрати схему дослідження вакуумного фотоелемента СЦВ3 рис. Рис.
20927. ДОСЛІДЖЕННЯ МАЛОПОТУЖНОГО ДЖЕРЕЛА ЖИВЛЕННЯ 262 KB
  Накреслити осцилограми напруги на навантаженні при величині струму Iн = 60 мА. Виміряти за допомогою цифрового вольтметра змінну складову напруги на навантаженні і постійну напругу при струмі навантаження Iн = 60 мА. Обчислити коефіцієнт пульсацій випрямленої напруги: де U m – амплітуда змінної складової вихідної напруги. Накреслити осцилограму напруги на навантаженні.
20928. ДОСЛІДЖЕННЯ БІПОЛЯРНОГО ТРАНЗИСТОРА 378 KB
  Для зняття вхідних статичних характеристик транзистора необхідно: а включити тумблери B1 ВЗ В4 В6 В9 B11 вимкнути тумблери В2 В5; тумблер В12 поставити в положення ; б за допомогою ручки РЕГ. Для зняття вихідних статичних характеристик транзистора потрібно: а встановити необхідне значення базового струму регулятором РЕГ.2; б змінюючи напругу Uке через інтервали вказані викладачем вимірювати значення колекторного струму транзистора міліамперметром СТРУМ Iк .
20929. ДОСЛІДЖЕННЯ ОДИНОЧНИХ КАСКАДІВ ТРАНЗИСТОРНИХ ПІДСИЛЮВАЧІВ 97 KB
  Зібрати схему дослідження підсилювача із спільним емітером рис. а BI4 в положення Із спільним емітером ; тумблери В2 В5 В9 BI1 поставити в положення Вкл. Зібрати схему дослідження підсилювача із спільним колектором рис.