Package com.bank.app

Class Simulation

java.lang.Object
com.bank.app.Simulation

public class Simulation extends Object
Класс обработки модельных событий
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private int
    Счетчик id клиента
    (package private) Configuration
     
    private double
    Текущее время
    Список событий
    private ArrayList<Event>
     
    private LCG
    ЛКМ принимающий в качестве seed значение из статического методо seed в Configuration
    private double[]
    Массив со значениями занятости каждого оператора
    private Operator[]
    Массив с 8-ю операторами
    private Queue<Client>[]
    Разделенные очереди (Массив с обычными очередями.
    private int
     
    private Queue<Client>
    Единая очередь.
    private List<Double>[]
    Массив списков с временами ожидания в зависимости от типа операции
  • Constructor Summary

    Constructors
    Constructor
    Description
    Simulation(Configuration configuration)
    Конструктор
  • Method Summary

    Modifier and Type
    Method
    Description
    private Operator
    Метод для нахождения свободного оператора в списке операторов
    private int
    Метод для нахождения более короткой очереди в списке раздельных очередей
    double
    Метод, возвращающий среднее время занятости операторов в модели
    double
    Метод, возвращающий среднее время общего нахождения клиента в модели
    double
    Метод, возвращающий среднее время ожидания в модели
    double[]
    Метод, возвращающий среднее время (массив) ожидания относительно каждого типа операции в модели
    private int
    Метод возвращающий индекс оператора
    double[]
    Метод, возвращающий средний процент (массив) занятости всех операторов в модели
    private void
    Обработка события Arrival.
    private void
    Обработка события Completing.
    void
    Метод для вывода всех событий и некоторых статистик в консоль (Использовалось для проверки промежуточных изменений)
    void
    run()
    Запуск основной симуляции.
    private int
    Метод псевдослучайно определяющий тип операции в зависимости от вероятностей probabilities из класса Configuration
    private void
    Начало обработки заявки клиента.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • eventQueue

      private PriorityQueue<Event> eventQueue
      Список событий
    • eventQueueForPrint

      private ArrayList<Event> eventQueueForPrint
    • operators

      private Operator[] operators
      Массив с 8-ю операторами
    • separateQueues

      private Queue<Client>[] separateQueues
      Разделенные очереди (Массив с обычными очередями. Каждая очередь принимает объекты Client
    • singleQueue

      private Queue<Client> singleQueue
      Единая очередь. Принимает объекты Client
    • lcg

      private LCG lcg
      ЛКМ принимающий в качестве seed значение из статического методо seed в Configuration
    • configuration

      Configuration configuration
    • currentTime

      private double currentTime
      Текущее время
    • clientIdCounter

      private int clientIdCounter
      Счетчик id клиента
    • waitTimesByType

      private List<Double>[] waitTimesByType
      Массив списков с временами ожидания в зависимости от типа операции
    • operatorBusyTime

      private double[] operatorBusyTime
      Массив со значениями занятости каждого оператора
    • simulationTimeSeconds

      private int simulationTimeSeconds
  • Constructor Details

    • Simulation

      public Simulation(Configuration configuration)
      Конструктор
  • Method Details

    • selectOperationType

      private int selectOperationType()
      Метод псевдослучайно определяющий тип операции в зависимости от вероятностей probabilities из класса Configuration
    • run

      public void run()
      Запуск основной симуляции. Пока список всех событий не пуст, происходит "отлов" и обработка каждого события
    • handleArrival

      private void handleArrival(Event event)
      Обработка события Arrival.
    • handleCompleting

      private void handleCompleting(Operator op)
      Обработка события Completing.
    • findFreeOperator

      private Operator findFreeOperator()
      Метод для нахождения свободного оператора в списке операторов
    • startService

      private void startService(Client client, Operator op)
      Начало обработки заявки клиента. Назначаем текущего оператора занятым, выставляем начало времени обработки. Высчитываем время ожидания, так же добавляем его в общий список времен ожидания по типам для будущего анализа статистики. Также мы дублируем основную очередь событий в обычный ArrayListinvalid input: '<'>(), для вывода при необходимости в консоль
    • findShortestQueue

      private int findShortestQueue()
      Метод для нахождения более короткой очереди в списке раздельных очередей
    • getOperatorIndex

      private int getOperatorIndex(Operator op)
      Метод возвращающий индекс оператора
    • printEvents

      public void printEvents()
      Метод для вывода всех событий и некоторых статистик в консоль (Использовалось для проверки промежуточных изменений)
    • getAvgWaitTime

      public double getAvgWaitTime()
      Метод, возвращающий среднее время ожидания в модели
    • getAvgOperatorBusyTime

      public double getAvgOperatorBusyTime()
      Метод, возвращающий среднее время занятости операторов в модели
    • getAvgTimeSpent

      public double getAvgTimeSpent()
      Метод, возвращающий среднее время общего нахождения клиента в модели
    • getAvgWaitTimeByType

      public double[] getAvgWaitTimeByType()
      Метод, возвращающий среднее время (массив) ожидания относительно каждого типа операции в модели
    • getOperatorUtilization

      public double[] getOperatorUtilization()
      Метод, возвращающий средний процент (массив) занятости всех операторов в модели