А27. Банковское подразделение

Программа имитационной модели банковского подразделения состоит из нескольких классов :

  • Main – основной класс, содержащий все объекты программы
  • Заявки – класс, по которому создаются экземпляры заявок(транзакты), перемещающиеся в логической цепи модели
  • Сотрудник – класс-родитель классов Сотрудник1, Сотрудник2
  • Сотрудник1, Сотрудник2 – классы ресурсов в модели, выполняющих роль сотрудников 1-го и 2-го отделов.

В проект также входят два эксперимента:

  • Simulation — обычный – для моделирования в реальном и виртуальном режимах
  • Optimization -оптимизационный — для проведения большого числа прогонов модели и нахождения оптимальных значений параметров

Рис.1 структура проекта модели

1.КЛАСС MAIN

В этом классе сосредоточены интерфейс программы и логика моделируемого процесса.

Рис.2 Логическая цепь БП(банковского подразделения)

Рис.3 Интерфейс-анимация в программе

  1. Логическая цепь БР

Для построения данной подсистемы в модели использовалась библиотека моделирования процессов в палитре инструментов Anylogic.

Рис.4 Библиотека моделирования процессов

Заявки создаются в элементе , затем они продвигаются к , для фиксации момента времени, когда заявка поступила в систему. Здесь проверяется истинность условия:

(getHourOfDay() >= 8)&&(getHourOfDay() <= 19)

Если время дня соответствует интервалу с 8:00 до 20:00, то заявка следует дальше , иначе удаляется из системы

В блоках moveTo12 и заявка задерживается до тех пор, пока не переместиться в анимации на вот это расстояние . Далее в блоке производится проверка истинности условия:

(getHourOfDay() >= 9)&&(getHourOfDay() <= 12) – время моделирования должно попадать в интервал с 9:00 до 13:00

В случае истинности условия заявки отправляются в первый отдел на

В ином случае задерживаются в очереди на обработку до следующего дня.

После обработки заявка поступает в блок , в котором производиться проверка истинности условия:

getHourOfDay() >= 9 && getHourOfDay() <= 17 – текущий момент окончания обработки должен попадать в интервал времени с 9:00 до 18:00

Если это так, то заявка успешно покидает отдел №1 и отправляется в отдел № 2


В противном случае заявка становится в очередь на обработку в следующий день:

От отдела 1 к отделу 2 заявки перемещаются в анимации проходя расстояние

Перед отделом 2 установлен блок ,в котором проверяется истинность условия:

(getHourOfDay() >= 9)&&(getHourOfDay() <= 14)

Если оно истинно, то заявка поступает в текущую очередь на обслуживание в отделе2, иначе остаётся до следующего дня здесь

Все обработанные в отделе 2 заявки обязательно проходят блок следом за ним проверяется условие истинности в блоке

Если заявка успела обработаться в текущий рабочий день, то она следует по ветке с блоками

иначе через блок оказывается в очереди ожидания обработки в следующий день

1.2 Диаграмма состояний

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

Рис.5 Диаграмма состояний

В первом состоянии «ХолдыЗакрыты» диаграмма находиться с 18:00 до 9:00, в состоянии «открытьХолды» заявки, находившиеся до этого в очереди, продвигаются на обработку в соответствующий отдел. В состоянии «state» диаграмма задерживается до окончания рабочего дня.

  1. Параметры и агенты

Рис.6 Параметры

Рис.7 Популяции агентов (сотрудников)

Таблица 1. Параметры и популяции агентов

Параметр/переменная Назначение Тип Начальное

значение

variable1=parametr1 Интенсивность заявок double 12.5
Variable2=parametr2 Время обработки заявок(без перв.документов) double 0.5
Variable3=parametr3 Время обработки заявок(с перв.документами ) double 1
Variable4=parametr4 Заявок с первичными документами double 33.33
Variable5=parametr5 Время верификации double 0.5
N1 Число сотрудников 1-го отдела int 25
N2 Число сотрудников 2-го отдела int 19
сотрудОтдел1 Популяция агентов сотрудников 1-го отдела(используется для подсчёта загрузки 1-го отдела) Сотрудник1 25 агентов
сотрудОтдел2 Популяция агентов сотрудников 2-го отдела (используется для подсчёта загрузки 1-го отдела) Сотрудник2 19 агентов
использованВремя Параметр агента типов Сотрудник1 и Сотрудник2, содержит время занятости любого сотрудника из популяций сотрудОтдел1 и сотрудОтдел2 double 0
средВремИсп Среднее арифметическое времён занятости (использованВремя)сотрудников 1-го отдела(берётся из параметра «использованВремя») double 0
       

2. Остальные классы в модели

2.1 КЛАСС «Заявки»

Рис.8

Содержит только картинку для отображения в анимации и два параметра:

  1. сотрудник – хранит ссылку на агент сотрудника, у которого обрабатывается заявка
  2. времяОбрОтдел1 – хранит время обработки заявки в первом отделе. Если заявка 1-го типа (логически содержит первичный документ), то время обработки будет равно 1 час, если второго типа (нет первичного докумета), то время обработки 30 минут.
    1. КЛАСС СОТРУДНИК

      Является классом-родителем двух классов СОТРУДНИК1 и СОТРУДНИК2. Содержит только два параметра

      Рис.9

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

      Классы «Сотрудник1» и «Сотрудник2» являются агентами двух популяций СотрудОтдел1 и СотрудОтдел2 соответственно.

  1. Эксперименты

3.1 Simulation

Запускает агент «Мain» в режиме реального или виртуального времени и содержит элементы управления для установки параметров модели

Рис.10 Интерфейс эксперимента «Simulation»

В свойствах эксперимента было задано время остановки моделирования через 168 часов

3.2 Optimization

Находит при каких параметрах N1 (число сотрудников отдела1)и N2 (число сотрудников отдела2) загрузка отделов будет максимальной и обработается весь поток входящих в систему заявок.

Рис.11 Интерфейс эксперимента

График показывает историю поиска наилучшего решения – значения целевой функции на всех прогонах.

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

Рис.12 Целевая функция поиска

Рис.13. Параметры поиска

После каждого этапа поиска найденное решение проверяется на соответствие заданным требованиям. В нашем случае отношение числа поступивших заявок к числу обработанных должно быть не менее 85 %

Рис.14 Показатель оценки найденного решения

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *