Учебное пособие AnyLogic (1). Учебное пособие по дисциплине имитационое и математическое моделирование Составитель Ремезова Е. М
Скачать 4.34 Mb.
|
Постановка задачи:Сервер обрабатывает запросы, поступающие с автоматизированных рабочих мест с интервалами, распределенными по показательному закону со средним значением 2 мин. Время обработки сервером одного запроса распределено по экспоненциальному закону со средним значением 3 мин. Сервер имеет входной буфер ёмкостью 5 запросов. Построить имитационную модель для определения математического ожидания времени и вероятности обработки запросов. Сервер представляет собой однофазную систему массового обслуживания разомкнутого типа с ограниченной входной емкостью, то есть с отказами, и абсолютной надёжностью (Рисунок 41). На рисунке 1 приведены также объекты AnyLogic, которые будут использованы для создания диаграммы процесса. На них мы остановимся позже. Приступим к созданию диаграммы процесса. Рисунок 41 Сервер как система массового обслуживания Ход работы: Создание диаграмму процесса:Создадим новую модель, назовём её Server. Создадим диаграмму процесса, для начала нам понадобятся 4 элемента. Соединим данные объекты как показано на Рисунке 42. Объект Source генерирует заявки определенного типа. Обычно он используется в качестве начальной точки диаграммы процесса, формализующей поток заявок. В нашем примере заявками будут запросы на обработку сервером, а объект Source будет моделировать их поступление. Объект Queue моделирует очередь заявок, ожидающих приема объектами, следующими за данным в диаграмме процесса. В нашем случае он будет моделировать очередь запросов, ожидающих освобождения сервера. Объект Delay задерживает заявки на заданный период времени. Он представляет в нашей модели сервер, обрабатывающий запросы. Объект Sink уничтожает поступившие заявки. Обычно он используется в качестве конечной точки потока заявок (и диаграммы процесса соответственно). Рисунок 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, оставляя неизменной длину очереди и добиваясь безошибочной работы модели. Конечно, при изменении свойств объектов модели нужно обязательно исходить из целей её построения. Мы же не выполнили условий, указанных в постановке задачи, поэтому к выполнению их вернемся позже. |