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

Литература / Практикум_по_ИМ_16-04-14

.pdf
Скачиваний:
399
Добавлен:
12.02.2018
Размер:
9.18 Mб
Скачать

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

Рис.7.48. Запуск модели

Щелкнули по этой кнопке. Тем самым запустили модель, и перешли к презентации корневого класса активного объекта запущенного эксперимента.

Рис.7.49. Полученная модель допечатных процессов

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

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

201

Рис.7.50. Вставка диаграммы Добавим диаграмму для отображения средней занятости отдела

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

2.Перетащим элемент Столбиковая диаграмма из палитры Статистика на диаграмму класса и изменим ее размер, как показано на рисунке ниже:

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

4.Измените Заголовок на Прием заявки.

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

Рис.7.51. Свойства объекта chart

202

6. На страницу Внешний вид панели Свойства выбрали первую опцию из набора кнопок Расположение, чтобы изменить расположение легенды относительно диаграммы (мы хотим, чтобы она отображалась снизу).

Рис.7.52. Свойства объекта chart

Рис.7.53. Диаграмма отображает среднюю занятость отдела

Сбор статистики по времени обслуживания Определим время прохождения рукописи по этапам допечатной подго-

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

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

Создание Java класса Customer

1. В панели Проекты щелкнули правой кнопкой мыши по элементу модели и выбрали Создать|Java класс из контекстного меню.

203

Рис.7.54. Создание Java класса

2.Появилось диалоговое окно Новый Java класс. В поле Имя ввели имя нового класса: Customer.

3.Сделали так, что этот класс будет наследоваться от базового класса заявки Entity. Для этого выбрали из выпадающего списка Базовый класс полное имя этого класса: com.xj.anylogic.libraries.enterprise.Entity.

Рис.7.55. Окно Мастера создания Java класса

3. Щелкнули мышью по кнопке Далее, чтобы перейти к следующей странице Мастера создания Java класса. На второй странице Мастера задали параметры создаваемого Java класса:

enteredSystem типа double для сохранения момента времени, когда автор пришел в отдел;

startWaiting типа double для сохранения момента времени, когда автор встал в очередь.

204

Рис.7.56. Окно Мастера создания Java класса

4. Щелкнули мышью по кнопке Готово. Появился редактор кода созданного класса. Закрыть его, щелкнув мышью по крестику в закладке с его названием.

Рис.7.57. Окно Java класса

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

Добавление элементов сбора данных

1.Чтобы добавить объект сбора данных гистограммы на диаграмму, перетащили элемент Данные гистограммы с палитры Статистика на диаграмму активного класса.

2.Задали свойства элемента:

205

изменили Имя на waitTimeDistr,

задали Кол-во интервалов равным 50, задали Начальный размер интервала: 0.01.

Рис.7.58. Свойства объекта data

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

4.Изменили Имя этого элемента на timeInSystemDistr.

Рис.7.59. Свойства объекта data

Теперь нам нужно изменить свойства блоков нашей диаграммы про-

цесса.

Изменение свойств блоков диаграммы процесса

1.Изменили свойства объекта source:

ввели new Customer() в поле Новая заявка. Теперь этот объект будет создавать заявки нашего типа Статистика.

206

ввели Customer в поле Класс заявки. Это позволит напрямую обращаться к полям класса заявки Customer в коде динамических параметров этого объекта.

ввели entity.enteredSystem = time(); в поле Действие при выходе.

Этот код будет сохранять время создания заявки-автора в переменной enteredSystem нашего класса заявки Customer.

Функция time() возвращает текущее значение модельного времени.

2.Изменили свойства объекта queue:

ввели Customer в поле Класс заявки;

ввели entity.startWaiting = time(); в поле Действие при входе. Этот код запоминает время начала ожидания клиентом его очереди на обслуживание в переменной startWaiting нашего класса заявки

Customer;

Рис.7.60. Изменение свойств объекта Source

ввели waitTimeDistr.add(time() - entity.startWaiting); в поле Дей-

ствие при выходе. Этот код добавляет время, в течение которого автор ожидал обслуживания, в объект сбора данных waitTimeDistr.

207

Рис.7.61. Изменение свойств объекта Queue

3.Изменили свойства объекта sink:

ввели Customer в поле Класс заявки;

ввели timeInSystemDistr.add(time()-entity.enteredSystem); в поле Действие при входе. Этот код добавляет полное время пребывания клиента в банковском отделении в объект сбора данных гистограммы timeInSystemDistr.

Рис.7.62. Изменение свойств объекта Sink

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

208

Рис.7.63. Окна инспекта с данными Теперь добавим на диаграмму нашего класса гистограммы, которые

будут отображать собранную нами временную статистику.

Добавление двух гистограмм для отображения распределений времени ожидания авторов и пребывания авторов в отделе.

1.Чтобы добавить гистограмму на диаграмму класса активного объекта, перетащили элемент Гистограмма из палитры Статистика на диаграмму активного класса.

2.Указали, какой элемент сбора данных хранит данные, которые необходимо отображать на гистограмме: щелкнули мышью по кнопке Добавить данные и ввели в поле Данные имя соответствующего элемента: waitTimeDistr. Изменили Заголовок отображаемых данных на Распределение времени ожидания.

Рис.7.64. Свойства объекта Гистограмма

209

3. Добавили еще одну гистограмму и расположили ее под ранее добавленной.

Рис.7.65. Добавленные гистограммы

4. В поле Данные ввели имя элемента, хранящего данные, которые будут отображаться на гистограмме: timeInSystemDistr. Изменили, Заголовок отображаемых данных на Распределение времени пребывания в системе.

Рис.7.66. Свойства объекта Гистограмма

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

210