Материал: 1019

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

В нашем случае объект создает заявки через временной интервал, распределенный по показательному (экспоненциальному) закону со средним значением 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.После запуска модели вы увидите окно презентации этой