Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

m1044

.pdf
Скачиваний:
5
Добавлен:
15.11.2022
Размер:
5.17 Mб
Скачать

скольку единовременно наш банкомат не обслуживает больше одного клиента, то мы и выбираем тип анимации Одиночная.

Рис. 3.11. Связывание объекта Delay с элементом презентации

Теперь вы можете запустить модель и изучить ее поведение. Для ускорения работы модели переключитесь в режим виртуального времени, щелкнув мышью по кнопке панели инструментов Реальное/виртуальное время. В режиме виртуального времени модель будет выполняться максимально быстро, без привязки модельного времени к реальному.

Запустите модель. Вы увидите, что у нашей модели теперь есть простейшая анимация – банкомат и ведущую к нему очередь клиентов. Цвет фигуры банкомата будет меняться в зависимости от того, обслуживается ли клиент в данный момент времени.

По умолчанию заявки (то есть, посетители банковского отделения) будут отображаться на анимации маленькими прямоугольниками различных цветов. Чтобы анимация выглядела более наглядно, зададим в качестве фигуры анимации клиента фигурку человека.

Для анимации клиента откройте палитру Картинки. Эта палитра содержит набор картинок, которые наиболее часто используются пользователями AnyLogic при создании моделей. Пере-

31

тащите элемент Человек из палитры на диаграмму графического редактора:

Поместите картинку за границу видимой области презентации. Для этого передвиньте холст диаграммы немного вниз, нажав правую кнопку мыши в графическом редакторе и перетащив мышь, не отпуская кнопки, вниз. Перетащите фигурку человечка выше верхней границы экрана презентации, как показано на рис. 3.12. Мы делаем это для того, чтобы картинка оказалась за областью видимости диаграммы. Передвиньте холст диаграммы обратно.

Рис. 3.12. Добавление анимации клиента

Теперь нам нужно сообщить объекту Source, чтобы он использовал добавленную фигурку в качестве фигуры анимации заявки (т.е. клиента банка). Выделите объект Source в графическом редакторе. В поле Фигура анимации заявки введите имя нашей фигурки человека: person (при этом вы можете воспользоваться помощником написания кода).

Теперь Вы можете запустить модель и наблюдать за моделируемым процессом с помощью анимации. Обслуживающиеся и ожидающие обслуживания в очереди клиенты будут отображаться на анимации нарисованными нами картинками человечков

(рис. 3.13).

32

Рис. 3.13. Настройка фигуры анимации заявки

Эта простейшая модель продемонстрировала основные принципы работы с Основной библиотекой. Теперь мы готовы к тому, чтобы усовершенствовать нашу модель.

3.3. Сбор статистики использования ресурсов

AnyLogic предоставляет пользователю удобные средства для сбора статистики по работе блоков диаграммы процесса. Объекты Основной библиотеки самостоятельно производят сбор основной статистики. Все, что нужно сделать – это включить сбор статистики для объекта.

Поскольку мы уже сделали это для объектов Delay и Queue, то теперь мы можем, например, просмотреть интересующую нас статистику (скажем, статистику занятости банкомата и длины очереди) с помощью диаграмм.

Откройте палитру Статистика. Эта палитра содержит элементы сбора данных и статистики, а также диаграммы для визуализации данных и результатов моделирования. Перетащите эле-

мент Столбиковая диаграмма из палитры Статистика на диа-

грамму класса и измените ее размер, как показано на рис. 3.14.

33

Рис. 3.14. Добавление элемента для сбора статистики

Перейдите на страницу Основные панели Свойства. Щелкните мышью по кнопке Добавить элемент данных. При этом появится секция свойств того элемента данных, который будет отображаться на этой диаграмме. Измените Заголовок на Коэфф.

Занятости. Введите delay.statsUtilization.mean() в поле Значе-

ние. Здесь delay – это имя нашего объекта Delay. У каждого объекта Delay есть встроенный набор данных statsUtilization, занимающийся сбором статистики использования этого объекта. Функция mean() возвращает среднее из всех измеренных этим набором данных значений. Вы можете использовать и другие методы сбора статистики, такие, как min() или max(). Полный список методов можно найти на странице документации этого класса набора данных: StatisticsContinuous (на английском языке). Перейдите на страницу Внешний вид панели Свойства. Выберите первую опцию из набора кнопок Расположение, чтобы изменить расположение легенды относительно диаграммы. Добавьте еще одну столбиковую диаграмму для отображения средней длины очереди. Измените ее размер так, как показано на рис. 3.16. Перейдите на страницу Внешний вид панели Свойства и выберите первую опцию в секции свойств Направление, чтобы столбцы столбиковой диаграммы росли влево.

34

Рис. 3.15. Настройка свойств столбиковой диаграммы

Рис. 3.16. Настройка внешнего вида столбиковой диаграммы

Добавьте элемент данных, который будет отображаться на диаграмме. Задайте Заголовок: Queue length и задайте Значение: queue.statsSize.mean(). Здесь statsSize – это имя объекта типа «статистика» StatisticsContinuous, производящего сбор статистики размера очереди объекта Queue (рис. 3.17).

35

Рис. 3.17. Добавление элемента данных для столбиковой диаграммы

Запустите модель и пронаблюдайте за занятостью банкомата и средней длиной очереди с помощью только что созданных диаграмм.

3.4. Задание

Внесите изменения в модель банковского отделения согласно варианту (табл. 3.1).

 

 

Таблица 3.1

 

Варианты изменения банковской модели

 

 

 

Вариант

 

Распределение вероятности прихода клиентов в банк

1

 

Экспоненциальное

2

 

Экспоненциальное

3

 

Экспоненциальное

4

 

Экспоненциальное

5

 

Экспоненциальное

6

 

Нормальное

7

 

Нормальное

8

 

Нормальное

9

 

Нормальное

10

 

Нормальное

11

 

Треугольное

12

 

Треугольное

13

 

Треугольное

14

 

Треугольное

15

 

Треугольное

16

 

Равномерное

17

 

Равномерное

18

 

Равномерное

19

 

Равномерное

20

 

Равномерное

36

Приведите скриншоты работы модели, оцените коэффициенты занятости кассиров, подберите их количество, чтобы их коэффициент занятости был в районе 0.7–0.8.

Лабораторная работа № 4. Системно-динамическая модель

Цель работы:

В этой лабораторной работе описывается системно-динами- ческий подход к моделированию, успешно применяемый во многих сферах, в том числе для описания социальных, урбанистических, экологических, бизнес систем.

Задание к лабораторной работе:

Рассматривается модель распространения нового продукта по Бассу. Изначально продукт никому не известен, и для того, чтобы люди начали его приобретать, он рекламируется. В итоге определенная доля людей приобретает продукт под воздействием рекламы. Также люди приобретают продукт в результате общения с теми, кто этот продукт уже приобрел.

4.1. Анализ модели

Вначале мы должны проанализировать нашу модель, чтобы решить, как ее можно описать в терминах системной динамики. Мы должны определить ключевые переменные модели и то, как они влияют друг на друга, а затем создать потоковую диаграмму модели. При создании потоковой диаграммы мы должны учесть, какие переменные должны быть представлены накопителями, какие потоками, а какие – вспомогательными переменными.

Накопители (также называемые уровнями или фондами) представляют собой такие объекты реального мира, в которых сосредотачиваются некоторые ресурсы; их значения изменяются непрерывно. Потоки – это активные компоненты системы, они изменяют значения накопителей. В свою очередь, накопители системы определяют значения потоков. Вспомогательные переменные помогают преобразовывать одни числовые значения в другие; они могут произвольно изменять свои значения или быть константами.

37

При создании потоковой диаграммы выявите переменные, которые накапливают значения с течением времени. В нашей модели численности потребителей и потенциальных потребителей продукта являются накопителями, а процесс приобретения продукта – потоком.

4.2. Создание накопителей

Создадим накопитель для моделирования численности потенциальных потребителей. Откройте закладку Системная динамика панели Палитра и добавьте в модель Накопитель. Когда Вы добавите элемент на диаграмму, он будет выделен, и его свойства будут отображены в панели Свойства. В поле Имя введите новое имя накопителя: ПотенцКлиенты.

Аналогично создайте еще один накопитель для моделирования численности потребителей и поместите его справа от накопителя ПотенцКлиенты, как показано на рис. 4.1. Назовите его Клиенты.

Рис. 4.1. Добавление накопителей

4.3.Добавление потока продаж продукта

Вэтой простейшей модели есть только один поток – поток продаж продукта, увеличивающий число потребителей продукта

иуменьшающий численность потенциальных потребителей. В

38

AnyLogic поток задается переменной поток. Значение потока вычисляется в соответствии с заданной формулой.

Добавьте поток, ведущий из накопителя ПотенцКлиенты в накопитель Клиенты. Для этого сделайте двойной щелчок мышью по накопителю, из которого поток вытекает (ПотенцКлиенты), а затем щелкните по тому накопителю, в который он втекает (Клиенты). AnyLogic создаст новый поток и сделает его исходящим потоком для накопителя ПотенцКлиенты и входящим – для Клиенты. Поток отображается в виде стрелки со значком вентиля посередине. Стрелка показывает направление потока – в данном случае поток будет уменьшать значение накопителя ПотенцКлиенты и увеличивать значение Клиенты. Выделите стрелку созданного потока в графическом редакторе и измените имя потока на ПотокКлиентов.

Добавьте также текстовые объекты из палитры Презентация для наглядного пояснения элементов модели. В результате диаграмма потоков и накопителей должна будет выглядеть, как показано на рис. 4.2.

Рис. 4.2. Добавление потока

При добавлении потока автоматически были созданы формулы. Значения входящих потоков, т.е. потоков, которые увеличивают значение накопителя, прибавляются, а значения исходящих

39

потоков, уменьшающих значение накопителя, вычитаются из текущего значения накопителя.

4.4. Задание констант

Теперь в модель необходимо ввести несколько параметров. Создадим константу, задающую общую численность населе-

ния. Для этого перетащите элемент Параметр из палитры Системная динамика на диаграмму класса активного объекта. На странице Основные панели Свойства задайте свойства этого параметра. Измените имя параметра, введите ВсегоНаселение в по-

ле Имя. В поле Значение по умолчанию введите 100000. Пусть общая численность населения в нашей модели будет именно такой.

4.5. Задание начальных значений накопителей

Теперь мы можем задать начальные значения накопителей. Мы хотим задать общую численность людей в нашей модели

(заданную параметром ВсегоНаселение) в качестве начального значения накопителя ПотенцКлиенты. Для этого необходимо связать созданный нами параметр со свойствами накопителя.

Чтобы задать связь, сделайте двойной щелчок по элементу Связь палитры Системная динамика. Значок элемента при этом должен измениться. Сразу после этого, щелкните в графическом редакторе по элементу, который упоминается в выражении начального значения (ВсегоНаселение). Затем щелкните по накопителю ПотенцКлиенты, к которому должна следовать создаваемая связь зависимости. Теперь, когда мы создали связь, можно задать начальное значение накопителя, сославшись в нем на параметр ВсегоНаселение. На странице Основные панели Свойства введите ВсегоНаселение в поле Начальное значение (рис. 4.3).

Начальное значение накопителя Клиенты, моделирующего потребителей продукта, задавать не нужно, поскольку изначально число потребителей равно нулю, а накопитель по умолчанию и так инициализируется нулем.

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]