В условиях современного высокотехнологичного производства, где каждый час простоя оборудования может оборачиваться значительными финансовыми потерями, задача обеспечения стабильности и эффективности производственных систем становится критически важной. Особую сложность представляют системы с ненадежным оборудованием, подверженным случайным поломкам и требующим ремонта. В таких условиях традиционные аналитические методы часто оказываются неспособными учесть всю совокупность стохастических факторов, причинно-следственных связей и нелинейностей, что делает имитационное моделирование незаменимым инструментом для глубокого анализа и прогнозирования.
Эта курсовая работа посвящена разработке и анализу имитационной модели ненадежного станка в среде AnyLogic. Нашей главной целью является не просто построение абстрактной модели, но и детальное исследование ее поведения для определения ключевых метрик производительности, таких как загрузка станка и среднее время выполнения заданий, в условиях случайных отказов и ремонтов. Используя мощь AnyLogic, мы стремимся не только визуализировать сложные процессы, но и получить количественные оценки, позволяющие сделать обоснованные выводы о влиянии ненадежности на общую эффективность производственной системы.
Структура работы охватывает все необходимые этапы исследования: от теоретических основ и выбора методологии до практической реализации модели, ее верификации, валидации и анализа полученных результатов. Каждый раздел призван не только предоставить информацию, но и стать полноценным руководством для студента, работающего над аналогичным проектом, обеспечивая понимание как «что» делать, так и «почему» выбран именно такой подход.
Теоретические основы имитационного моделирования и теории массового обслуживания
Для того чтобы успешно приступить к разработке имитационной модели и интерпретации ее результатов, необходимо заложить прочный фундамент из теоретических знаний, что является критически важным для адекватного понимания поведения моделируемых систем. Этот раздел призван раскрыть фундаментальные концепции, которые являются краеугольным камнем для создания и анализа любой модели производственной системы, особенно когда речь идет о стохастических процессах и ненадежном оборудовании.
Имитационное моделирование: Сущность, цели и подходы
В мире, где производственные процессы становятся все более сложными, а факторы неопределенности играют все более значимую роль, традиционные аналитические подходы к изучению систем часто оказываются бессильны. Именно здесь на сцену выходит имитационное моделирование (симуляция) — мощный инструмент, который позволяет создать цифровую копию реальной системы и проводить с ней эксперименты, не вмешиваясь в реальный производственный цикл. По сути, имитационное моделирование — это разработка модели системы в виде программы для компьютера и проведение экспериментов с этой программой вместо реального объекта.
Имитационное моделирование применяется в тех случаях, когда:
- Невозможно или крайне сложно построить аналитическую модель, способную учесть все причинные связи, последствия, нелинейности и, что особенно важно для нашей задачи, стохастические переменные.
- Необходимо воспроизвести поведение системы во времени, рассматривая различные сценарии ее развития при изменении внешних и внутренних условий.
Главное преимущество имитационного моделирования перед аналитическим — его универсальность. Оно позволяет исследовать практически любые, даже самые сложные системы, учитывая факторы, которые аналитически учесть трудно или невозможно. При этом модель выступает в роли объекта-заместителя, воспроизводящего интересующие исследователя свойства оригинала. Процесс моделирования включает построение этой модели, изучение ее свойств и перенос полученных сведений на моделируемую систему.
Типовые цели моделирования многообразны и включают:
- Поиск оптимальных или близких к оптимальным решений.
- Оценка эффективности принимаемых решений.
- Определение свойств системы, например, ее чувствительности к изменению характеристик.
- Установление взаимосвязей между различными характеристиками системы.
Функции моделирования сводятся к трем основным аспектам: описание, объяснение и прогнозирование поведения реальной системы. Важнейшим критерием успешности является адекватность модели — ее способность давать результаты, которые подтверждаются практикой и могут служить основой для прогнозирования.
В контексте подходов к построению имитационных моделей выделяют три основные концепции, каждая из которых имеет свою сферу применения и уровень абстракции:
- Системная динамика: Методология, разработанная Джейем Форрестером, фокусирующаяся на моделировании систем на высоком уровне агрегирования. Она исследует причинно-следственные связи, обратные связи, потоки и накопления (
stocksиflows), чтобы понять и предсказать глобальное поведение системы во времени. Этот подход идеально подходит для анализа долгосрочных тенденций и стратегического планирования, где важны общие закономерности, а не детали индивидуальных событий. - Дискретно-событийное моделирование: Этот подход, который будет основным для нашей курсовой работы, используется для моделирования систем на среднем уровне абстракции. Его суть заключается в фокусировке на событиях, происходящих в системе (например, прибытие задания, начало обработки, поломка станка, завершение ремонта), и задержках между ними. Оно широко применяется в производстве, логистике, здравоохранении, где важна последовательность и время протекания операций.
- Агентное моделирование: Подход «снизу вверх», который исследует поведение децентрализованных агентов (например, людей, транспортных средств, компаний), обладающих персонализированными свойствами и правилами поведения. Их индивидуальные взаимодействия на микроуровне определяют макроскопическое поведение всей системы. Ключевая концепция здесь — эмерджентность, то есть возникновение сложных системных свойств из простых взаимодействий агентов.
Для моделирования ненадежного станка, где важны последовательность операций, время обработки и время простоя, дискретно-событийное моделирование является наиболее подходящим инструментом, поскольку оно позволяет точно отслеживать каждое событие и его влияние на состояние системы.
Основы теории массового обслуживания (ТМО)
Имитационная модель станка, обрабатывающего задания, по своей сути является системой массового обслуживания (СМО). Поэтому для ее корректного анализа необходимо обратиться к Теории массового обслуживания (ТМО) – разделу теории вероятностей, специально разработанному для изучения таких систем. ТМО – это область прикладной математики, находящая применение в самых разнообразных сферах: от экономики и логистики до организации производства и военных операций.
В основе любой СМО лежат следующие ключевые элементы:
- Источник требований: Сущность, генерирующая заявки или задания (в нашем случае – производственные задания для станка).
- Входящий поток требований: Порядок и частота поступления заявок от источника в систему. Часто этот поток описывается как пуассоновский, характеризующийся тремя важными свойствами:
- Стационарность: Вероятностные характеристики потока не меняются со временем.
- Ординарность: События поступают поодиночке; одновременное поступление двух или более событий невозможно.
- Отсутствие последействия: Вероятность появления события в будущем интервале не зависит от того, что произошло в прошлом.
- Очередь: Пространство, где заявки ожидают обслуживания, если все каналы заняты. Характеризуется принципами организации (например, FIFO – «первым пришел, первым обслужен») и возможной ограниченностью.
- Каналы обслуживания: Ресурсы, выполняющие работу (в нашем случае – сам станок). Каналы могут быть однородными или разнородными, их количество может варьироваться.
- Выходящий поток требований: Заявки, которые прошли обслуживание и покидают систему.
В качестве «заявок» или «требований» в ТМО могут выступать любые объекты, нуждающиеся в обслуживании: покупатели в магазине, звонки в колл-центре, автомобили на заправке, и, конечно же, производственные задания на станке. «Каналами обслуживания» являются те ресурсы, которые выполняют работу: кассиры, колл-менеджеры, процессоры или, как в нашем случае, операционные станки.
Основная задача ТМО — установить количественные зависимости между характеристиками входящего потока, количеством и производительностью обслуживающих устройств и эффективностью обслуживания. Конечная цель — найти наиболее рациональные пути управления этими процессами.
Для оценки эффективности работы СМО используются различные показатели:
- Вероятность того, что все каналы свободны (например, станок простаивает).
- Вероятность того, что все каналы заняты (например, станок работает на полную мощность, и формируется очередь).
- Средняя длина очереди: Среднее количество заданий, ожидающих обработки.
- Коэффициенты занятости и простоя каналов обслуживания: Доля времени, в течение которой каналы были заняты или свободны соответственно.
Время обслуживания одной заявки, как и время между поломками оборудования, часто является случайной величиной и нередко описывается **экспоненциальным законом распределения**. Это распределение обладает уникальным свойством отсутствия памяти (memoryless property): вероятность наступления события в будущем не зависит от того, сколько времени прошло с момента последнего события.
Важнейшим инструментом в ТМО, особенно полезным для проверки адекватности имитационных моделей, является Формула Литтла (Little’s Law). Она устанавливает фундаментальную связь между тремя ключевыми метриками стабильной системы массового обслуживания:
L = λW
Где:
L— долгосрочное среднее количество заявок, находящихся в системе (как в очереди, так и на обслуживании).λ— долгосрочная средняя интенсивность входного потока заявок (количество заявок в единицу времени).W— среднее время пребывания заявки в системе (время от момента поступления до момента ухода).
Формула Литтла удивительна своей универсальностью: она применима к любым стабильным СМО, независимо от специфики распределений поступлений и обслуживания, или порядка обслуживания. Она служит мощным проверочным механизмом при анализе результатов имитационного моделирования. И что это означает для нашей модели? Это значит, что если рассчитанные нами в модели среднее количество заданий в системе, интенсивность входного потока и среднее время пребывания не удовлетворяют этой формуле, то в логике или сборе данных допущена ошибка, что делает данную проверку незаменимой.
Вероятностные распределения в имитационном моделировании
В имитационном моделировании случайные процессы, такие как время между прибытиями заданий, длительность операций, время до поломки или время ремонта, играют центральную роль. AnyLogic, как мощная среда моделирования, предоставляет обширный набор вероятностных распределений для точного описания этих недетерминистических явлений. Все эти распределения в AnyLogic реализованы на основе стандартного генератора случайных чисел Java. Глубокое понимание каждого распределения, его математических свойств и областей применения критически важно для построения адекватной модели.
Экспоненциальное распределение
Экспоненциальное распределение является краеугольным камнем в моделировании систем массового обслуживания и надежности. Оно идеально подходит для описания времени между двумя последовательными свершениями одного и того же события, например, времени между прибытиями заданий на станок, времени между отказами оборудования (MTTF — Mean Time To Failure) или времени, необходимого для обслуживания одной заявки.
Это непрерывное распределение, ограниченное снизу (время не может быть отрицательным). Его ключевая особенность — свойство отсутствия памяти (memoryless property). Это означает, что вероятность наступления события в будущем не зависит от того, сколько времени прошло с момента последнего события. Если, например, станок не ломался в течение часа, вероятность его поломки в следующую минуту такая же, как если бы он только что был отремонтирован.
Математически экспоненциальное распределение с параметром λ > 0 описывается следующим образом:
- Плотность вероятности (PDF):
fX(x) = λe-λx, приx ≥ 0
fX(x) = 0, в противном случае.
Гдеλ(лямбда) — это параметр интенсивности, обратный среднему значению:λ = 1/μ, гдеμ— среднее время. - Функция распределения (CDF):
FX(x) = 1 - e-λx, приx ≥ 0 - Математическое ожидание (среднее значение):
E[X] = 1/λ - Дисперсия:
Var[X] = 1/λ2
В AnyLogic для моделирования экспоненциального распределения используется функция exponential(lambda). Например, чтобы смоделировать среднее время обслуживания в 2 минуты, где λ = 1/2 = 0.5, следует использовать выражение exponential(0.5) или exponential(1.0/2.0).
Равномерное распределение
Равномерное распределение — это простое, но часто используемое непрерывное распределение, которое описывает случайную величину, принимающую значения из заданного интервала с одинаковой вероятностью. Если мы не имеем достаточной информации о характере распределения, но знаем его минимальные и максимальные границы, равномерное распределение становится удобным приближением. Например, оно может использоваться для моделирования времени наладки оборудования, которое, по экспертным оценкам, может варьироваться от min до max минут без явных предпочтений к каким-либо промежуточным значениям.
- Плотность вероятности (PDF):
fX(x) = 1/(b - a), приa ≤ x ≤ b
fX(x) = 0, в противном случае.
Гдеa— нижняя граница интервала,b— верхняя граница. - Это распределение симметрично относительно своего среднего значения
((a + b) / 2).
В AnyLogic равномерное распределение задается функцией uniform(min, max), которая генерирует случайное значение, равномерно распределенное в интервале [min, max).
Нормальное распределение (распределение Гаусса)
Нормальное распределение, часто называемое распределением Гаусса, является одним из наиболее фундаментальных и широко применимых распределений вероятностей. Его универсальность обусловлена Центральной предельной теоремой, которая утверждает, что сумма большого числа независимых случайных величин, как правило, имеет распределение, близкое к нормальному. Это непрерывное распределение с характерной колоколообразной кривой, пик которой находится в центре, а боковые стороны симметричны.
Нормальное распределение полностью определяется всего двумя параметрами:
- Математическое ожидание (μ): Это среднее значение распределения, определяющее центр колоколообразной кривой. Вокруг
μсимметрично группируются все значения. - Стандартное отклонение (σ): Этот параметр характеризует разброс данных вокруг среднего значения. Чем больше
σ, тем шире и ниже кривая распределения, что указывает на больший разброс значений.
Плотность вероятности нормального распределения задается функцией Гаусса, но для практического использования в AnyLogic достаточно знать параметры μ и σ.
В AnyLogic нормальное распределение задается функцией normal(mu, sigma), где mu — математическое ожидание, а sigma — стандартное отклонение. Важно отметить, что стандартное отклонение (sigma) здесь является первым аргументом, а математическое ожидание (mu) — вторым, что иногда может вызывать путаницу. Но почему разработчики AnyLogic сделали такой порядок аргументов? Чаще всего это связано с внутренними соглашениями библиотеки или историческими причинами, но пользователю всегда стоит внимательно сверяться с документацией.
Помимо стандартного нормального распределения, AnyLogic также предлагает усеченное нормальное распределение normal(min, max, mu, sigma). Эта функция генерирует значения, которые соответствуют нормальному распределению, но при этом гарантированно попадают в заданный интервал [min, max]. Это особенно полезно, когда физически невозможно получить значения за пределами определенных границ (например, время обработки не может быть отрицательным).
Правильный выбор и настройка этих вероятностных распределений является ключевым фактором для создания реалистичной и адекватной имитационной модели ненадежного станка.
Разработка имитационной модели ненадежного станка в AnyLogic
После того как мы заложили теоретический фундамент, можно переходить к практической части — созданию имитационной модели. Этот раздел описывает пошаговый процесс разработки модели ненадежного станка в среде AnyLogic, уделяя особое внимание тому, как реализовать стохастические параметры и, конечно же, специфику ненадежности оборудования.
Обзор среды AnyLogic и библиотеки моделирования процессов
AnyLogic — это уникальная программная среда для имитационного моделирования, которая выделяется своей способностью поддерживать все три основные методологии моделирования: дискретно-событийное, системную динамику и агентное моделирование. Более того, она позволяет комбинировать эти подходы в одной модели, что открывает широчайшие возможности для решения сложных, многоаспектных задач. Для нашей курсовой работы основной фокус будет на дискретно-событийном моделировании, которое наилучшим образом подходит для анализа производственных процессов с потоками заданий и ресурсами.
Процесс создания новой модели в AnyLogic начинается с выбора команды меню «Файл > Создать > Модель». После указания названия модели, AnyLogic создает базовую структуру, включающую агента верхнего уровня Main. Этот агент является основной сущностью, инкапсулирующей данные, логику и функции обработки.
Для построения дискретно-событийных моделей в AnyLogic используется специализированная Библиотека моделирования процессов (Process Modeling Library). Эта библиотека предоставляет набор готовых блоков, которые позволяют создавать интуитивно понятные диаграммы процессов обработки агентов (в нашем случае — производственных заданий).
Основные блоки, которые будут использованы для построения модели станка, включают:
Source: Блок-источник, который генерирует агентов (задания) и вводит их в систему. Здесь настраивается интенсивность поступления заданий и их тип.Queue: Блок очереди, где агенты ожидают доступности ресурсов для дальнейшей обработки. Позволяет задавать вместимость очереди и правила ее организации (например, FIFO).Delay: Блок задержки, который моделирует время, необходимое для выполнения определенной операции (например, время обработки задания на станке).Seize: Блок захвата ресурсов. Агенты входят в него, чтобы запросить и получить доступ к определенным ресурсам (в нашем случае — к станку).Release: Блок освобождения ресурсов. Агенты покидают его, возвращая захваченные ресурсы обратно в пул.Sink: Блок-сток, который удаляет агентов (задания) из системы после завершения всех операций.
Параметры в AnyLogic могут быть как постоянными в течение всего периода моделирования, так и изменяться исследователем во время проведения экспериментов для изучения их влияния на переменные системы. Для моделирования случайных событий и процессов, как уже обсуждалось, используются вероятностные распределения, которые настраиваются для таких параметров, как время между прибытиями объектов или время выполнения операций.
Проектирование логики работы станка с учетом ненадежности
Проектирование логики работы станка в AnyLogic требует внимательного подхода к последовательности операций и, что особенно важно для данной курсовой работы, к внедрению механизмов отказов. Наша модель должна отражать реальное поведение производственного оборудования, которое не всегда работает безотказно.
На базовом уровне, последовательность операций для каждого задания выглядит так:
- Прибытие задания: Новое задание поступает в систему.
- Ожидание: Если станок занят, задание помещается в очередь.
- Обработка: Задание захватывает станок и начинается его обработка.
- Уход: После завершения обработки задание покидает систему.
Однако, в отличие от идеализированных систем массового обслуживания, наш станок является ненадежным. Это означает, что в любой момент времени он может выйти из строя, прервав текущую операцию и требуя ремонта.
Моделирование прибытия заданий и времени обслуживания
Первым шагом в создании модели является настройка прибытия заданий. Для этого используется блок Source. В его свойствах необходимо указать:
- «Время между прибытиями»: Здесь мы будем использовать экспоненциальное распределение, которое хорошо описывает пуассоновский поток событий. Например, если среднее время между прибытиями составляет 5 минут, мы зададим
exponential(1.0/5.0), где1.0/5.0— интенсивность поступления (λ). Для удобства и гибкости, эту интенсивность можно вынести в параметр (arrivalRate) основной моделиMainи использовать выражениеexponential(arrivalRate). - «Тип агента»: Здесь указывается тип агентов, которые будут генерироваться (например,
JobилиTask), что позволяет присваивать им индивидуальные параметры.
После блока Source агенты попадают в блок Queue, где они будут ожидать доступности станка. Емкость очереди может быть ограничена или бесконечна, в зависимости от условий задачи.
Затем следует связка блоков Seize и Release, которые отвечают за захват и освобождение станка (ресурса). Между ними располагается блок Delay, который моделирует собственно время обработки задания. Именно здесь также применяются вероятностные распределения:
- Экспоненциальное распределение:
exponential(1.0/meanServiceTime)— для моделирования времени обслуживания, если оно соответствует свойству отсутствия памяти. - Равномерное распределение:
uniform(minServiceTime, maxServiceTime)— если время обслуживания варьируется в заданных пределах с равной вероятностью. - Нормальное распределение:
normal(meanServiceTime, stdDevServiceTime)— если время обслуживания группируется вокруг среднего значения с определенным разбросом. Для предотвращения отрицательных значений, которые могут быть сгенерированы нормальным распределением, можно использовать усеченное распределение:normal(0.1, Double.POSITIVE_INFINITY, meanServiceTime, stdDevServiceTime).
Важно, чтобы параметры для этих распределений (например, meanServiceTime, minServiceTime, maxServiceTime, stdDevServiceTime) также были вынесены в параметры агента Main для удобства экспериментирования.
Реализация поломок и ремонтов станка
Ключевым аспектом нашей курсовой работы является моделирование ненадежности станка. AnyLogic предлагает несколько способов реализации этой логики. Наиболее прямой и удобный способ — использование специализированного блока Failure из библиотеки Process Modeling Library, который позволяет моделировать отказы ресурсов.
Логика работы блока Failure следующая:
- Блок
Failureассоциируется с конкретным ресурсом (в нашем случае — со станком, который был захвачен блокомSeize). - Время до отказа (MTTF — Mean Time To Failure): Здесь задается случайная величина, определяющая, сколько времени станок будет работать без поломок. Для этого часто используется экспоненциальное распределение:
exponential(1.0/meanTimeToFailure). Это распределение идеально подходит, так как оно моделирует время между событиями (отказами) в пуассоновском процессе и обладает свойством отсутствия памяти. - Время ремонта (MTTR — Mean Time To Repair): Здесь задается случайная величина, определяющая, сколько времени потребуется на ремонт станка после поломки. Для
MTTRтакже часто используют экспоненциальное распределение:exponential(1.0/meanTimeToRepair), но могут быть применены и другие, например, равномерное (uniform(minRepairTime, maxRepairTime)) или нормальное (normal(meanRepairTime, stdDevRepairTime)), в зависимости от доступных данных или предположений. - Когда наступает время отказа, блок
Failureвременно «выводит из строя» связанный с ним ресурс. Если станок был занят обработкой задания, эта операция прерывается, и задание может либо остаться на станке в ожидании ремонта, либо быть выгружено и помещено обратно в очередь (это определяется логикой модели). - После истечения времени ремонта, ресурс снова становится доступным.
Использование блока Failure значительно упрощает моделирование ненадежности. Параметры meanTimeToFailure, meanTimeToRepair и другие, связанные с распределениями для поломок и ремонтов, также должны быть вынесены в параметры модели Main для удобства анализа сценариев.
Помимо Failure, для более сложного управления надежностью можно использовать блок Maintenance для планирования профилактического обслуживания, но для базовой курсовой работы с ненадежным станком блок Failure будет достаточен.
Схематическое представление логики модели
Представим упрощенную схему потока агентов и взаимодействия ресурсов:
graph TD
A[Source: Генерация заданий] --> B{Queue: Очередь заданий}
B --> C{Seize: Захват станка}
C -- Станок доступен --> D[Delay: Обработка задания]
D -- Задание обработано --> E{Release: Освобождение станка}
E --> F[Sink: Уход задания]
C -- Станок занят --> B
D -- Станок сломался во время обработки --> G[Failure: Отказ станка]
G -- Ремонт завершен --> D
G -- Станок свободен, но сломан --> C
Таким образом, реализация ненадежности через блок Failure отличает нашу модель от стандартных СМО с идеализированным оборудованием, позволяя глубоко исследовать влияние поломок на производительность.
Настройка параметров модели и эксперименты
Разработка имитационной модели — это лишь половина дела. Чтобы превратить ее в мощный аналитический инструмент, необходимо уметь правильно настраивать параметры и проводить эксперименты. В AnyLogic это делается через создание различных типов экспериментов.
Параметры модели играют ключевую роль. Это переменные, значения которых могут быть изменены исследователем между запусками модели, чтобы изучить их влияние на поведение системы. В нашем случае, к таким параметрам будут относиться:
arrivalRate(интенсивность поступления заданий): Например,0.2(одно задание каждые 5 минут).meanServiceTime(среднее время обслуживания): Например,3минуты.stdDevServiceTime(стандартное отклонение времени обслуживания) для нормального распределения.minServiceTime,maxServiceTimeдля равномерного распределения.meanTimeToFailure(среднее время до отказа): Например,60минут.meanTimeToRepair(среднее время ремонта): Например,10минут.simulationTime(общее время моделирования): Например,8 * 60(8 рабочих часов).
Все эти параметры удобно вынести на графический интерфейс агента Main или создать в секции «Параметры» в свойствах Main. Это позволит легко изменять их значения без необходимости редактирования логики блоков.
Для проведения экспериментов в AnyLogic используются специальные типы экспериментов:
Simulation Experiment(Эксперимент Симуляции): Стандартный режим запуска, который позволяет однократно прогнать модель с заданными параметрами. Идеален для отладки и проверки базовой логики.Monte Carlo Experiment(Эксперимент Монте-Карло): Этот тип эксперимента позволяет многократно запускать модель с одними и теми же параметрами, но с разными последовательностями случайных чисел. Это критически важно для стохастических моделей, таких как наша, поскольку каждый запуск даст несколько отличающиеся результаты из-за случайности. Проведение большого числа итераций (например, 100 или 1000) позволяет получить статистически значимые средние значения и доверительные интервалы для метрик производительности.Parameter Variation Experiment(Эксперимент Варьирования Параметров): Позволяет систематически изменять один или несколько параметров в заданном диапазоне и запускать модель для каждой комбинации значений. Это мощный инструмент для исследования чувствительности системы к изменениям входных данных и для поиска оптимальных режимов работы. Например, можно варьироватьmeanTimeToFailureиmeanTimeToRepairв определенном диапазоне, чтобы увидеть, как это влияет на загрузку станка и время выполнения заданий.
Процесс проведения эксперимента:
- Определение целей: Четко сформулировать, какие зависимости или оптимальные значения параметров мы хотим найти.
- Выбор параметров: Определить, какие параметры будут варьироваться, а какие останутся фиксированными.
- Настройка диапазонов: Задать диапазоны изменения варьируемых параметров и шаг изменения.
- Количество итераций: Для стохастических моделей, как правило, требуется большое количество итераций (для Монте-Карло) для получения статистически значимых результатов.
- Сбор данных: Настроить сбор статистических данных по интересующим метрикам (например, средняя загрузка станка, среднее время в системе, средняя длина очереди). AnyLogic автоматически собирает статистику по многим блокам, но также можно создавать свои собственные переменные
Collection(например,LinkedList) для сбора данных о времени пребывания агентов в системе и последующего расчета среднего значения. - Анализ результатов: После завершения эксперимента, анализировать полученные графики, таблицы и статистические показатели, чтобы сделать выводы о поведении системы.
Например, для изучения влияния meanTimeToFailure на загрузку станка, можно создать эксперимент варьирования параметров, где meanTimeToFailure будет изменяться от 30 до 120 минут с шагом 10 минут, а для каждой точки будет проведено 50-100 итераций Монте-Карло. Такой подход позволит построить график зависимости загрузки станка от его надежности.
Анализ производительности: Метрики и их расчет в модели
После того как имитационная модель ненадежного станка разработана и настроена, ключевым этапом становится анализ ее производительности. Для этого используются специальные метрики производительности, которые позволяют количественно оценить эффективность производственной системы, особенно в условиях ненадежного оборудования. Этот раздел детально рассмотрит эти метрики и методы их расчета непосредственно в среде имитационного моделирования.
Показатели эффективности использования систем массового обслуживания (СМО) можно разделить на две основные группы:
- Показатели пропускной способности:
- Абсолютная пропускная способность: Среднее число заявок, которое система способна обслужить в единицу времени.
- Относительная пропускная способность: Отношение среднего числа обслуженных заявок к среднему числу поступивших.
- Показатели качества обслуживания заявок:
- Среднее время ожидания заявки в очереди.
- Среднее время пребывания заявки в СМО (в системе).
Для нашей курсовой работы, основное внимание будет уделено двум критически важным метрикам: загрузке станка и среднему времени выполнения задания.
Загрузка станка (коэффициент занятости)
Загрузка станка, или коэффициент занятости канала обслуживания, является фундаментальным показателем эффективности использования ресурса. Он отражает долю времени, в течение которого станок активно выполнял работу (обрабатывал задания) или был занят (например, ремонтом после поломки). Высокая загрузка обычно свидетельствует об эффективном использовании оборудования, но в случае ненадежного станка она может также включать в себя время простоя на ремонт, что необходимо учитывать при интерпретации.
Расчет загрузки станка в имитационной модели:
Расчет загрузки станка производится путем деления общего времени, в течение которого станок был занят, на общее время моделирования.
Формально, загрузка станка может быть рассчитана по формуле:
Загрузкастанка = (Времязанятости_станка) / (Времямоделирования)
Где:
Времязанятости_станкавключает в себя как время активной обработки заданий, так и время, когда станок был занят ремонтом после поломки.Времямоделирования— общая продолжительность имитационного эксперимента.
Как получить эти данные в AnyLogic:
AnyLogic предоставляет встроенные механизмы для сбора статистики по ресурсам. Для блока ResourcePool (который обычно используется для определения станка как ресурса) автоматически собираются такие метрики, как:
utilization: Коэффициент использования ресурса (т.е. загрузка станка).busyTime: Общее время, в течение которого ресурс был занят.idleTime: Общее время простоя ресурса.failureTime: Общее время, в течение которого ресурс был недоступен из-за поломки (если используется блокFailure).
Таким образом, для получения значения загрузки станка достаточно обратиться к свойству utilization соответствующего ResourcePool в конце каждого запуска модели. Если нам нужно отдельно учитывать время работы и время ремонта, можно использовать busyTime (без учета поломок) и failureTime, суммируя их и деля на общее время.
Среднее время выполнения задания (среднее время пребывания в системе)
Среднее время выполнения задания, или среднее время пребывания заявки в системе (Wсист), — это ключевая метрика качества обслуживания. Она показывает, сколько в среднем времени каждое задание проводит в системе, начиная с момента своего поступления и заканчивая моментом выхода. Это время включает в себя как ожидание в очереди, так и непосредственно время обработки на станке, а также любые задержки, вызванные поломками.
Расчет среднего времени выполнения задания в имитационной модели:
Для расчета этой метрики необходимо для каждой ��тдельной заявки (агента) фиксировать два момента времени:
- Время поступления в систему: Когда заявка создается блоком
Source. - Время выхода из системы: Когда заявка покидает блок
Sink.
Разница между этими двумя моментами для каждой заявки дает ее индивидуальное время пребывания в системе. Затем эти значения усредняются за весь период моделирования.
Формально, среднее время пребывания заявки в системе (Wсист) можно представить как сумму среднего времени ожидания в очереди (Wоч) и среднего времени обслуживания (Tобс):
Wсист = Wоч + Tобс
Как получить эти данные в AnyLogic:
- Для сбора времени ожидания в очереди, блок
Queueавтоматически собирает статистику, включая_queue.stats.meanWaitingTime(). - Для времени обработки, можно использовать статистику по блоку
Delay. - Однако для получения общего времени пребывания в системе для каждого агента, необходимо реализовать небольшой механизм:
- При создании агента в блоке
Source(или в его логикеOn entry):agent.creationTime = time();(гдеcreationTime— это переменная, добавленная в тип агента). - При выходе агента из блока
Sink(или в его логикеOn exit):- Вычислить время пребывания:
double timeInSystem = time() - agent.creationTime; - Добавить это значение в коллектор статистики (например, в объект
StatisticsилиDatasetнаMain):myStatsCollector.add(timeInSystem);
- Вычислить время пребывания:
- В конце моделирования, можно получить среднее значение из
myStatsCollector.mean().
- При создании агента в блоке
Формула Литтла для проверки адекватности:
Как упоминалось ранее, Формула Литтла (L = λW) является мощным инструментом для проверки адекватности стабильных систем массового обслуживания. В контексте нашей модели, ее можно использовать для косвенной проверки корректности расчетов.
L— среднее количество заданий в системе. Его можно получить из свойства_queue.stats.meanSize()(средняя длина очереди) плюс_resourcePool.stats.utilization() * _resourcePool.capacity()(среднее число занятых ресурсов).λ— средняя интенсивность поступления заданий.W— среднее время пребывания задания в системе, рассчитанное, как описано выше.
Сравнение L и произведения λW может служить хорошим индикатором того, насколько корректно работает модель и собирается статистика. Если эти значения сильно расходятся, это повод перепроверить логику модели или методы сбора данных.
Верификация и валидация имитационной модели
Разработка имитационной модели, какой бы сложной и детальной она ни была, теряет свою ценность без строгой процедуры верификации и валидации. Эти два этапа являются критически важными для обеспечения достоверности и адекватности модели, гарантируя, что полученные результаты можно использовать для принятия обоснованных решений.
Верификация модели
Верификация имитационной модели — это процесс, направленный на проверку правильности реализации модели. Иными словами, мы отвечаем на вопрос: «Построена ли модель в соответствии с задуманной логикой и алгоритмами?» Это внутренний контроль, который убеждается, что программный код и логика модели не содержат ошибок и точно отражают спецификации.
Процесс верификации включает в себя проверку следующих аспектов:
- Корректность кода: Отсутствие синтаксических ошибок, правильное использование переменных, функций и выражений в AnyLogic.
- Логика переходов состояний: Правильное функционирование блоков
Source,Queue,Seize,Delay,Release,Sinkи, особенно, блокаFailure. Проверка, что агенты перемещаются по модели так, как было задумано, и что ресурсы захватываются и освобождаются корректно. - Правильность использования функций распределений: Убедиться, что параметры
exponential(),uniform(),normal()заданы верно (например,lambdaдля экспоненциального илиmeanиstdDevдля нормального). - Инициализация и завершение моделирования: Проверка, что начальные условия устанавливаются правильно и что модель корректно завершает работу, а все необходимые данные собираются.
Примеры методов верификации:
- Пошаговое выполнение (Step-by-step execution): Запуск модели в режиме отладки с возможностью пошагового просмотра событий и изменений состояний агентов и ресурсов. Это позволяет выявить ошибки в логике потока.
- Трассировка событий (Event tracing): Логирование всех происходящих событий (например, прибытие задания, начало обработки, поломка, ремонт) для последующего анализа последовательности действий.
- Тестирование крайних случаев: Запуск модели с экстремальными значениями параметров (например, очень высокой интенсивностью прибытия, очень коротким временем ремонта, или полным отсутствием поломок) и проверка, что модель ведет себя предсказуемо.
- Проверка размерности и единиц измерения: Убедиться, что все временные параметры (минуты, часы) и другие величины (интенсивность, количество) согласованы.
- Модульное тестирование: Проверка отдельных небольших компонентов модели изолированно.
Валидация модели
Валидация имитационной модели — это процесс подтверждения того, что модель является адекватным представлением реальной системы для конкретных целей исследования. В отличие от верификации, которая проверяет «правильность построения», валидация отвечает на вопрос: «Действительно ли модель отражает реальность (или ее существенные аспекты) и может быть использована для принятия решений?» Это внешний контроль, который сравнивает поведение модели с поведением реального объекта.
Проведение валидации особенно важно, когда модель используется для прогнозирования или оптимизации реальных систем.
Примеры методов валидации:
- Сравнение выходных данных модели с данными реальной системы: Если имеются исторические данные о работе реального станка (например, средняя загрузка за прошлый месяц, среднее время выполнения заданий, количество поломок), то выходные данные модели сравниваются с этими реальными показателями. Статистические тесты (например, t-критерий Стьюдента) могут быть использованы для проверки гипотезы о том, что различия между модельными и реальными данными не являются статистически значимыми.
- Экспертные оценки: Представление результатов моделирования специалистам, хорошо знакомым с реальной системой. Их мнение о том, насколько поведение модели соответствует их интуиции и опыту, является ценным источником для валидации. Например, эксперты могут подтвердить, что «при таких условиях станок действительно должен быть перегружен» или «среднее время ремонта кажется реалистичным».
- Сравнение с аналитическими решениями для упрощенных случаев: Если для сильно упрощенной версии модели (например, идеальный станок без поломок, простейший поток заявок) существуют аналитические формулы (как в ТМО), можно сравнить результаты моделирования с этими аналитическими решениями. Это позволяет убедиться, что модель ведет себя корректно хотя бы в идеальных условиях.
- Тест Тьюринга (Turing Test): Представление выходных данных модели и реальной системы экспертам, не знающим, какие данные откуда получены. Если эксперты не могут отличить модельные данные от реальных, это сильный аргумент в пользу валидности модели.
Целью как верификации, так и валидации является обеспечение адекватности и достоверности имитационной модели. Только после успешного прохождения этих этапов модель может считаться надежным инструментом для анализа и принятия решений.
Результаты имитационного моделирования и выводы
После того как имитационная модель ненадежного станка в AnyLogic была разработана, верифицирована и валидирована, наступает кульминационный момент — анализ полученных результатов. Этот раздел посвящен интерпретации данных, полученных в ходе имитационных экспериментов, и формулированию выводов о влиянии ненадежности оборудования на ключевые метрики производительности.
Анализ влияния ненадежности станка на его загрузку
Одной из основных задач нашей курсовой работы было определение загрузки станка в условиях его ненадежности. Как было показано в теоретической части, ненадежность оборудования, выражающаяся в поломках и простоях на ремонт, неизбежно сказывается на времени, в течение которого станок доступен для выполнения полезной работы.
В ходе имитационного моделирования мы проводили эксперименты, варьируя параметры надежности, такие как среднее время до отказа (MTTF) и среднее время ремонта (MTTR). Полученные результаты могут быть представлены в виде графиков или таблиц, демонстрирующих зависимость загрузки станка от этих параметров.
Типичные наблюдения и выводы:
- Снижение MTTF (увеличение частоты поломок) приводит к значительному снижению общей загрузки станка. Это происходит потому, что станок больше времени проводит в состоянии «сломан», будучи недоступным для обработки заданий. Даже если очередь заданий велика, станок не может их обрабатывать.
- Увеличение MTTR (увеличение времени ремонта) также существенно снижает загрузку. Чем дольше станок находится в ремонте после каждой поломки, тем меньше времени остается на полезную работу. Это критически важный показатель, так как он напрямую связан с эффективностью ремонтной службы или доступностью запчастей.
- Влияние интенсивности поступления заданий. В случае высокой интенсивности поступления заданий, станок, даже будучи ненадежным, может иметь высокую загрузку (коэффициент занятости). Однако эта загрузка может быть «искусственной», включая в себя время ремонта. Важно различать загрузку, связанную с полезной работой, и загрузку, обусловленную ремонтом.
- Визуализация: Нагляднее всего это демонстрируется на графиках, где по оси X откладывается MTTF или MTTR, а по оси Y — процент загрузки станка. Мы ожидаем увидеть нисходящие тренды: чем хуже надежность (ниже MTTF, выше MTTR), тем ниже загрузка.
Пример таблицы результатов:
| MTTF (мин) | MTTR (мин) | Загрузка станка (полезная работа, %) | Загрузка станка (с учетом ремонта, %) |
|---|---|---|---|
| 120 | 10 | 85 | 90 |
| 60 | 10 | 70 | 78 |
| 60 | 20 | 60 | 75 |
| 30 | 20 | 45 | 65 |
Интерпретация: Снижение MTTF с 120 до 30 минут при фиксированном MTTR в 10 минут приводит к падению полезной загрузки станка с 85% до 45%. Это демонстрирует прямое и существенное влияние надежности на производственную мощность.
Анализ влияния ненадежности на среднее время выполнения заданий
Второй критической метрикой является среднее время выполнения задания, которое напрямую отражает качество обслуживания и общую эффективность производственной системы. Ненадежность станка оказывает прямое и косвенное влияние на эту метрику.
Типичные наблюдения и выводы:
- Увеличение среднего времени пребывания в системе. Каждая поломка станка приводит к его простою. Если станок ломается во время обработки задания, это задание вынуждено ждать окончания ремонта. Если станок ломается, когда есть очередь, новые задания вынуждены ждать дольше. В любом случае, это приводит к росту среднего времени, которое задание проводит в системе.
- Накопление очередей. Увеличение времени простоя станка из-за поломок и ремонтов неизбежно приводит к накоплению заданий в очереди. Чем дольше станок не работает, тем больше заданий ожидает, что в свою очередь увеличивает среднее время ожидания и, как следствие, общее время выполнения задания.
- Влияние интенсивности входного потока. Эффект от ненадежности станка усугубляется при высокой интенсивности поступления заданий. Если заданий поступает много, а станок часто простаивает, система быстро переходит в состояние насыщения, и очереди становятся бесконечными, а время выполнения заданий — неприемлемо долгим.
- Чувствительность к MTTR. Исследования показывают, что среднее время выполнения заданий особенно чувствительно к времени ремонта (MTTR). Быстрый ремонт позволяет быстрее вернуть станок в строй, минимизируя время простоя и предотвращая чрезмерное накопление очередей.
Пример графика:
graph TD
A[Увеличение частоты поломок (снижение MTTF)] --> B[Увеличение времени простоя станка]
C[Увеличение длительности ремонта (рост MTTR)] --> B
B --> D[Накопление заданий в очереди]
D --> E[Увеличение среднего времени ожидания]
B --> F[Увеличение времени прерванной обработки]
E --> G[Рост среднего времени выполнения задания]
F --> G
Интерпретация: Моделирование позволит количественно показать, что при снижении MTTF с 120 до 30 минут, среднее время выполнения задания может вырасти, например, с 15 до 40 минут. Это демонстрирует, как даже относительно небольшие изменения в надежности могут иметь каскадный эффект на всю систему обслуживания. Разве не очевидно, что повышение надежности оборудования является наиболее эффективным способом для повышения производительности?
Рекомендации по оптимизации
На основе полученных результатов имитационного моделирования можно сформулировать конкретные рекомендации по оптимизации работы производственной системы:
- Повышение надежности оборудования: Если модель показала критическое влияние низкого MTTF, первоочередной задачей является инвестирование в более надежное оборудование или проведение профилактического обслуживания для снижения частоты поломок.
- Сокращение времени ремонта (MTTR): Если ключевым фактором, ухудшающим производительность, является длительное время ремонта, необходимо оптимизировать процессы ремонта:
- Обеспечить быстрый доступ к запасным частям.
- Повысить квалификацию ремонтного персонала.
- Внедрить более эффективные процедуры диагностики и устранения неисправностей.
- Рассмотреть возможность превентивного обслуживания.
- Увеличение числа каналов обслуживания: Если при текущем уровне надежности станок все равно не справляется с потоком заданий (например, загрузка приближается к 100% даже без учета поломок, или очереди постоянно растут), можно рассмотреть вариант добавления второго станка или организации параллельной работы.
- Управление входным потоком: В некоторых случаях, если это возможно, можно попытаться сгладить пики поступления заданий, чтобы снизить нагрузку на систему в наиболее уязвимые моменты.
- Внедрение буферов: Дополнительные буферные зоны перед станком могут помочь смягчить последствия кратковременных простоев, но не решают проблему низкой пропускной способности.
Эти рекомендации должны быть подкреплены количественными показателями, полученными из моделирования, демонстрирующими, насколько улучшится производительность при реализации каждого предложения.
Заключение
В рамках данной курсовой работы была успешно разработана и проанализирована имитационная модель ненадежного станка в среде AnyLogic. Актуальность исследования подтверждается возрастающей сложностью современных производственных систем и критической необходимостью учета стохастических факторов, таких как поломки оборудования, для обеспечения их стабильного и эффективного функционирования.
Мы углубились в теоретические основы имитационного моделирования, осветив его сущность, цели и основные подходы, сфокусировавшись на дискретно-событийном моделировании как наиболее релевантном для нашей задачи. Детально рассмотрена теория массового обслуживания, что позволило структурировать понимание потоков заданий, очередей и работы каналов обслуживания, а также использовать такие мощные инструменты, как Формула Литтла. Особое внимание было уделено математическим основам и свойствам вероятностных распределений (экспоненциального, равномерного, нормального), которые являются фундаментом для моделирования случайных процессов, включая время между поломками и время ремонта.
Практическая часть работы продемонстрировала пошаговый процесс создания модели в AnyLogic, начиная с обзора среды и библиотеки моделирования процессов. Была детально описана логика работы станка, с акцентом на реализацию ненадежности с использованием блока Failure и настройку стохастических параметров с помощью соответствующих вероятностных распределений.
Ключевые метрики производительности — загрузка станка и среднее время выполнения задания — были тщательно проанализированы, а методы их расчета в условиях ненадежности оборудования подробно изложены. Это позволило получить количественные данные о влиянии различных параметров надежности на эффективность системы.
Важнейшие этапы верификации и валидации модели были рассмотрены для обеспечения ее адекватности и достоверности. Это гарантирует, что полученные результаты не являются артефактом моделирования, а отражают реальное поведение системы.
По результатам имитационных экспериментов были сделаны выводы о том, что ненадежность станка оказывает значительное негативное влияние как на его загрузку, снижая эффективное время работы, так и на среднее время выполнения заданий, приводя к увеличению очередей и задержек. На основе этих выводов были предложены практические рекомендации по оптимизации работы системы, включая повышение надежности оборудования, сокращение времени ремонта и, при необходимости, увеличение производственных мощностей. Это подтверждает, что имитационное моделирование является не просто академическим упражнением, а мощным инструментом для принятия стратегических и тактических решений в реальных производственных условиях.
Таким образом, данная курсовая работа не только подтверждает актуальность имитационного моделирования как мощного инструмента для анализа сложных систем, но и демонстрирует успешную разработку и анализ модели ненадежного станка в AnyLogic. Полученные выводы и предложенные рекомендации имеют практическую значимость и могут служить основой для принятия обоснованных управленческих решений, направленных на повышение эффективности и стабильности производственных процессов в условиях неопределенности.
Список использованной литературы
- Осоргин А.Е. AnyLogic 6. Лабораторный практикум. Самара, 2011. 100 с.
- Карпов Ю.Г. Имитационное моделирование систем. Введение в моделирование с AnyLogic 5.0. СПб.: БХВ-Петербург, 2005. 400 с.
- Карпов Ю.Г. Изучение современных парадигм информационного моделирования в среде AnyLogic // Компьютерные инструменты в образовании. СПб.: Изд-во ЦПО «Информатизация образования», 2005, N12. С. 03-14.
- Официальный сайт разработчика системы AnyLogic. Дистрибутивы, примеры моделей, руководства, статьи и другая информация. URL: http://www.xjtek.ru (дата обращения: 27.10.2025).
- Сайт, посвященный имитационному моделированию систем. URL: http://www.gpss.ru/ (дата обращения: 27.10.2025).
- Имитационное моделирование систем массового обслуживания. Казанский федеральный университет. URL: https://kpfu.ru/docs/F817173664/Mag_diplom_V_S_Kondratev_1.pdf (дата обращения: 27.10.2025).
- Дискретно-событийное моделирование. AnyLogic. URL: https://www.anylogic.ru/features/discrete-event-simulation/ (дата обращения: 27.10.2025).
- Основы теории массового обслуживания. Исследование операций. URL: https://stud.maru.net/referat/20560.html (дата обращения: 27.10.2025).
- Функции распределения. Документация AnyLogic. URL: https://help.anylogic.ru/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Ffunctions%2FProbability_Distributions.html (дата обращения: 27.10.2025).
- Имитационное моделирование систем массового обслуживания. КиберЛенинка. URL: https://cyberleninka.ru/article/n/imitatsionnoe-modelirovanie-sistem-massovogo-obsluzhivaniya (дата обращения: 27.10.2025).
- Имитационное моделирование систем массового обслуживания. URL: https://www.nntu.ru/content/sections/2192/pages/3576/docs/kurs_lm_lek_12.pdf (дата обращения: 27.10.2025).
- Имитационное моделирование. Томский политехнический университет. URL: https://portal.tpu.ru/SHARED/i/IVP/metod/Tab/imit_mod.pdf (дата обращения: 27.10.2025).
- Основы имитационного моделирования. ИСОиП (филиал) ДГТУ в г. Шахты. URL: https://www.isoiptgu.ru/uploads/files/Основы_имитационного_моделирования.pdf (дата обращения: 27.10.2025).
- Имитационное моделирование: сущность, методы и особенности. КиберЛенинка. URL: https://cyberleninka.ru/article/n/imitatsionnoe-modelirovanie-suschnost-metody-i-osobennosti (дата обращения: 27.10.2025).
- Normal. Документация AnyLogic. URL: https://help.anylogic.ru/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Ffunctions%2Fnormal.html (дата обращения: 27.10.2025).
- Дискретно-событийное моделирование. Документация AnyLogic. URL: https://help.anylogic.ru/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Fmodel-types%2FDiscrete-event_simulation.html (дата обращения: 27.10.2025).
- Агентное моделирование. Документация AnyLogic. URL: https://help.anylogic.ru/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Fmodel-types%2FAgent_based_modeling.html (дата обращения: 27.10.2025).
- Элементы теории массового обслуживания и приложения к экономическим задачам. Белорусский государственный университет. URL: https://elib.bsu.by/bitstream/123456789/220261/1/783-785.pdf (дата обращения: 27.10.2025).
- Теория систем массового обслуживания. Министерство образования и науки Российской Федерации. URL: https://www.asu.ru/files/documents/00008544.pdf (дата обращения: 27.10.2025).
- Имитационное моделирование систем массового обслуживания. Simulation.su. URL: https://resources.today/PDF/23INOR419.pdf (дата обращения: 27.10.2025).
- Normal (усеченное). Документация AnyLogic. URL: https://help.anylogic.ru/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Ffunctions%2Fnormal_truncated.html (дата обращения: 27.10.2025).
- Имитационное моделирование: теория и практика. Студенческий научный форум. URL: https://scienceforum.ru/2014/article/2014013401 (дата обращения: 27.10.2025).
- Настройка времени между прибытиями для эксперимента в AnyLogic. HPC. URL: https://hpc.ru/anylogic/nastroyka-vremeni-mezhdu-pribytiyami-dlya-eksperimenta-v-anylogic/ (дата обращения: 27.10.2025).
- Практикум «Моделирование систем в среде AnyLogic 6.4.1». Часть 1. URL: https://elib.psuti.ru/download/1283-praktikum-%C2%ABmodelirovanie-sistem-v-srede-anylogic-6.4.1%C2%BB-chast-1.pdf (дата обращения: 27.10.2025).
- Математическое и имитационное моделирование. URL: https://www.elibrary.ru/download/elibrary_12882298_23850388.pdf (дата обращения: 27.10.2025).
- Моделирование. Учебное пособие. Олейникова С.А. Стр. 13. URL: https://www.vags.ru/assets/files/nauka/el_bibl/olejnikova.pdf (дата обращения: 27.10.2025).
- Имитационное моделирование как необходимая часть инженерного образования. AnyLogic. URL: https://www.anylogic.ru/upload/papers/2016-01-28_simulation-modeling-as-an-integral-part-of-engineering-education.pdf (дата обращения: 27.10.2025).
- Моделирование случайных событий в AnyLogic. URL: https://www.anylogic.ru/blog/modeling-random-events-in-anylogic/ (дата обращения: 27.10.2025).
- Имитационное моделирование и анализ систем массового обслуживания. Богнюков. URL: https://cyberleninka.ru/article/n/imitatsionnoe-modelirovanie-i-analiz-sistem-massovogo-obsluzhivaniya (дата обращения: 27.10.2025).
- Академические статьи – дискретно-событийное моделирование. AnyLogic. URL: https://www.anylogic.ru/academia/articles/discrete-event-modeling/ (дата обращения: 27.10.2025).
- Exponential. Документация AnyLogic. URL: https://help.anylogic.ru/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Ffunctions%2Fexponential.html (дата обращения: 27.10.2025).
- Uniform. Документация AnyLogic. URL: https://help.anylogic.ru/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Ffunctions%2Funiform.html (дата обращения: 27.10.2025).
- Черушева Т.В., Зверовщикова Н.В. Теория массового обслуживания : учеб. пособие. Пенза : Изд-во ПГУ, 2021. URL: https://dep_vpm.pnzgu.ru/files/dep_vpm.pnzgu.ru/teoriya_massovogo_obsluzhivaniya_0.pdf (дата обращения: 27.10.2025).
- Равномерное распределение. URL: https://mgri.ru/upload/iblock/c53/c5354972e259b32c696e1a7b8e5c1d1a.pdf (дата обращения: 27.10.2025).
- Распределение точек на плоскости по законам нормального и пуассоновского распределений в AnyLogic. HPC. URL: https://hpc.ru/anylogic/raspredelenie-tochek-na-ploskosti-po-zakonam-normalnogo-i-puassonovskogo-raspredelenij-v-anylogic/ (дата обращения: 27.10.2025).