Опубликован: 07.11.2014 | Доступ: свободный | Студентов: 359 / 12 | Длительность: 15:17:00
ISBN: 978-5-9556-0161-8
Тема: САПР
Лекция 8:

Модель предоставления ремонтных услуг

< Лекция 7 || Лекция 8: 12345 || Лекция 9 >

Модель в AnyLogic

Постановка задачи

В фирму предоставления ремонтных услуг поступают заявки n типов с вероятностями р1, р2, …, рn соответственно. Интервалы времени Тп между двумя очередными поступлениями одного типа заявок случайные. Каждый любой тип заявки может требовать одного из а1, а2, …, аk видов ремонта с вероятностями рa1, рa2, …, рak соответственно.

В фирме имеются n1, n2, …, nn мастеров для выполнения заявок каждого типа соответственно. Мастера n1 выполняют заявки первого типа. Если их нет и мастера n2, …, nn групп заняты, они выполняют заявки этих типов. При этом поступающие заявки первого типа ожидают их освобождения. Мастера n2 выполняют заявки второго типа. Если их нет и мастера n3, n4, …, nn групп заняты, они выполняют заявки этих типов. При этом поступающие заявки второго типа ожидают их освобождения. Аналогичные обязанности и у мастеров остальных групп. Только мастера nn выполняют заявки одного n-го типа.

Время выполнения заявки n-го типа случайное, не зависит от мастера, а зависит только от вида ремонта: Т11, Т12, Т13 - для СС первого типа, Т21, Т22, Т23 - для СС второго типа, …, Tn1, Tn2, …, Tnn - для СС n-го типа.

Прием и распределение заявок между группами мастеров осуществляется d диспетчерами. Время, затрачиваемое одним диспетчером на одну заявку, Т1, случайное. Диспетчерами не принимаются к ремонту q заявок всех типов.

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

exponential(Тп) = exponential (30); n = 4;
p1 = 0.2, p2 = 0.3, p3 = 0.25, p4 = 0.25;
p11 = 0.5, p12 = 0.25, p13 = 0.25;
n1 = 2;	T11 = 30;	T12 = 40;	T13 = 50;
n2 = 1;    T21 = 20;	T22 = 30;	T23 = 40;
n3 = 1;  	T31 = 15;	T32 = 25;	T33 = 35;
n4 = 1;    T41 = 25;	T42 = 35;	T43 = 45;
d = 2;	normal(T1, To1) = normal(15, 2);	q = 2 %.

Интервалы времени между поступлениями заявок и время выполнения заявок распределены по экспоненциальному закону. Время обслуживания одной заявки диспетчером подчинено нормальному закону.

Задание на исследование

Разработать имитационную модель предоставления ремонтных услуг. Исследовать зависимость количества выполненных заявок и вероятностей выполнения заявок всех типов от интервала Тп поступления их в ремонт и вероятностей p1, p2, p3, p4.

Результаты моделирования необходимо получить с точностью \varepsilon =0,01 и доверительной вероятностью \alpha =0,95.

Сделать выводы о загруженности каждой группы мастеров и необходимых мерах по повышению эффективности работы фирмы предоставления ремонтных услуг.

Формализованное описание модели

Уясним задачу на разработку модели, предварительно представив структуру фирмы предоставления ремонтных услуг (Рис. 8.1) как СМО.

Фирма предоставления ремонтных услуг как СМО

увеличить изображение
Рис. 8.1. Фирма предоставления ремонтных услуг как СМО

Фирма предоставления ремонтных услуг представляет собой многофазную многоканальную систему массового обслуживания разомкнутого типа с отказами.

Исходя из структуры, модель предоставления ремонтных услуг должна состоять из следующих сегментов:

  • ввода исходных данных;
  • источника заявок;
  • диспетчеров;
  • мастеров;
  • учёта выполненных ремонтов.

Заявки на ремонт должны иметь следующие параметры (поля):

  • типЗ - код типа заявки;
  • видР - вид ремонта;
  • времяР - время выполнения одного вида ремонта;

Как уже отмечалось, интервалы между соседними заявками подчинены экспоненциальному закону. Принято, что за время Tp от каждого источника поступает одна заявка. Тогда средний интервал поступления заявок равен Tp/n. Поэтому вместо n объектов имитации источников заявок будем использовать один.

Код типа заявки определяется в виде чисел 1, 2, 3, 4, так как n=4. Код вида ремонта определяется также числами 1…3 соответственно. Для этого используются следующие исходные данные:

  • p1 … p4 - вероятности поступления заявок 1…4 типов соответственно;
  • p11 … p43 - вероятности поступления заявок 1…4 типов с видами 1…3 ремонтов соответственно.

Коды типа заявки и вида ремонта записываются в поля типЗ и видР соответственно.

По этим кодам определяется среднее время вида ремонта и заносится в поле времяР.

В процессе выполнения модели накапливаются следующие статистические данные:

  • постЗаявТип1 … постЗаявТип1, постЗаявТип - количество поступивших заявок 1…4 типов и заявок всех типов;
  • выпЗаявТип1 … выпЗаявТип1, выпЗаявТип - количество выполненных заявок 1…4 типов и заявок всех типов;
  • выпРемВида11 … выпРемВида43 - количество выполненных заявок 1…4 типов с видами 1…3 ремонтов соответственно.

Поскольку эти данные накапливаются за все прогоны модели, то для получения средних значений они делятся на количество прогонов колПрог. Например, выпЗаявТип1=выпЗаявТип1/ колПрог.

По этим же статистическим данным рассчитываются:

  • верВыпЗаяв1 … верВыпЗаяв4, верВыпЗаяв - вероятности выполнения заявок 1…4 типов и заявок всех типов.

Например, верВыпЗаяв1=выпЗаявТип1/постЗаявТип1.

Ввод исходных данных

Элементы для ввода исходных данных разместим на агенте верхнего уровня Main.

  1. Выполните команду Файл/Создать/Модель на панели инструментов. Откроется диалоговое окно Новая модель.
  2. В поле Имя модели диалогового окна Новая модель введите Рем_услуги. Выберите каталог, в котором будут сохранены файлы модели.
  3. Щёлкните Готово.
  4. Создайте область просмотра для размещения исходных данных на агенте Main. Из палитры Презентация перетащите элемент Область просмотра. На странице Основные панели Свойства в поле Имя: введите Данные.
  5. Задайте, как будет располагаться область просмотра относительно ее якоря, с помощью элемента управления Выравнивать по: Верхн. левому углу.
  6. Выберите режим масштабирования из выпадающего списка Масштабирование: Подогнать под окно.
  7. На странице Местоположение и размер панели Свойства введите в поля X: 0, Y: 650, Ширина: 610, Высота: 590.
  8. Из палитры Презентация перетащите элемент Скруглённый прямоугольник. Оставьте имя, предложенное системой. В прямоугольнике мы разместим элементы для ввода исходных данных и вывода результатов моделирования.
  9. На странице Местоположение и размер панели Свойства введите в поля X: 10, Y: 670, Ширина: 590, Высота: 560.
  10. Перетащите элемент text и на странице Текст панели Свойства вместо слова text: введите Исходные данные.
    Размещение элементов Параметр и Переменная

    увеличить изображение
    Рис. 8.2. Размещение элементов Параметр и Переменная
  11. В Палитре выделите Основная. Перетащите элементы Параметр на элемент Скругленный прямоугольник. Разместите их так, как показано на Рис. 8.2. Используйте копирование.
  12. Значения свойств установите согласно Табл. 8.1. Во всех элементах оставьте установленным флажок Отображать имя.
  13. Тип элементов с именами колДисп, колМастеров1…колМастеров4 установите int. Тип остальных элементов - double.

Имена параметров оставлены практически такими же, как в постановке задачи на разработку имитационной модели. По Рис. 8.2 нельзя определить, например, в Т11 русская буква Т или английская. Поэтому принимайте решение сами. Тем не менее, лучше все имена давать на одном языке.

Таблица 8.1.
Элементы и их свойства
Параметр Параметр
Имя Значение по умолчанию Имя Значение по умолчанию
Tp 30 T1 15
n 4 To1 2
T11 30 p11 0,5
T12 40 p12 0,75
T13 50 p13 1
T21 20 p21 0,5
T22 30 p22 0,75
T23 40 p23 1
T31 15 p31 0,5
T32 25 p32 0,75
T33 35 p33 1
T41 25 p41 0,5
T42 35 p42 0,75
T43 45 p43 1
колПрог 1000 колДисп 2
колМастеров1 2 колМастеров3 1
колМастеров2 1 колМастеров4 1

Вывод результатов моделирования

  1. На Область просмотра мы уже перетащили Скругленный прямоугольник. На нём мы будем также размещать, как отмечалось ранее, элементы для вывода результатов моделирования.
  2. Перетащите на него элемент text и на странице Текст: панели Свойства вместо слова text введите Результаты моделирования. Поместите этот текст посредине в нижней части элемента Скругленный прямоугольник.
  3. Из палитры Основная перетащите элементы Переменная. Разместите их и дайте им имена согласно Рис. 8.2. Тип всех переменных double.
< Лекция 7 || Лекция 8: 12345 || Лекция 9 >
Артём Нагайцев
Артём Нагайцев

Выдает ошибку "entity cannot be resolved to a variable" при попытке запуска. В чем может быть причина? Ошибка в строках

entity.time_vxod=time(); 

time_obrabotki.add(time()-entity.time_vxod); 

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Артём Нагайцев
Артём Нагайцев
Россия