ATM. Getstatsutilization(). Mean() 


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



ЗНАЕТЕ ЛИ ВЫ?

ATM. Getstatsutilization(). Mean()



ATM – это имя созданного объекта Delay. Функция getStatsUtilization() объекта Delay возвращает статистику занятости объекта, а функция mean() возвращает среднее из измеренных значений. Можно использовать и другие методы, например, min() и max(), для получения минимального и максимального измеренных значений соответственно.

1.8.  Добавляем текстовую метку.

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

Вводим текст, который будет отображен на анимации ATM utilization

1.9. Добавляем столбцовый индикатор текущей длины очереди

Назовем его ATM q ueue size.

Отображаемое значение q ueue.size()

 

Функция size() объекта Queue возвращает текущее количество людей в очереди.

Установим максимальное отображаемое значение равное 15.

1.10. Запускаем модель

Моделирование банковских кассиров

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

Изменяем блок-схему

2.1.1. Добавляем объект SelectOutput

Объект SelectOutput является блоком принятия решения. В зависимости от заданного условия, заявка, поступившая в объект, будет поступать на один из двух выходов объекта.

Оставим условие Select Condition: uniform()<0.5.

В этом случае к кассирам и банкомату будет приходить примерно равное количество клиентов.

2.1.2. Добавляем объект ProcessQ

Объект ProcessQ моделирует занятие заявкой ресурса на определенное время. С помощью этого объекта промоделируем обслуживание клиента кассиром.

Назовем объект tellerLines

Укажем, что в очереди к кассирам может находиться до 20 человек

queue Capacity: 20

Задаем время обслуживания delay Time: triangular(2.5, 6, 11)

Мы полагаем, что время обслуживания имеет треугольное распределение с минимальным значением равным 2.5, средним - 6, и максимальным - 11 минутам.

2.1.3. Добавляем объект Resource

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

Назовем объект tellers

Задаем число кассиров Capacity: 4

2.1.4. Запускаем модель и изучите ее поведение.

Отображение кассиров на анимации

Изменим анимацию модели

Нарисуем очередь клиентов пользуясь инструментом Ломаная, ожидающих обслуживания.

Назовем ее tellersQueue

Поставим видимость кривой false

Нарисуем комнату в которой располагаются стойки кассиров пользуясь инструментом Скругленный прямоугольник.

Установим цвет прямоугольника на ваше усмотрение.

Добавим на прямоугольник текстовую метку Teller lines.

2.2.2. Нарисуем Ломаную, чтобы указать на анимации места, в которых будут находиться банковские служащие.

Точки ломаной линии будут соответствовать местоположению служащих на анимации.

Назовем ломаную линию tellerLocations.

Поставим видимость кривой false

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

Щелкаем по кнопке Изображение и затем щелкаем по диаграмме.

Изображение должно содержать рисунки работающего и отдыхающего кассира. Убедимся, что изображение названо image.

Добавляем изображение отдыхающего кассира (файл Teller Idle.png) с помощью кнопки Добавить на закладке Свойств Изображение

Добавим изображение занятого кассира (файл Teller Buzy.png)

Убедимся, что установлен флажок Исходный размер

Убедимся, что индекс изображения не задан.

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

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

2.2.4. Создаем Группу фигур и добавим в нее созданное изображение.

Щелкнем мышью по кнопке Группа фигур, а потом по диаграмме.

Назовем группу фигур ShapeTeller

Сделаем ее динамической установив флажок на значении Шаблон

Динамические группы фигур создаются и добавляются на анимацию во время работы модели.

Чтобы добавить фигуру в группу фигур, щелкаем правой кнопкой мыши по значку группы фигур и выберем Добавить / удалить фигуры из контекстного меню.

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

Чтобы выйти из режима добавления/удаления, щелкаем мышью по анимационной диаграмме.

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

Задаем следующие свойства индикатора:

Измерим занятость кассиров в строке Отображает введите tellers.getStatsUtilization().mean()

Чтобы измерить занятость ресурса, воспользуемся функцией getStatsUtilization() объекта Resource. Затем мы получим среднее значение с помощью функции mean().

Задаем минимальные и максимальные отображаемые значения 0 и 1

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

Щелкаем мышью по кнопке Новый класс сообщения.

Назовем класс Teller.

Вводим имя базового класса для созданного сообщения Entity

2.2.7. Создаем динамическую анимацию группы фигур ShapeTeller.

Напишем следующий код в поле Дополнительный код класса:

Main._Group.ShapeTeller shape = ((Main)Engine.getRoot()).animation.new ShapeTeller();

Напишем следующий код в поле Код конструктора:

shape.setup();

setAnimation(shape);

Напишем следующую функцию в поле Дополнительный код класса:

void setBusy(boolean b) {

shape.image.setIndex(b? 1: 0);

}

2.2.8. Задаем анимационные свойства для объектов блок-схемы.

Задаем следующие свойства объекта Tellerlines:

Выбираем фигуру анимации



Поделиться:


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

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