В нашем случае объект создает заявки через временной интервал, распределенный по показательному (экспоненциальному) закону со средним значением 2 мин.
Установим среднее время поступления запросов и среднее время их обработки в секундах. Однако имеется возможность установить время в минутах, часах, днях, в чем вы убедитесь несколько позднее, когда будете устанавливать модельное время.
1.Выделите объект source. В выпадающем списке Прибывают согласно: укажите, что запросы поступают согласно Времени между прибытиями: (рис. 1.6).
2.В поле Время между прибытиями появится запись exponential(1). Установите согласно постановке задачи среднее значение интервалов времени поступления запросов на сервер, изменив свойства объекта source. Для этого вместо характеристики распределения 1 введите 1/120.0.
В языке программирования Java символ / означает
целочисленное деление, т.е. если оба числа целые, то и результат будет целым. В нашем случае отношение 1/120 было бы равно нулю. Для получения вещественного результата, необходимо, чтобы хотя бы одно из чисел было вещественным (double). Поэтому в качестве характеристики экспоненциального распределения (интенсивности поступления запросов) необходимо указать 1/120.0 или 1.0/120.
Следующий объект — queue. Выделите его. Он моделирует очередь заявок, ожидающих приема объектами, следующими за данным объектом в диаграмме процесса. В нашем случае он будет, как уже отмечалось, моделировать очередь запросов, ждущих освобождения сервера.
Измените свойства объекта queue (рис. 1.7):
1.Задайте длину очереди. Введите в поле Вместимость: 5. В очереди будут находиться не более 5 запросов.
2.Установите флажок Включить сбор статистики, чтобы
включить сбор статистики для этого объекта. В этом случае по ходу моделирования будет собираться статистика по количеству запросов в очереди. Если же вы не установите этот флажок, то данная функциональность будет недоступна, поскольку по умолчанию она отключена для повышения скорости выполнения модели. Для вывода, например, средней длины очереди, нужно в модели предусмотреть
Java код
Следующим в нашей диаграмме процесса расположен объект
delay. Он задерживает заявки на заданный период времени, представляя в нашей модели непосредственно сервер, на котором обрабатываются запросы.
Измените свойства объекта delay (рис. 1.8):
1. Обработка одного запроса занимает примерно 3 мин. Задайте время обслуживания, распределенное по экспоненциальному закону со средним значением 3 мин. Для этого введите в поле Время задержки: exponential(1/180.0). Функция exponential() является стандартной функцией генератора случайных чисел AnyLogic. AnyLogic предоставляет функции и других случайных распределений, таких как нормальное, треугольное, и т. д.
2. Установите флажок Включить сбор статистики.
Для вывода коэффициента использования объекта delay в модели также следует предусмотреть соответствующий Java код.
Последним в диаграмме нашей дискретно-событийной модели находится объект sink. Этот объект уничтожает поступившие заявки. Обычно он используется в качестве конечной точки потока заявок (и диаграммы процесса соответственно). В нашем случае он выводит из модели обработанные сервером запросы.
Настройка запуска модели:
Вы можете сконфигурировать выполнение модели в соответствии с вашими требованиями. Модель выполняется в соответствии с набором установок, задаваемым специальным элементом модели — экспериментом. Вы можете создать несколько экспериментов с различными установками и, изменять конфигурацию модели, просто запуская тот или иной эксперимент модели.
В панели Проект эксперименты отображаются в нижней части дерева модели. Один эксперимент, названный Simulation, создается по умолчанию (см. справа). Это простой эксперимент, позволяющий запускать модель с заданными значениями параметров, поддерживающий режимы виртуального и реального времени,
анимацию и отладку модели.
Если вы хотите наблюдать поведение модели в течение длительного периода (до того момента, пока вы сами не остановите выполнение модели), то по умолчанию времени остановки нет. Обработку запросов сервером мы планируем исследовать в течение одного часа, т.е. 3600 с.
1.В панели Проект выделите эксперимент Simulation:Main.
2.Щелчком раскройте вкладку Модельное время.
3.Установите Виртуальное время (максимальная скорость)
(рис. 1.9).
4.В поле Остановить: выберите из списка В заданное время.
5.В поле Конечное время: установите 3600.
6.Раскройте вкладку Случайность.
7.Выберите опцию Фиксированное начальное число (воспроизводимые прогоны).
8.В поле Начальное число: установите 9.
9.В панели Проект, выделите Server (рис. 1.10).
10.Из выпадающего списка Единицы модельного времени: выберите секунды.
Запуск модели:
Постройте вашу модель с помощью кнопки панели инструментов (F7) Построить модель (при этом в рабочей области
AnyLogic должен быть выбран какой-то элемент именно этой модели). Если в модели есть какие-нибудь ошибки, то построение не будет завершено, и в панель Ошибки будет выведена информация об ошибках, обнаруженных в модели. Двойным щелчком мыши по ошибке в этом списке вы можете перейти к предполагаемому месту ошибки, чтобы исправить её. При этом откроется соответствующее место ошибки.
После исправления ошибок и построения модели, запустите её: 1. Щёлкните мышью кнопку панели инструментов Запустить (или нажмите F5) и выберите из открывшегося списка эксперимент,
который вы хотите запустить. Эксперимент этой модели будет называться Server/Simulation.
2.В дальнейшем нажатием кнопки Запустить (или кнопки F5) будет запускаться тот эксперимент, который запускался вами в последний раз. Чтобы выбрать другой эксперимент, вам будет нужно щелкнуть мышью по стрелке, находящейся в правой части кнопки Запустить, и выбрать нужный вам эксперимент из открывшегося списка (или щелкнуть правой кнопкой мыши по этому эксперименту
впанели Проект и выбрать Запустить из контекстного меню).
3.После запуска модели вы увидите окно презентации этой