Учебное пособие AnyLogic (1). Учебное пособие по дисциплине имитационое и математическое моделирование Составитель Ремезова Е. М
![]()
|
Постановка задачи:Сервер обрабатывает запросы, поступающие с автоматизированных рабочих мест с интервалами, распределенными по показательному закону со средним значением 2 мин. Время обработки сервером одного запроса распределено по экспоненциальному закону со средним значением 3 мин. Сервер имеет входной буфер ёмкостью 5 запросов. Построить имитационную модель для определения математического ожидания времени и вероятности обработки запросов. Сервер представляет собой однофазную систему массового обслуживания разомкнутого типа с ограниченной входной емкостью, то есть с отказами, и абсолютной надёжностью (Рисунок 41). На рисунке 1 приведены также объекты AnyLogic, которые будут использованы для создания диаграммы процесса. На них мы остановимся позже. Приступим к созданию диаграммы процесса. ![]() Рисунок 41 Сервер как система массового обслуживания Ход работы: Создание диаграмму процесса:Создадим новую модель, назовём её Server. Создадим диаграмму процесса, для начала нам понадобятся 4 элемента. Соединим данные объекты как показано на Рисунке 42. ![]() ![]() ![]() ![]() ![]() Рисунок 42 Диаграмма системы массового обслуживания Изменение свойств блоков модели, её настройка и запускПомним, что мы хотим сначала создать простейшую модель, в которой будем рассматривать только обработку запросов сервером. В нашем случае объект Sourse создает заявки через временной интервал, распределенный по показательному (экспоненциальному) закону со средним значением 2 мин. Установим среднее время поступления запросов и среднее время их обработки в секундах. В выпадающем списке «Прибывают согласно»: укажите, что запросы поступают согласно «Времени между прибытиями» (Рисунок 43). В поле «Время между прибытиями» появится запись exponential(1). Установите согласно постановке задачи среднее значение интервалов времени поступления запросов на сервер, изменив свойства объекта Source. Для этого вместо характеристики распределения 1 введите 1/120.0. ![]() Рисунок 43 Свойство Sourse Следующий объект - queue. Измените свойства объекта queue (Рисунок 44). Задайте длину очереди. Введите в поле «Вместимость» - 5. В очереди будут находиться не более 5 запросов. Установите флажок «Включить сбор статистики», чтобы включить сбор статистики для этого объекта. В этом случае по ходу моделирования будет собираться статистика по количеству запросов в очереди. ![]() Рисунок 44 Свойство Queue Следующим в нашей диаграмме процесса расположен объект delay. Измените свойства объекта delay (Рисунок 45). Обработка одного запроса занимает примерно 3 мин. Задайте время обслуживания, распределенное по экспоненциальному закону со средним значением 3 мин. Для этого введите в поле Время задержки: exponential(1/180.0). Функция exponential() является стандартной функцией генератора случайных чисел AnyLogic. Установите флажок «Включить сбор статистики». ![]() Рисунок 45 Свойста delay Настройка запуска модели Обработку запросов сервером мы планируем исследовать в течение одного часа, т.е. 3600 с. В панели «Проекты» выделите эксперимент Simulation:Main. Раскройте вкладку «Модельное время». Установите «Виртуальное время» (максимальная скорость). В поле «Остановить»: выберите из списка «В заданное время». В поле «Конечное время»: установите 3600. Раскройте вкладку «Случайность». Выберите опцию «Фиксированное начальное число» (воспроизводимые прогоны). В поле «Начальное число»: установите 9. После исправления ошибок и построения модели, запустите её (Рисунок 46): ![]() Рисунок 46 Запуск модели Для каждого объекта определены правила, при каких условиях принимать заявки. Некоторые объекты задерживают заявки внутри себя, некоторые - нет. Для объектов также определены правила: может ли заявка, которая должна покинуть объект, ожидать на выходе, если следующий объект не готов её принять. Если заявка должна покинуть объект, а следующий объект не готов её принять, и заявка не может ждать, то модель останавливается с ошибкой (Рисунок 47). Ошибка означает, что запрос не может покинуть объект source и войти в блок queue, так как его ёмкость, равная 5, заполнена. Также выдаётся сообщение о логической ошибке в модели ![]() Рисунок 47 Ошибка Нажмите ОК. Далее измените свойства объекта queue, т. е. увеличьте длину очереди. Для этого введите в поле Вместимость 15. Можете убедиться, что при увеличении ёмкости в пределах 6 … 14 модель по-прежнему останавливается с этой же ошибкой. Момент появления ошибки зависит от длительности времени моделирования. Снова запустите модель (и)(Рисунок 48). ![]() Рисунок 48 Второй запуск модели Вы можете следить за состоянием любого объекта диаграммы процесса во время выполнения модели с помощью окна инспекта этого объекта. В окне инспекта будет отображена базовая информация по выделенному объекту. Для предотвращения остановок модели по ранее указанной ошибке - недостаточной ёмкости объекта queue - мы увеличили ёмкость объекта queue. Однако можно было бы изменять среднее время имитации поступления запросов объектом source и среднее время обработки запросов сервером, т. е. среднее время задержки объекта delay, оставляя неизменной длину очереди и добиваясь безошибочной работы модели. Конечно, при изменении свойств объектов модели нужно обязательно исходить из целей её построения. Мы же не выполнили условий, указанных в постановке задачи, поэтому к выполнению их вернемся позже. |