Алгоритм построения прогноза на основе аддитивной модели 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Алгоритм построения прогноза на основе аддитивной модели



1. Расчет значений сезонной компоненты

1.1. На основе исходных данных (см. табл.4) построим точечную диаграмму

Рисунок 6 – Точечная диаграмма

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

1.2. Расчет среднего значения объема продаж за 4 квартала (столбец 5)

Рисунок 7 - Расчет скользящего среднего

Введенные формулы необходимо растянуть на весь диапазон ячеек (D5:D14). Рассчитанные значения уже не содержат сезонной компоненты и соответствуют середине года, т.е. находится между 2 и 3 кварталом. Далее данные необходимо центрировать.

1.3. Расчет центрированной скользящей средней

Центрированная скользящая средняя (столбец 6) рассчитывается по формуле средней арифметической простой. Пример расчета представлен на рисунке:

Рисунок 8 - Расчет центрированной скользящей средней

Разность между фактическим значением объема продаж и центрированной скользящей средней и будет составлять величину сезонной компоненты и ошибки.

Рисунок 9 - Оценка сезонной компоненты

Далее необходимо рассчитать средние значения сезонной компоненты. Расчет проведем в следующей таблице:

Рисунок 10 - Логика расчета скорректированных значений сезонных компонент

Сумма сезонных компонент за четыре квартала должна быть равна нулю. Если это условие не выполняется, то значения сезонных компонент необходимо скорректировать. Например, сумма сезонных компонент = - 0,2 Делим эту величину на 4 квартала (-0,2 / 4 = -0,05) и полученный результат прибавляем к каждой компоненте с противоположным знаком.

Рисунок 11 - Расчет скорректированных значений сезонных компонент

На этом расчет сезонных компонент окончен.

2. Десезонализация данных. Расчет тренда.

Десезонализация данных состоит в вычитании значений сезонной компоненты из фактических значений: Q – S = T + E

Рисунок 12 - Десезонализация данных

Формулу, введенную в ячейку Е30 необходимо растянуть на диапазон (E31:Е42). Полученные оценки можно использовать для построения тренда.

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

Рисунок 13 - Линейная трендовая модель

Рисунок 14 - Экспоненциальная трендовая модель

Рисунок 15 - Логарифмическая трендовая модель

Рисунок 16 - Степенная трендовая модель

Из рисунков 12-16 видно, что наибольшая точность аппроксимации достигается в линейной трендовой модели. Для определения трендовой составляющей в полученное уравнение вместо x необходимо подставить порядковый номер квартала.

Рисунок 17 - Определение прогнозируемых значений

Построенная модель позволяет определить прогнозируемый объем продаж. Он равен сумме сезонной и трендовой составляющих.

3. Расчет ошибок. Оценка точности прогноза

Аддитивная модель имеет вид:

Q = T + S + E.

Значения сезонной и трендовой составляющих уже найдены. Вычитая эти значения из фактических объемов продаж, получим значения ошибок.

Q- T- S = E.

Рисунок 18 - Расчет ошибки

Для оценки точности прогноза рассчитывают следующие показатели:

3.1. Среднее абсолютное отклонение (MAD – mean absolute derivation)

где n – число уровней временного ряда, для которых определялось

прогнозное значение,

    - прогнозное значение показателя,

    - фактическое значение.

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

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

3.2. Средняя ошибка аппроксимации (MAPE – mean absolute percentage error)

Значение MAPE характеризует величину, на которую теоретические уровни, рассчитанные по модели, в среднем отклоняются от фактических. Для получения вывода о точности прогноза может быть использована следующая шкала (см.табл.5).

Таблица 5 - Оценка точности прогноза по критерию MAPE

Значение средней абс. ошибки в процентах (MAPE) Точность прогнозной модели
Менее 10% Очень высокая
10-20% Высокая
20-50% Удовлетворительная
Более 50% Неудовлетворительная

3.3. Средняя процентная ошибка (MPE – mean percentage error)

используется для оценки смещения прогноза, т.е. получения информации о том, является ли прогноз переоценивающим или недооценивающим

если MPE < 0, прогноз переоценивающий (характерно систематическое завышение прогнозируемого показателя по сравнению с фактическими значениями).

MPE > 0, прогноз недооценивающий (характерно занижение показателя).

Кроме того, при выборе лучшего метода прогнозирования часто используют среднеквадратическую ошибку (MSE - mean squared errors).

3.4. Среднеквадратическая ошибка (MSE – mean squared errors)

Для оценки точности модели рекомендуется создать следующую расчетную таблицу:

Рисунок 19 - Оценка точности прогноза

Для определения абсолютного значения показателя (модуля) рекомендуется использовать встроенную функцию MS Excel ABS(…). Формулы необходимо растянуть на весь диапазон ячеек, определить сумму по каждому столбцу и затем итоговое значение показателей точности.

Для расчета среднеквадратической ошибки рекомендуется воспользоваться формулой:

=КОРЕНЬ(СУММКВРАЗН(C47:C59;F47:F59)/13)

Рисунок 20 - Результат оценки точности прогноза

По результатам выполненных расчетов на основе аддитивной модели можно сделать следующие выводы:

- в среднем прогнозируемый объем продаж отклоняется от фактического в большую или в меньшую сторону на 3,5 тыс.руб.;

- средняя ошибка аппроксимации (MAPE) составляет 2,02%, что говорит о высокой точности аддитивной модели;

- средняя процентная ошибка (MPE) близка к нулю (составляет 0,013%), что означает незначительное занижение показателя. В целом прогноз близок к несмещенному. Прогнозируемый объем продаж на следующий (14-ый) квартал составит 362,62 т.р. средняя процентная ошибка (MPE) близка к нулю (составляет 0,013%), что означает незначительное занижение показателя. В целом прогноз близок к несмещенному. Прогнозируемый объем продаж на следующий (14-ый) квартал составит 362,62 т.р.

4. Модель с мультипликативной компонентой

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

F = T * S * E,

T – трендовая составляющая,

S – сезонная составляющая,

E – случайная составляющая (ошибка прогноза)

Алгоритм построения модели с мультипликативной компонентой во многом схож с предыдущим. В процессе разработки мультипликативной модели также необходимо определить сезонную компоненту. Сезонная компонент будет определяться как отношение фактического объема продаж к центрированной скользящей средней.

4.1. Расчет значений сезонной компоненты

Рисунок 21 - Расчет сезонной компоненты

Далее необходимо рассчитать средние значения сезонной компоненты. Т.к. значения сезонной компоненты в мультипликативной модели – это доли, а число кварталов равно 4, то сумма сезонных компонент должна быть равна 4. Если это условие не выполняется, то необходимо выполнить корректировку. Например, сумма сезонных компонент = 4,014

Разница между фактическим значением и нормативным делится на 4 и прибавляется к каждой компоненте.

Рисунок 22 - Расчет скорректированных значений сезонных компонент

Результат представлен на рис.23.

Рисунок 23 - Результат расчетов

На этом расчет сезонных компонент закончен.

4.2. Десезонализация данных. Расчет тренда.

Рисунок 24 - Расчет десезонализированного объема продаж

Далее на основе данных десезонализированного объема продаж строятся трендовые модели различного вида (линейная, степенная, экспоненциальная, логарифмическая) и выбирается модель с наибольшим значением коэффициента детерминации. Эта модель и будет использоваться для расчета трендового значения (Т). В результате проведенных расчетов установлено, что наиболее точной является линейная трендовая модель (R2=0,959).

Рисунок 25 - Линейная трендовая модель

Прогнозные значения объема продаже (F) рассчитывается путем произведения соответствующего значения сезонной компоненты (S) и трендовых значений (T). Дальнейший расчет показателей, характеризующих точность прогноза, выполняются аналогично расчетам модели с аддитивной компонентой. Расчеты рекомендуется выполнять в форме таблицы (см.рис.26).

Рисунок 26 - Оценка точности прогноза

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

Контрольные вопросы

1. Что такое прогноз?

2. Для чего необходимы прогнозы? Поясните цель процесса прогнозирования в организации.

3. Можно ли считать термины «план» и «прогноз» синонимами?

4. Назовите основные виды прогнозов.

5. В чем заключается отличие качественных и количественных методов прогнозирования.

6. Укажите область применения метода скользящего среднего, его преимущества и недостатки.

7. Каким образом метод скользящего среднего может быть реализован в MS Excel?

8. Какие виды трендовых моделей могут быть построены в MS Excel?

Практическая работа №4

Тема: Моделирование системы массового обслуживания в AnyLogic

Цель: - получить практические навыки построения дискретно-событийных моделей систем в среде AnyLogic.

Вид работы: фронтальный

Время выполнения: 2 часа

Теоретические сведения

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

1. Запустите АnyLogic.

2. Для создания новой модели щелкните мышью по кнопке Создать модель. Появится диалоговое окно (см. рис.1), в котором вы должны будете дать имя файлу вашей модели и выбрать каталог, где он будет храниться. Щелкните по кнопке Далее.

Рисунок 1 – Создание новой модели

3. Выберите Начать создание модели «с нуля». Щелкните по кнопке Готово.

4. Откроется рабочее окно AnyLogic (см. рис. 2).

Рисунок 2 – Рабочее окно AnyLogic

В левой части рабочей области находится панель «Проект». Панель «Проект» обеспечивает навигацию по элементам модели, открытых в текущий момент времени. Поскольку модель организована иерархически, то она отображается в виде дерева: сама модель образует верхний уровень дерева; эксперименты, классы активных объектов и Java-классы образуют следующий уровень; элементы, входящие в состав активных объектов, вложены в соответствующую подветвь дерева класса активного объекта и т.д.

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

В центре рабочей области AnyLogic открывается графический редактор диаграммы класса активного объекта Main.

Чтобы добавить объект на блок-схему модели, щелкните по объекту в окне палитры Enterprise Library и перетащите его мышью на структурную диаграмму. При этом его свойства будут отображены на панели «Свойства». В этом окне вы можете изменять свойства элемента в соответствии с требованиями вашей модели. Позднее для изменения свойств элемента нужно будет сначала щелчком мыши выделить его на диаграмме или в дереве проекта.

Объекты должны взаимодействовать между собой, поэтому вы должны будете соединять их друг с другом. Можно соединять объекты с помощью мыши, перетаскиванием порта одного объекта на порт другого или с помощью специального средства «Соединитель». Чтобы соединить порты объектов, щелкните мышью по кнопке панели инструментов Соединитель, а затем щелкните мышью поочередно по обоим портам. Точку изгиба можно создать с помощью мыши.

Модель выполняется в соответствии с набором конфигурационных установок, называемым экспериментом. Вы можете создать несколько экспериментов и изменять рабочую конфигурацию модели, просто меняя текущий эксперимент модели. Один эксперимент, названный Simulation, создается автоматически. Выберите его щелчком мыши по элементу дерева и изучите настройки модели в окне Свойства (рис. 3). Окно Свойства имеет вкладки: основные, дополнительные, модельное время, презентация, окно, параметры, описание.

Рисунок 3 – Окно Свойства

На вкладке Основные можно выбрать класс, который будет запущен при запуске модели. По умолчанию в качестве корневого объекта выбран объект класса Main, автоматически создаваемого в каждой модели. Вы можете переименовывать классы модели. Для этого нужно выделить класс щелчком мыши по значку класса в дереве модели и затем изменить его имя в окне Свойства.

Дополнительные свойства эксперимента (вкладка Дополнительные) позволяют управлять выполнением модели. Можно задать действие перед и после запуска модели, а также задать численные методы для прогона и точность получаемых значений.

На вкладке Модельное время можно:

1) Задать единицу модельного времени.

2) Задать интервал времени моделирования.

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

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

При работе с моделью, не забывайте сохранять производимые Вами изменения с помощью кнопки панели инструментов Сохранить модель. По окончании работы с моделью используйте команды Файл | Сохранить все, затем Файл | Закрыть все.

Задания к практической работе

В ходе выполнения практической работы необходимо научиться создавать дискретно-событийные модели с помощью библиотеки Enterprise Library.

При выполнении практической работы студент сначала выполняет общее задание, а затем индивидуальное задание. Краткое описание некоторых элементов библиотеки Enterprise Library приводится в приложение 1.

Задание. Построим с помощью элементов библиотеки Enterprise Library модель простой системы массового обслуживания – модель банковского отделения.

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

1. Создайте новую модель. В свойствах эксперимента Simulation задайте выполнение модели в режиме реального времени с выполнением одной единицы модельного времени в одну секунду. В этой модели под единицей модельного времени мы будем понимать одну минуту работы банковского отделения.

2. Создайте блок-схему модели, которая пока будет состоять только из банкомата. Для этого перетащите в окно структуры элементы библиотеки Enterprise Library и соедините их так, как показано на рис. 4.

Объект source генерирует заявки (entities) определенного типа через заданный временной интервал. Заявки представляют собой объекты, которые производятся, обрабатываются, обслуживаются или еще каким-нибудь образом подвергаются воздействию моделируемого процесса: это могут быть клиенты в системе обслуживания, детали в модели производства, документы в модели документооборота и др. В нашем примере заявками будут посетители банка, а объект source будет моделировать их приход в банковское отделение.

Рисунок 4 - Блок-схема модели

Объект queue моделирует очередь клиентов, ожидающих обслуживания.

Объект delay моделирует задержку. В нашем примере он будет имитировать банкомат, тратящий определенное время на обслуживание клиента.

Объект sink обозначает конец блок-схемы.

3. Запустите модель.

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

Для запуска модели щелкните мышью по кнопке Запустить. Откроется окно с презентацией запущенного эксперимента. AnyLogic автоматически помещает на презентацию каждого простого эксперимента заголовок и кнопку, позволяющую запустить модель и перейти на презентацию (рис. 5), нарисованную вами для главного класса активного объекта этого эксперимента (Main). Щелкните по этой кнопке. AnyLogic переключится в режим работы модели. С помощью визуализированной блок-схемы проследите, сколько человек находится в очереди, сколько человек в данный момент обслуживается и т.д.

Рисунок 5 – Запуск презентации

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

Рисунок 6 - Окно инспекта

Встройте в файл отчета полученные характеристики процесса обслуживания. Сколько клиентов пришло в банк и сколько обслужилось на момент окончания прогона модели?

4. Задайте данные модели, изменяя свойства созданных объектов (рис. 7).

Откройте окно свойств объекта source, перейдите на вкладку Параметры. В свойстве interarrivalTime укажите, как часто в отделение приходят клиенты – exponential (0.67).

Рисунок 7 - Свойства созданных объектов

Интервал между приходом клиентов распределен экспоненциально со средним значением, равным 1.5 единицы модельного времени. Заметьте, что аргумент функции exponential () равен 0.67, потому что в качестве аргумента задается интенсивность прихода клиентов.

Функция exponential () является стандартной функцией генератора случайных чисел AnyLogic. AnyLogic предоставляет функции и других случайных распределений, таких как нормальное, равномерное, треугольное и т.д. За детальным описанием функций и их параметров обращайтесь к руководству пользователя или справочнику классов (см. методы класса Func). Для вызова руководства пользователя, справочника классов AnyLogic выберите соответствующие пункты меню Справка.

В свойстве capacity объекта queue (рис. 8) задайте максимальную длину очереди – 15.

Рисунок 8 - Свойства capacity объекта queue

В свойстве delayTime объекта delay (рис. 9) задайте время задержки (время обслуживания) – triangular (0.8, 1, 1.3).

Рисунок 9 - Свойства delayTime объекта delay

Обслуживание одного клиента занимает примерно 1 минуту. Здесь время обслуживания распределено по треугольному закону со средним значением, равным 1 минуте, минимальным – 0.8 и максимальным – 1.3 минуты.

5. Запустите модель и проанализируйте ее работу. Как изменились характеристики процесса обслуживания? Сравните результаты с предыдущим прогоном.

6. Включите сбор статистики для блоков queue и delay.

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

В системе собирается статистика по длине очереди для блока queue (length) и статистика по коэффициенту использования для блока delay (utilization). Чтобы включить сбор статистики для объекта, установите переключатель Включить сбор статистики на вкладке Основные свойств объекта.

Запустите модель и просмотрите в окне инспекта статистику для блоков queue и delay. Каковы средняя длина очереди посетителей к банкомату и загрузка банкомата?

7. Добавьте в модель банковских кассиров.

Можно моделировать число кассиров, как и банкомат, с помощью объектов d elay. Но удобнее моделировать число кассиров с помощью ресурсов (многоканальное устройство). Ресурс – это специальный объект Enterprise Library, который может потребоваться заявке для выполнения какой-то задачи. В нашем примере посетителям банковского отделения (заявкам) необходимо получить помощь у банковских служащих (ресурсов).

Добавьте на диаграмму следующие объекты:

1) s electOutput – является блоком принятия решения. В зависимости от заданного вами условия, заявка, поступившая в этот объект, будет поступать на один из двух выходов объекта. Оставьте все свойства объекта без изменений. Пусть выход true выбирается С заданной вероятностью, а Вероятность [0..1] равна 0.5. В этом случае к кассирам и банкомату будет приходить примерно равное количество клиентов;

2) service – блок захватывает для заявки заданное количество ресурсов, задерживает заявку, а затем освобождает захваченные ею ресурсы. В нашей модели этот объект будет моделировать обслуживание клиента кассиром (или каким-то другим служащим банковского отделения). Задайте следующие свойства объекта: укажите, что в очереди к кассирам может находиться до 20 человек (свойство queueCapacity); задайте время обслуживания (свойство delayTime). Будем полагать, что время обслуживания имеет треугольное распределение с минимальным средним значением 2.5, средним – 6 и максимальным – 11 минут;

3) R esource Pool – задает ресурсы определенного типа. Он должен быть подсоединен к объектам, моделирующим занятие и освобождение ресурсов (в нашем случае это объект Service). В нашем случае моделирует банковских кассиров. Перейдите в окно свойств объекта и задайте число кассиров (свойство capacity) – 4.

Соедините объекты соответствующим образом (рис. 10).

Рисунок 10 - Соединение объектов

8. Запустите модель. Сколько посетителей обслужилось у банковских работников и сколько у банкомата? Какова средняя длина очереди к банкомату? Оцените занятость кассиров и банкомата.

9. Создайте анимацию модели.

Сначала изобразим на анимации следующие элементы: банкомат (в виде кружка) и ведущую к нему очередь клиентов (в виде ломаной); клиентов анимируем человечками; две диаграммы для отображения статистики занятости банкомата и очереди к банкомату. Анимация модели рисуется в той же диаграмме (в графическом редакторе), в которой задается и диаграмма моделируемого процесса (см. рис. 11).

1) Перетащите элемент Овал из палитры Презентация на диаграмму класса активного объекта.

2) Перейдите на страницу Динамические панели свойств данной фигуры. В поле Цвет заливки введите следующую строку: delay.size () > 0? red: green. Здесь delay – это имя нашего объекта Delay. Функция size () возвращает число человек, обслуживаемых в данный момент времени. Во время моделирования будет меняться цвет фигуры. Если банкомат занят, то цвет кружка будет красным, в противном случае – зеленым.

3) На странице свойств объекта delay введите в поле Фигура анимации имя нашего овала: oval. Выберите из выпадающего списка Тип анимации – Одиночная.

4) Нарисуйте ломаную, которая будет обозначать на анимации очередь к банкомату (см. рис. 12). Чтобы нарисовать ломаную, сделайте двойной щелчок мышью по элементу Ломаная в палитре (при этом его значок должен поменяться на этот: ). Далее рисуйте ломаную точка за точкой, последовательно щелкая мышью в тех точках диаграммы, куда Вы хотите поместить вершины ломаной. Чтобы завершить рисование, добавьте последнюю точку ломаной двойным щелчком мыши. Очень важно, какую точку ломаной Вы создаете первой. Заявки будут располагаться вдоль нарисованной Вами ломаной в направлении от конечной к начальной. Поэтому рисуйте ломаную слева направо и поместите рядом с банкоматом конечную точку ломаной, которая будет соответствовать в этом случае началу очереди.

5) На странице свойств объекта queue введите polyline в поле Фигура анимации.

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

7) Перейдите в окно свойств объекта source. В поле Фигура анимации заявки введите имя нашей фигурки человека: person.

Рисунок 11 - Диаграмма моделируемого процесса

8) Перейдите в окно свойств эксперимента. На вкладке модельное время в выпадающем меню Остановить выберите – нет.

9) Запустите модель. Увеличьте скорость выполнения модели. Пронаблюдайте за анимацией Вашей модели.

10) Добавьте диаграмму для отображения средней занятости банкомата. Для этого перетащите элемент Столбиковая диаграмма из палитры Статистика на диаграмму класса и поместите ее справа от фигуры банкомата.

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

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

13) Перейдите на страницу Внешний вид панели свойств. Измените расположение легенды диаграммы (справа относительно диаграммы) с помощью кнопок Расположение. Измените размер диаграммы, как показано на рис. 11.

14) Аналогичным образом добавьте еще одну столбиковую диаграмму для отображения средней длины очереди. Измените ее размер, как показано на рис. 11. Перейдите на страницу Внешний вид панели свойств диаграммы и измените направление столбцов диаграммы так, чтобы столбцы столбиковой диаграммы росли влево.

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

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

 

Теперь добавим анимацию для банковских кассиров (см. рис. 12):

17) Нарисуйте ломаную, которая будет отображать очередь клиентов, ожидающих обслуживания кассирами. Рисуйте ее, как и раньше, слева направо.

18) Справа от этой ломаной нарисуйте еще одну, из четырех точек, чтобы указать на анимации места, в которых будут находиться банковские служащие.

19) Нарисуйте на презентации кассиров. Будем отображать их одной из двух картинок – одна будет показывать занятого кассира, а другая – свободного. Для этого перетащите элемент Изображение  из палитры Презентация в то место диаграммы, где у нас находится человечек. Перейдите в панель Свойства. Щелкните мышью по кнопке Добавить и выберите файл изображения, которое будет отображать данная фигура. Картинка busy.png (изображение занятого клерка) находится в каталоге <каталог AnyLogic>\resources\tutorials\Bank Office. Чтобы сохранить исходный размер изображения, установите флажок Исходный размер.

20) Аналогичным образом добавьте изображение занятого кассира (клерка).

Рис. 12.

21) Перейдите в окно свойств объекта service. Введите polyline 1 (имя ломаной, задающей форму очереди, ведущей к кассирам) в поле Фигура анимации (queue).

22) Перейдите в окно свойств объекта resourcePool. В поле Фигура анимации введите имя ломаной, задающей местоположение кассиров на презентации: polyline 2. Выберите Набор из выпадающего списка Тип анимации. В поле Фигура анимации свободного ресурса введите имя изображения свободного клерка: image 1. В поле Фигура анимации занятого ресурса введите image.

23) Откройте палитру Элементы управления и перетащите элемент Бегунок из палитры на нашу диаграмму. Поместите бегунок под объектом ResourcePool, чтобы было понятно, что с помощью этого бегунка будет меняться количество ресурсов, задаваемых именно этим объектом (см. рис. 12).

24) Перейдите в окно свойств данного элемента. Введите 4 в поле Максимальное значение (будем варьировать количество клерков от 0 до 4). Введите resourcePool.capacity в поле Связать с.

10. Запустите модель. Пронаблюдайте за созданной анимацией. Попробуйте изменить количество кассиров. Образуется ли очередь перед кассирами? Сделайте вывод о том, сколько служащих необходимо для нормальной работы банковского отделения при заданной интенсивности прихода клиентов. Как посмотреть статистику занятости каждого кассира?

11. Добавьте в модель сбор статистики о времени обслуживания клиента.

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

1) Создайте класс сообщения Customer (сообщения этого класса будут представлять клиентов банковского отделения). Для этого в панели Проект, щелкните правой кнопкой мыши по элементу модели и выберите Создать | Java класс из контекстного меню. В диалоговом окне Новый Java класс в поле Имя введите имя нового класса Customer (рис. 13); выберите из выпадающего списка Базовый класс полное имя данного класса: com.xj.anylogic.libraries.enterprise.Entity (этот класс будет наследоваться от базового класса заявки Entity). Щелкните по кнопке Далее.

Рисунок 13 - Ввод имя нового класса Customer

2) На второй странице мастера задайте параметры создаваемого Java-класса: enteredSystem тип double для сохранения момента времени, когда клиент пришел в банковское отделение; startWaiting тип double для сохранения момента времени, когда клиент встал в очередь к банкомату (рис. 14).

Рисунок 14 - параметры создаваемого Java-класса

3) Щелкните по кнопке Готово. Откроется редактор кода созданного класса (можно его закрыть).

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

4) Перетащите элемент Данные гистограммы с палитры Статистика на диаграмму класса Main. Задайте свойства элемента: Кол-во интервалов – 50; Нач. размер интервала – 0.01; измените Имя на waitTimeDistr.

5) Создайте еще один элемент сбора данных гистограммы (Ctrl + перетащите только что созданный объект данных гистограммы, чтобы создать его копию). Измените Имя этого элемента на timeInSystemDistr.



Поделиться:


Последнее изменение этой страницы: 2021-05-12; просмотров: 210; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.119.199 (0.147 с.)