Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю? Еще раз спасибо за прекрасный курс! |
Модель функционирования системы связи
Модель в AnyLogic
Постановка задачи
На дежурстве находятся n1 средств связи (СС) n2 типов (n21 + n22 + … + n2n2 = n2) в течение n3 часов.
Каждое СС может в любой момент времени выйти из строя. Интервалы времени T21, T22, …, T2n2 между отказами СС, находящимися на дежурстве, случайные. В случае выхода из строя СС заменяют резервным, причем либо сразу, либо по мере появления исправного СС. Тем временем, вышедшее из строя СС ремонтируют, после чего содержат в качестве резервного или направляют его на дежурство. Всего количество резервных СС - n4.
Ремонт неисправных СС производят n5 мастеров. Время T1, T2, …, Tn2 ремонта случайное и зависит от типа СС, но не зависит от того, какой мастер это СС ремонтирует.
Прибыль от СС, находящихся на дежурстве, составляет S1 денежных единиц в час. Почасовой убыток при отсутствии на дежурстве одного СС - S2, …, S2n2 денежных единиц в час. Оплата мастера за ремонт неисправного СС - S31, S32, …, S3n2 денежных единиц в час соответственно.
Затраты на содержание одного резервного СС составляют S4 денежных единиц в час.
Задание на исследование
Разработать имитационную модель бизнес-процесса предоставления услуг по средствам связи в течение 1000 часов.
Исследовать влияние на ожидаемую прибыль различного количества резервных СС и мастеров.
Определить абсолютные величины и относительные коэффициенты ожидаемой прибыли.
Сделать выводы об использовании СС, мастеров и необходимых мерах по совершенствованию системы предоставления услуг связи.
Формализованное описание модели
Уясним задачу на разработку модели, предварительно представив структуру системы предоставления услуг связи (Рис. 5.1) как систему СМО.
Система предоставления услуг связи (далее система связи) представляет собой многофазную многоканальную систему массового обслуживания замкнутого типа с отказами.
Таким образом, модель системы связи должна состоять из следующих сегментов (Рис. 5.2):
- имитации постановки на дежурство СС;
- имитации дежурства СС;
- имитации функционирования ремонтного подразделения;
- вывода результатов моделирования.
Заявки как средства связи, поступившие на дежурство, должны иметь следующие параметры (поля):
- tipCC - код типа СС;
- timeOtkaz - среднее время между отказами СС;
- timeMeanRem - среднее время ремонта одного СС;
- nach - время начала ремонта в ремонтном подразделении;
- nach1 - время начала дежурства.
Возьмём, например, . Код типа СС в виде чисел 1, 2, 3, 4, 5 определяется в самом начале моделирования и остаётся неизменным. Для его определения используются следующие исходные данные:
- KCC1 … KCC5 - количество СС первого … пятого типов соответственно;
- KCCР1 … KCCР5 - количество резервных СС первого … пятого типов соответственно.
По этим же данным определяются количества всех СС по типам KolCC1 … KolCC5, а также общее количество СС всех типов KolCC.
В параметр timeOtkaz заносится интенсивность выхода из строя соответствующего типа СС. Интенсивность рассчитывается по средним значениям интервалов выхода из строя СС первого … пятого типов timeOtkaz1 … timeOtkaz5.
В параметр timeMeanRem заносится интенсивность ремонта соответствующего типа СС. Интенсивность рассчитывается по средним значениям времени ремонта СС соответственно первого … пятого типов timeRem1 … timeRem5.
Рассчитанные интенсивности, например, timeOtkaz = 1/timeOtkaz1 используются для обращения к генератору exponential(timeOtkaz).
Параметры nach1 и nach изменяются при каждом поступлении СС на дежурство и в ремонтное подразделение соответственно. Они используются при расчётах дохода от дежурства и затрат на ремонт неисправного СС. В них заносится время начала дежурства и начала ремонта соответственно.
Кроме рассмотренных, СС имеют еще следующие параметры (не заносимые в дополнительные поля заявок, имитирующих СС):
- doxDegCC1 … doxDegCC5 - доход от дежурства одного СС первого … пятого типов соответственно;
- zatrResCC1 … zatrResCC5 - затраты на содержание резерва одного СС первого … пятого типов соответственно;
- stoimRem1 … stoimRem5 - стоимость ремонта одного СС первого … пятого типов соответственно.
В ходе моделирования, а также по завершении моделирования рассчитываются:
- PribCC1 … PribCC5, SumPribil - абсолютные величины ожидаемой прибыли по каждому типу СС и в целом;
- KoefPribCC1 … KoefPribCC5, KoefPribil - относительные коэффициенты ожидаемой прибыли по каждому типу СС и в целом.
Рассмотрим вычисление этих показателей на примере PribCC1 и KoefPribCC1.
Предполагается, что максимальный доход DoxMaxCC1 от дежурства будет в случае, когда все СС первого типа будут постоянно находиться на дежурстве, то есть:
DoxMaxCC1= KCC1*doxDegCC1*ВремяРабСист
где ВремяРабСист - время работы моделируемой системы.
Фактический доход DoxDegCC1 от дежурства СС первого типа составит:
DoxDegCC1+=(time()-entity.nach1)* main.doxDegCC1;
где (time()-entity.nach1) - время нахождения СС первого типа на дежурстве.
При отсутствии на дежурстве СС первого типа убыток составит:
UbitokCC1=(1-degCC1.statsUtilization.mean())* main.ubitokCC1*ВремяРабСист*KCC1;
где (1-degCC1.statsUtilization.mean()) - средний коэффициент отсутствия СС первого типа на дежурстве за всё время моделирования.
Затраты на ремонт неисправных СС и содержание резервных СС первого типа составят соответственно:
ZatrRemCC1+=(time()-entity.nach)*stoimRemCC1; ZatrResCC1= KCCP1*zatrResCC1* ВремяРабСист
Абсолютная величина ожидаемой прибыли составит:
PribCC1=DoxDegCC1-(ZatrRemCC1+ZatrRemCC1+UbitokCC1).
Относительный коэффициент прибыли равен:
KoefPribCC1=PribCC1/DoxMaxCC1.
Показатели в целом за систему связи:
SumPribil=SumDoxDeg-(SumZatrRes+SumZatrRem+SumUbitok), KoefPrib=SumPrib/SumDoxMax,
где SumDoxMax, SumDoxDeg, SumZatrRes, SumZatrRem, SumUbitok - соответствующие доходы и затраты за систему.
Сегмент Постановка на дежурство
Сегмент предназначен для имитации поступления основных и резервных СС всех типов и постановки их на дежурство.
- Выполните команду Файл/Создать/Модель на панели инструментов. Появится диалоговое окно Новая модель.
- Дайте имя новой модели. В поле Имя модели введите Система_связи. Выберите каталог для сохранения файлов модели.
- Щёлкните кнопку Готово.
Ввод исходных данных
Исходные данные разделим и разместим там, где они, по нашему мнению, нужны и их удобно использовать.
Организуйте ввод исходных данных для сегмента Постановка на дежурство.
- В Палитре выделите Презентация. Перетащите элемент Область просмотра. Перейдите на панель Свойства.
- В поле Имя: введите Исходные_данные_ПД.
- Задайте расположение области просмотра относительно ее якоря Выравнивать по: Верхн. левому углу.
- Выберите режим масштабирования из выпадающего списка Масштабирование: Подогнать под окно.
- Перейдите на страницу Местоположение и размер. Введите в поля X: 0, Y: 500, Ширина: 450, Высота: 340.
- Перейдите на страницу Местоположение и размер. Введите в поля X: 0, Y: 500, Ширина: 450, Высота: 340.
- Перетащите элемент Прямоугольник на элемент Область просмотра.
- Перейдите на страницу Местоположение и размер. Введите в поля X: 20, Y: 520, Ширина: 390, Высота: 300.
- Перетащите элемент text и на странице Текст в поле text введите Исходные_данные_ПД (здесь ПД - постановка на дежурство).
- В Палитре выделите Основная. Перетащите элементы Параметр и Переменная на элемент с именем Исходные_данные_ПД и разместите их так, как показано на Рис. 5.3.
- Значения свойств установите согласно Табл. 5.1.
Простые переменные с именами KolCC1…KolCC5 - количество СС по типам, а KolCC - количество СС всех типов. Эти переменные мы будем вычислять по исходным значениям КСС1 … КСС5 и КССР1 … КССР5 и использовать при генерации равного значению КolСС заявок, имитирующих СС. Количество СС изменять можно только перед началом моделирования, так как заявки, имитирующие СС, генерируются только один раз.
Имя | Тип | Значение по умолчанию | Отображать имя |
---|---|---|---|
KolCC1 | int | 0 | Установить флажок во всех элементах |
KolCC2 | int | 0 | |
KolCC3 | int | 0 | |
KolCC4 | int | 0 | |
KolCC5 | int | 0 | |
KolCC | int | 0 | |
NumCC | int | 0 | |
doxdegCC1 | double | 20 | |
doxdegCC2 | double | 24,2 | |
doxdegCC3 | double | 32,8 | |
doxdegCC4 | double | 23 | |
doxdegCC5 | double | 25,5 | |
zatrResCC1 | double | 21 | |
zatrResCC2 | double | 24,2 | |
zatrResCC3 | double | 28 | |
zatrResCC4 | double | 26 | |
zatrResCC5 | double | 25,5 | |
ubitokCC1 | double | 32 | |
ubitokCC2 | double | 34,2 | |
ubitokCC3 | double | 37 | |
ubitokCC4 | double | 31 | |
ubitokCC5 | double | 32,5 |