
- •Моделирование как наука. Роль математического моделирования в процессе принятия решения.
- •Дискретно событийное моделирование. Библиотека EnterpriseLibrary
- •Анимация и визуализация исполнения модели (на примере модели работы банковского отделения). Описание результатов моделирования в среде AnyLogic.
- •1.1. Создание нового проекта
- •1.2 Создание блок-схемы
- •1.3 Запуск модели и изучение ее поведения
- •1.4. Задание данных
- •1.5. Создание анимации
- •Сбор статистики.
- •Добаляем индикатор на анимацию
- •1.10. Запускаем модель
- •2. Моделирование банковских кассиров
- •2.1. Изменяем блок-схему
- •2.2. Отображение кассиров на анимации
- •2.2.1. Изменим анимацию модели
- •Литература
Анимация и визуализация исполнения модели (на примере модели работы банковского отделения). Описание результатов моделирования в среде AnyLogic.
Ниже описании пример создания модели.
1.1. Создание нового проекта
Создаем новую модель. В свойствах эксперимента Simulation задаем выполнение модели в режиме реального времени с выполнением одной единицы модельного времени в одну секунду. В этой модели под единицей модельного времени подразумевается одна минута работы банковского отделения.
1.2 Создание блок-схемы
Создаем блок – схему модели, которая пока будет состоять только из банкомата. Для этого создаем и соединяем объекты так, как показано ниже.
Объект Source генерирует заявки определенного типа через заданный временной интервал. Заявки представляют собой объекты, которые производятся, обрабатываются, обслуживаются, или еще каким-нибудь образом подвергаются действию моделируемого процесса: это могут быть клиенты в системе обслуживания, детали в модели производства, документы в модели документооборота и т.д. В моем примере заявками будут посетители банка, а объект Source будет моделировать их приход в банковское отделение.
Объект Queue моделирует очередь клиентов, ожидающих обслуживания.
Объект Delay моделирует задержку. В нашем примере он будет моделировать банкомат, тратящий определенное время на обслуживание клиента.
Объект Sink обозначает конец блок-схемы.
1.3 Запуск модели и изучение ее поведения
Щелкаем мышью по кнопке Запустить. AnyLogic переключится в режим работы модели.
С помощью визуализированной блок-схемы видно, сколько человек находится в очереди, сколько человек в данный момент обслуживается и т.д.
1.4. Задание данных
В свойстве объекта interarrivalTime объекта Source указываем, как часто в отделение банка приходят клиенты.
interarrivalTime: exponential(0.67)
Функция exponential() является стандартной функцией генератора случайных чисел AnyLogic. AnyLogic предоставляет функции и других случайных распределений, таких как нормальное, равномерное, треугольное, и т.д.
Задаем свойства объекта Queue - максимальную длину очереди
capacity 15
То есть в очереди будут находиться не более 15 человек.
Задаем свойства объекта Delay:
Называем объект ATM
Введем время задержки Delay Time: triangular(0.8, 1, 1.3)
Обслуживание одного клиента занимает примерно 1 минуту. Время обслуживания распределяется по треугольному закону со средним значением, равным 1, минимальным - равным 0.8 и максимальным - 1.3 минутам.
Запускаем модель щелчком по кнопке Запустить и изучите поведение модели.
1.5. Создание анимации
1.5.1. Создаем новую анимацию.
1.5.2. Нарисуем очередь с помощью инструмента рисования Ломаная.
Щелкаем по кнопке Ломаная и помещаем первую точку щелчком мыши по диаграмме.
Щелкаем в других местах диаграммы, чтобы добавить промежуточные точки.
Последнюю точку добавляем двойным щелчком
Очень важно, какую точку ломаной создаем первой. По умолчанию, заявки будут двигаться от точки, которую рисуется первой, к точке, которую рисуем последней. Если нужно, чтобы движение происходило в обратном направлении, можно установить свойство объекта animationForward в false.
1.5.3. Задаем следующие свойства ломаной линии:
Назовем линию ATMqueue
Сделаем ее невидимой. Для этого выделяем линию щелчком мыши и вводим false Видимость в свойствах линии.
1.5.4. Нарисуем прямоугольник:
Щелкаем по кнопке Прямоугольник, а затем по анимационной диаграмме
Задаем следующие свойства:
Назовем прямоугольник ATMarea
Задаем цвет заливки
Вводим Java выражение, задающее цвет прямоугольника во время работы модели:
ATM.size() > 0 ? Color.green : Color.white
ATM – это имя созданного нами объекта Delay.
Функция size() возвращает число человек, обслуживаемых в данный момент времени. Если банкомат занят, то цвет прямоугольника будет зеленым, в противном случае - белым.
Color – это класс Java, позволяющий использовать стандартные цвета (черный, синий, красный, голубой, желтый и т.д.), и создавать любые другие.
Теперь я должна задать созданные анимационные объекты в качестве анимационных фигур объектов блок-схемы моей системы.
1.5.5. Задаем анимационные свойства объектов блок-схемы
Задаем следующие свойства объекта Queue:
Задаем анимационную фигуру объекта
Щелкаем мышью по полю Animation Shape и выбираем animation.ATMqueue из выпадающего списка.
Задаем анимационный стиль
Щелкаем мышью по полю Animation Type и задаем AUTO.
Объекты Enterprise Library поддерживают несколько анимационных стилей. Например, очередь может отображаться в виде линии, упорядоченного или неупорядоченного набора элементов. Стиль AUTO определяет стиль автоматически в зависимости от заданной для объекта анимационной фигуры. В нашем случае очередь будет отображаться линией.
1.5.6. Запускаем модель.
Запустив модель, видим окно анимации. Цвет прямоугольника будет меняться в зависимости от того, обслуживается ли клиент в данный момент времени.