Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио. |
Модель обработки запросов сервером
Изменение свойств блоков диаграммы процесса
Свойства объекта (как и любого другого элемента AnyLogic) можно изменить в панели Свойства.
Обратите внимание, что панель Свойства является контекстно-зависимой. Она отображает свойства выделенного в текущий момент элемента. Поэтому для изменения свойств элемента нужно будет предварительно щелчком мыши выделить его в графическом редакторе или в панели Проекты.
Чтобы всегда была уверенность в том, что в текущий момент в рабочем пространстве выбран именно нужный элемент, и именно его свойства вы редактируете в панели Свойства, обращайте внимание на первую строку, показываемую в панели Свойства - в ней отображается имя выбранного в текущий момент времени элемента и его тип.
Согласно принятым стандартам, блоки в диаграмме процесса обычно располагаются цепочкой слева направо, представляя собой последовательную очередность операций, которые будут производиться над заявкой.
Первым объектом в диаграмме процесса является объект класса Source. Объект source генерирует заявки определенного типа. Заявки представляют собой объекты, которые производятся, обрабатываются, обслуживаются, или еще каким-нибудь образом подвергаются действию моделируемого процесса: это могут быть клиенты в системе обслуживания, детали в модели производства, транспортные средства в модели перевозок, документы в модели документооборота, сообщения в моделях систем связи и т.д. В нашем примере заявками будут запросы на обработку данных, а объект source будет моделировать поступление запросов на сервер.
В нашем случае объект (элемент) создает заявки через временной интервал, распределенный по показательному (экспоненциальному) закону со средним значением 2 мин.
Установим среднее время поступления запросов и среднее время их обработки в секундах. Однако имеется возможность установить время в минутах, часах, днях, в чем вы убедитесь несколько позднее, когда бу-дете устанавливать модельное время.
Выделите объект source. В выпадающем списке Заявки прибывают согласно укажите, что запросы поступают согласно Времени между прибытиями (Рис. 1.15). В поле Время между прибытиями появится запись exponential(1). Установите согласно постановке задачи среднее значение интервалов времени поступления запросов на сервер, изменив свойства объекта source. Для этого вместо характеристики распределения 1 введите 1/120.0.
В языке программирования Java символ / означает целочисленное деление, т.е. если оба числа целые, то и результат будет целым. В нашем случае отношение 1/120 было бы равно нулю. Для получения вещественного результата, необходимо, чтобы хотя бы одно из чисел было вещественным (double). Поэтому в качестве характеристики экспоненциального распределения (интенсивности поступления запросов) необходимо указать 1/120.0 или 1.0/120.
Следующий объект - queue. Выделите его. Он моделирует очередь заявок, ожидающих приема объектами, следующими за данным объектом в диаграмме процесса. В нашем случае он будет моделировать очередь запросов, ждущих освобождения сервера.
Измените свойства объекта queue (Рис. 1.16).
- Задайте длину очереди. Введите в поле Вместимость 5. В очереди будут находиться не более 5 запросов.
- Установите флажок Включить сбор статистики, чтобы включить сбор статистики для этого объекта. В этом случае по ходу моделирования будет собираться статистика по количеству запросов в очереди. Если же вы не установите этот флажок, то данная функциональность будет недоступна, поскольку по умолчанию она отключена для повышения скорости выполнения модели.
Следующим в нашей диаграмме процесса расположен объект delay. Он задерживает заявки на заданный период времени, представляя в нашей модели непосредственно сервер, на котором обрабатываются запросы.
Измените свойства объекта delay (Рис. 1.17).
- Обработка одного запроса занимает примерно 3 мин. Задайте время обслуживания, распределенное по экспоненциальному закону со средним значением 3 мин. Для этого введите в поле Время задержки exponential(1/180.0). Функция exponential() является стандартной функ-цией генератора случайных чисел AnyLogic. AnyLogic предостав-ляет функции и других случайных распределений, таких как нормальное, треугольное, и т. д.
- Установите флажок Включить сбор статистики.
Последним в диаграмме нашей дискретно-событийной модели находится объект sink. Этот объект уничтожает поступившие заявки. Обычно он используется в качестве конечной точки потока заявок (и диаграммы процесса соответственно). В нашем случае он выводит из модели обработанные сервером запросы.
Настройка запуска модели
Вы можете сконфигурировать выполнение модели в соответствии с вашими требованиями. Модель выполняется в соответствии с набором установок, задаваемым специальным элементом модели - экспериментом. Вы можете создать несколько экспериментов с различными установками и, изменять конфигурацию модели, просто запуская тот или иной эксперимент модели.
В панели Проект эксперименты отображаются в нижней части дерева модели. Один эксперимент, названный Simulation, создается по умолчанию.
Это простой эксперимент, позволяющий запускать модель с заданными значениями параметров, поддерживающий режимы виртуального и реального времени, анимацию и отладку модели.Если вы хотите наблюдать поведение модели в течение длительного периода (до того момента, пока вы сами не остановите выполнение модели), то по умолчанию времени остановки нет. Обработку запросов сервером мы планируем исследовать в течение одного часа, т.е. 3600 с. Тем не менее, оставьте время остановки модели не заданным.
- В панели Проект выделите эксперимент Simulation:Main.
- На странице Основные панели Свойства выберите опцию Фиксированное начальное число (воспроизводимые прогоны).
- В поле Начальное число: установите 9 (такое же, как и в GPSS-программе).
- На странице Модельное время панели Свойства оставьте всё по умолчанию.
- В панели Проект, выделите Server (Рис. 1.19).
- На странице Основные панели Свойства из выпадающего списка Единицы модельного времени: выберите секунды.
Запуск модели
Постройте вашу модель с помощью кнопки панели инструментов (F7) Построить модель (при этом в рабочей области AnyLogic должен быть выбран какой-то элемент именно этой модели). Если в модели есть какие-нибудь ошибки, то построение не будет завершено, и в панель Ошибки будет выведена информация об ошибках, обнаруженных в модели. Двойным щелчком мыши по ошибке в этом списке вы можете перейти к предполагаемому месту ошибки, чтобы исправить её.
После исправления ошибок и построения модели, запустите её:
- Щелкните мышью кнопку панели инструментов Запустить (или нажмите F5) и выберите из открывшегося списка эксперимент, который вы хотите запустить. Эксперимент этой модели будет называться Server/Simulation (Рис. 1.20).
- В дальнейшем нажатием кнопки Запустить (или кнопки F5) будет запускаться тот эксперимент, который запускался вами в последний раз. Чтобы выбрать другой эксперимент, вам будет нужно щелкнуть мышью по стрелке, находящейся в правой части кнопки Запустить, и выбрать нужный вам эксперимент из открывшегося списка (или щелкнуть правой кнопкой мыши по этому эксперименту в панели Проект и выбрать Запустить из контекстного меню).
- После запуска модели вы увидите окно презентации этой модели (Рис. 1.21). В нем будет отображена презентация запущенного эксперимента. AnyLogic автоматически помещает на презентацию каждого простого эксперимента заголовок и кнопку, позволяющую запустить модель и перейти на презентацию, нарисованную вами для главного класса активного объекта этого эксперимента (Main).
- Щелкните данную кнопку. Этим щелчком вы запустите модель и перейдете к презентации корневого класса активного объекта запущенного эксперимента. Для каждой модели, созданной в Enterprise Library, автоматически создается блок-схема с наглядной визуализацией процесса, с помощью которой вы можете изучать текущее состояние модели, например, длину очереди, количество обработанных запросов и так далее (Рис. 1.22).
- Для каждого объекта определены правила, при каких условиях принимать заявки. Некоторые объекты задерживают заявки внутри себя, некоторые - нет. Для объектов также определены правила: может ли заявка, которая должна покинуть объект, ожидать на выходе, если следующий объект не готов её принять. Если заявка должна покинуть объект, а следующий объект не готов её принять, и заявка не может ждать, то модель останавливается с ошибкой (Рис. 1.22). Ошибка означает, что запрос не может войти в блок queue, так как его ёмкость, равная 5, заполнена.
- Нажмите OK. Далее измените свойства объекта queue, т. е. увеличьте длину очереди (см. Рис. 1.16). Для этого введите в поле Вместимость 15. Можете убедиться, что при увеличении ёмкости в пределах 6 … 14 модель по-прежнему останавливается с этой же ошибкой. Момент появления ошибки зависит от длительности времени моделирования. Снова запустите модель.
- Вы можете изменить скорость выполнения модели с помощью кнопок Замедлить и Ускорить панели инструментов.
- Вы можете следить за состоянием любого блока диаграммы процесса во время выполнения модели с помощью окна инспекта этого объекта. Чтобы открыть окно инспекта, щелкните мышью по значку нужного блока. Окно инспекта, подведя курсор, можно перемещать в нужное вам место. Также, подведя курсор к правому нижнему углу окна инспекта, можно изменять его размеры.
- В окне инспекта будет отображена базовая информация по выделенному объекту: например, для объекта queue будут отображены вместимость очереди, количество заявок, прошедшее через каждый порт объекта, средняя длина очереди и т. д. Такая же информация содержится в инспекте и для объекта delay (Рис. 1.23).
- Когда вы захотите остановить выполнение модели, щелкните мышью кнопку Прекратить выполнение панели управления окна презентации.
- Для предотвращения остановок модели по ранее указанной ошибке - недостаточной ёмкости объекта queue - мы увеличили ёмкость объекта queue. Однако можно было бы изменять среднее время имитации поступления запросов объектом source и среднее время обработки запросов сервером, т. е. среднее время задержки объекта delay, оставляя неизменной длину очереди и добиваясь безошибочной работы модели. Конечно, при изменении свойств объектов модели нужно обязательно исходить из целей её построения. Мы же не выполнили условий, указанных в постановке задачи, поэтому к выполнению их вернемся позже.