Package com.bank.app
Class Simulation
java.lang.Object
com.bank.app.Simulation
Класс обработки модельных событий
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intСчетчик id клиента(package private) Configurationprivate doubleТекущее времяprivate PriorityQueue<Event> Список событийprivate LCGЛКМ принимающий в качестве seed значение из статического методо seed в Configurationprivate double[]Массив со значениями занятости каждого оператораprivate Operator[]Массив с 8-ю операторамиРазделенные очереди (Массив с обычными очередями.private intЕдиная очередь.Массив списков с временами ожидания в зависимости от типа операции -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate OperatorМетод для нахождения свободного оператора в списке операторовprivate intМетод для нахождения более короткой очереди в списке раздельных очередейdoubleМетод, возвращающий среднее время занятости операторов в моделиdoubleМетод, возвращающий среднее время общего нахождения клиента в моделиdoubleМетод, возвращающий среднее время ожидания в моделиdouble[]Метод, возвращающий среднее время (массив) ожидания относительно каждого типа операции в моделиprivate intМетод возвращающий индекс оператораdouble[]Метод, возвращающий средний процент (массив) занятости всех операторов в моделиprivate voidhandleArrival(Event event) Обработка события Arrival.private voidОбработка события Completing.voidМетод для вывода всех событий и некоторых статистик в консоль (Использовалось для проверки промежуточных изменений)voidrun()Запуск основной симуляции.private intМетод псевдослучайно определяющий тип операции в зависимости от вероятностей probabilities из класса Configurationprivate voidstartService(Client client, Operator op) Начало обработки заявки клиента.
-
Field Details
-
eventQueue
Список событий -
eventQueueForPrint
-
operators
Массив с 8-ю операторами -
separateQueues
Разделенные очереди (Массив с обычными очередями. Каждая очередь принимает объекты Client -
singleQueue
Единая очередь. Принимает объекты Client -
lcg
ЛКМ принимающий в качестве seed значение из статического методо seed в Configuration -
configuration
Configuration configuration -
currentTime
private double currentTimeТекущее время -
clientIdCounter
private int clientIdCounterСчетчик id клиента -
waitTimesByType
Массив списков с временами ожидания в зависимости от типа операции -
operatorBusyTime
private double[] operatorBusyTimeМассив со значениями занятости каждого оператора -
simulationTimeSeconds
private int simulationTimeSeconds
-
-
Constructor Details
-
Simulation
Конструктор
-
-
Method Details
-
selectOperationType
private int selectOperationType()Метод псевдослучайно определяющий тип операции в зависимости от вероятностей probabilities из класса Configuration -
run
public void run()Запуск основной симуляции. Пока список всех событий не пуст, происходит "отлов" и обработка каждого события -
handleArrival
Обработка события Arrival. -
handleCompleting
Обработка события Completing. -
findFreeOperator
Метод для нахождения свободного оператора в списке операторов -
startService
Начало обработки заявки клиента. Назначаем текущего оператора занятым, выставляем начало времени обработки. Высчитываем время ожидания, так же добавляем его в общий список времен ожидания по типам для будущего анализа статистики. Также мы дублируем основную очередь событий в обычный ArrayListinvalid input: '<'>(), для вывода при необходимости в консоль -
findShortestQueue
private int findShortestQueue()Метод для нахождения более короткой очереди в списке раздельных очередей -
getOperatorIndex
Метод возвращающий индекс оператора -
printEvents
public void printEvents()Метод для вывода всех событий и некоторых статистик в консоль (Использовалось для проверки промежуточных изменений) -
getAvgWaitTime
public double getAvgWaitTime()Метод, возвращающий среднее время ожидания в модели -
getAvgOperatorBusyTime
public double getAvgOperatorBusyTime()Метод, возвращающий среднее время занятости операторов в модели -
getAvgTimeSpent
public double getAvgTimeSpent()Метод, возвращающий среднее время общего нахождения клиента в модели -
getAvgWaitTimeByType
public double[] getAvgWaitTimeByType()Метод, возвращающий среднее время (массив) ожидания относительно каждого типа операции в модели -
getOperatorUtilization
public double[] getOperatorUtilization()Метод, возвращающий средний процент (массив) занятости всех операторов в модели
-