
Anylogic / 1
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
Московский технический университет связи и информатики
Лабораторная работа № 1
«Среда моделирования AnyLogic»
по дисциплине
«Обеспечение доверия и безопасности»
Выполнил: студ. гр. БЗС2002
Ломакин А. А.
Проверила: Антонова В.М.
Москва 2023
Практическое задание
В среде моделирования AnyLogic создадим модель сервера с ограниченной очередью, на который поступают запросы на обслуживание.
Сервер обрабатывает запросы с интервалами, распределенными по показательному закону со средним значением 2 минуты. Время обработки сервером одного запроса распределено по экспоненциальному закону со средним значением 3 минуты. Сервер имеет входной буфер емкостью 10 запросов. Сервер представляет собой однофазную систему массового обслуживания разомкнутого типа с ограниченной входной емкостью, т.е. с отказами и абсолютной надежностью.
Выполнение
Рисунок 1 – создание новой модели
Рисунок 2 – библиотека моделирования процессов во вкладке «палитра»
Рисунок 3 – экспозиция объектов на диаграмме
Дадим краткую характеристику объектов диаграммы:
- Объект Source генерирует заявки определенного типа. Обычно он используется в качестве начальной точки диаграммы процесса, формализующей поток заявок. В нашем примере заявками будут запросы на обработку сервером, а объект Source будет моделировать их поступление.
- Объект Queue моделирует очередь заявок, ожидающих освобождения сервера.
- Объект Delay задерживает заявки на заданный период времени. Он представляет в нашей модели сервер, обрабатывающий запросы.
- Объект Sink уничтожает поступившие заявки. Обычно он используется в качестве конечной точки потока заявок (и диаграммы процесса соответственно).
Рисунок 4 – настройка объекта source
Рисунок 5 – настройка объекта queue
Рисунок 6 – настройка объекта delay
Рисунок 7 – настройка эксперимента
Рисунок 8 – ошибка при запуске модели из-за недостаточного объема очереди
Рисунок 9 – изменение свойств объекта queue
Рисунок 10 – создание прямоугольного узла
Рисунок 11 – изменение цвета заливки на динамическое значение
delay.size()>0?red:green,
где delay — это имя нашего объекта delay. Функция size() возвращает число запросов, которые обслуживаются в данный момент времени в модели. Если сервер занят, то цвет кружка будет красным, в противном случае — зелёным.
Рисунок 12 – путь очереди к серверу
Рисунок 13 – выбор места агента для очереди
Рисунок 14 – выбор места агентов для сервера
Рисунок 15 – результат работы созданной анимации
Рисунок 16 – создание нового агента
Рисунок 17 – настройка агента
Рисунок 18 – добавление в проект столбиковой диаграммы (среднего ожидания в очереди)
Рисунок 19 – настройка сбора статистики
Здесь Server - это имя нашего объекта Delay. У каждого объекта Delay есть встроенный набор данных statsUtilization, занимающийся сбором статистики использования этого объекта. Функция mean() возвращает среднее из всех измеренных этим набором данных значений. Вы можете использовать и другие методы сбора статистики, такие, как min() или max().
Рисунок 20 – добавление второй столбиковой диаграммы (средней длины очереди)
Здесь statsSize - это имя объекта типа "статистика" StatisticsContinuous, производящего сбор статистики размера очереди объекта Queue
Рисунок 21 – запуск созданной модели
Рисунок 22 – создание параметров (сбора статистики клиентов по времени ожидания)
Рисунок 23 – настройка элемента сбора данных
Рисунок 24 - Изменение свойств диаграммы процесса
Этот код будет сохранять время создания агента-клиента в переменной enteredSystem нашего типа агента Mail. Функция time() возвращает текущее значение модельного времени.
Рисунок 25 - Изменение свойств объекта queue
agent.startWaiting = time(); - запоминает время начала ожидания клиентом его очереди на обслуживание в переменной startWaiting нашего типа агента Mail.
waitTimeDistr.add(time() - agent.startWaiting); - добавляет время, в течение которого клиент ожидал обслуживания, в объект сбора данных waitTimeDistr.
Рисунок 26 – изменение свойств объекта sink
Рисунок 27 – создание первой гистограммы
Рисунок 28 - итоговая модель для дисциплины обслуживания FIFO
Рисунок 29 - итоговая модель для дисциплины обслуживания LIFO
Вывод
В рамках данной практической работы были приобретены навыки
работы с таким программным обеспечением как AnyLogic, в котором было
произведено моделирование очередей по дисциплинам обслуживания LIFO и
FIFO. Построенные наглядные модели помогли детально разобраться в их
принципах работы. На основе полученных результатов можно сделать вывод,
что система обслуживания очередей LIFO обрабатывает заявки намного
эффективнее, чем система FIFO. При дисциплине обслуживания LIFO время
ожидания запроса в очереди сильно уменьшается.
Контрольные вопросы
Что представляет собой дисциплина обслуживания очередей FIFO? Приведите примеры из реальной жизни.
FIFO (First In First Out – Первый пришел, первым ушел) передает пакеты, поставленные в очередь в том порядке, в котором они поступили. То есть, чем раньше объект появился в очереди, тем раньше он ее покинет.
Например, такие сетевые устройства, как коммутаторы и маршрутизаторы, используют механизм FIFO для передачи пакетов данных к другим устройствам. Наглядное формирование и расформирование очереди для механизма FIFO:
Что представляет собой дисциплина обслуживания очередей LIFO? Приведите примеры из реальной жизни.
LIFO (Last In First Out - Последним пришел, первым ушел).
Т.е. чем позже объект появился в очереди, тем раньше он ее покинет. Наглядное формирование и расформирование очереди для механизма LIFO:
Опишите порядок выполнения практической работы.
Создание диаграммы процесса; Изменение свойств блоков диаграммы процесса; Настройка запуска модели; Создание анимации модели; Добавление статистики модели; Изменение свойства блоков диаграммы процесса; Получение итоговых моделей FIFO и LIFO
Как происходит сбор статискики в данной работе?
Объекты Библиотеки моделирования процессов самостоятельно производят сбор основной статистики. Все, что нужно сделать — это включить сбор статистики для объекта.
Откройте палитру «Статистика». Эта палитра содержит элементы сбора данных и статистики, а также диаграммы для визуализации данных и результатов моделирования.
Перейдите в секцию «Данные свойств» столбиковой диаграммы. Щелкните кнопку «Добавить» элемент данных, чтобы задать данные для отображения в диаграмме
Введите «Server.statsUtilization.mean()» в поле «Значение». Здесь Server - это имя нашего объекта Delay. У каждого объекта Delay есть встроенный набор данных statsUtilization, занимающийся сбором статистики использования этого объекта. Функция mean() возвращает среднее из всех измеренных этим набором данных значений. Вы можете использовать и другие методы сбора статистики, такие, как min() или max().
Что представляет собой система массового обслуживания? Приведите примеры.
Любую систему, в которой поток требований встречает ограниченные средства их удовлетворения, можно рассматривать как систему массового обслуживания (СМО).
В общем случае под требованием обычно понимают запрос на удовлетворение некоторой потребности пользователя, например, разговор с другим абонентом, посадка в самолет, покупка продуктов, заявка на обслуживание сервером.
Модели СМО удобны для описания отдельных современных вычислительных систем, таких как процессор - винчестер, канал ввода – вывода и т.д. Вычислительная система в целом представляет собой совокупность взаимосвязанных систем. Например, заявка на решение некоторой задачи, проходит несколько этапов обработки, обращения к внешним запоминающим устройствам и устройствам и устройствам ввода – вывода. После выполнения некоторой последовательности таких этапов, заявка считается обслуженной, и она покидает систему.
Как можно добавить в исследуемую модель гистограммы распределений времени?
Добавьте две гистограммы для отображения распределений времен ожидания клиента и пребывания клиента в системе.
Чтобы добавить гистограмму на диаграмму агента, перетащите элемент «Гистограмма» из палитры «Статистика».
Укажите, какой элемент сбора данных хранит данные, которые вы хотите отображать на гистограмме: в секции «Данные свойств гистограммы» щелкните мышью по кнопке «Добавить данные» и измените «Заголовок» отображаемых данных на Waiting time distribution.
Введите в поле «Данные» имя соответствующего элемента: waitTimeDistr.
Добавьте еще одну гистограмму и расположите ее под ранее добавленной. Измените «Заголовок» отображаемых данных на Time in system distribution. В поле «Данные» введите имя элемента, хранящего данные, которые будут отображаться на гистограмме: timeInSystemDistr
Введите в поле «Данные» имя соответствующего элемента: timeInSystemDistr.