logo
МатМод экология / Лабораторные работы

Сбор статистики о времени обслуживания клиента.

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

Создадим класс сообщения Customer. Сообщения этого класса будут представлять клиентов банковского отделения. Выберите базовый класс Entity (сообщения), добавьте параметры для хранения информации о проведенном времени:

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

Рис. 3.25 Добавление Java- класса.

  1. появится диалоговое окно Новый Java класс. В поле Имя введите имя нового класса Customer;

  2. сделайте так, чтобы этот класс наследовался от базового класса заявки Entity (рис. 3.26): выберите из выпадающего списка Базовый класс полное имя данного класса: com.xj.anylogic.libraries.enterprise.Entity;

Рис. 3.26 Задание свойств Java- класса.

  1. щелкните мышью по кнопке Далее. На второй странице Мастера вы можете задать параметры создаваемого Java-класса. Создайте параметры:

  • щелкните мышью по кнопке Готово. Вы увидите редактор кода созданного класса. Можете закрыть его, щелкнув мышью по крестику в закладке с его названием.

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

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

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

    2. задайте свойства элемента (рис. 3.27).

    • Измените Имя на waitTimeDistr.

    • Измените Заголовок на Waiting time distribution.

    • Сделайте Кол-во интервалов равным 50.

    • Задайте Начальный размер интервала: 0.01;

    Рис. 3.27 Задание свойств гистограммы.

    1. создайте еще один элемент сбора данных гистограммы (Ctrl + перетащите только что созданный объект данных гистограммы, чтобы создать его копию). Измените Имя этого элемента на timeInSystemDistr, а Заголовок на Time in system distribution.

    Измените свойства блоков вашей диаграммы процесса. Задайте следующие свойства объектов диаграммы:

    1. блок source, свойство Новая заявка – введите new Customer(). Введите Customer в поле Класс заявки. Это позволит напрямую обращаться к полям класса заявки Customer в коде динамических параметров этого объекта. Введите entity.enteredSystem = time(); в поле Действие при выходе. Этот код будет сохранять время создания заявки-клиента в переменной enteredSystem нашего класса заявки Customer. Функция time() возвращает текущее значение модельного времени;

    2. блок tellerLines (блок Service) – введите Customer в поле Класс заявки. Добавьте код в поля:

    Действие при входе: entity.startWaiting = time();

    Действие при выходе: waitTimeDistr.add(time() - entity.startWaiting);

    1. блок queue – введите Customer в поле Класс заявки. Добавьте код в поля: Действие при входе: entity.startWaiting = time();

    Действие при выходе: waitTimeDistr.add(time()-entity.startWaiting)

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

    1. блок ATM (блок delay) – введите Customer в поле Класс заявки;

    2. блок sink – введите Customer в поле Класс заявки. Напишите следующий код, чтобы сохранить в наборах данных данные о клиенте, покидающем банковское отделение (Действие при входе):

    timeInSystemDistr.add(time()-entity.enteredSystem);

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

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

    Чтобы добавить гистограмму на диаграмму класса активного объекта, перетащите элемент Гистограмма из палитры Статистика в то место, куда вы хотите ее поместить. Укажите, какой элемент сбора данных хранит данные, которые хотите отображать на гистограмме: щелкните мышью по кнопке Добавить данные и введите в поле Данные имя соответствующего элемента – waitTimeDistr.

    Аналогичным образом добавьте еще одну гистограмму и расположите ее под ранее добавленной. В поле Данные введите timeInSystemDistr. Измените заголовки отображаемых данных.

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