Построение событийной части модели
О
бъекты
событийной части модели показаны на
рис. 2.
Рис. 2 Объекты событийной части модели.
Для построения использованы следующие двадцать объектов библиотеки EnterpriseLibrary (в скобках после имени каждого объекта указано их количество в событийной части модели):
source (один);
queue (восемь);
delay (восемь);
split (один);
match (один);
sink (один).
Был создан нестандартный класс заявки Carс полями:
Int id;
Double vxod;
Дополнительное поле id нестандартного класса заявки Car введено для проверки объектом match условия объединения двух заявок в одну.
Поле vxod предназначено для записи времени входа заявки в модель и вычисления времени обработки заявки.
Были заданы параметры для каждого объекта.
Свойства source
Таблица 2.
Имя |
Свойства |
Значения |
поток_ |
Отображать имя |
Установите флажок |
транс- |
Класс заявки |
Car |
порта |
Заявки прибывают |
|
|
Согласно |
Времени между прибытиями |
|
Время между |
|
|
Прибытиями |
exponential(1/timeA) |
|
Количество заявок, |
|
|
прибывающих за |
|
|
один раз |
1 |
|
Новая заявка |
new Car() |
|
Действие при |
entity.id= |
|
Выходе |
потоктранспорта.count(); entity.vxod = time(); |
Таблица 3.
Свойства |
Значение |
|
Имя |
очередь на D |
|
Отображать имя |
Установить флажок |
|
Класс заявки |
Car |
|
Максимальная вместимость |
Установить флажок |
|
Включить сбор статистики |
Установить флажок |
|
Имя |
парковка D |
|
Отображать имя |
Установить флажок |
|
Класс заявки |
Car |
|
Задержка задается |
Явно |
|
Время задержки |
exponential(1/timeD) |
|
Вместимость |
D |
|
Включить сбор статистики |
Установить флажок |
|
Имя |
очередь в офис E |
|
Отображать имя |
Установить флажок |
|
Класс заявки |
Car |
|
Вместимость |
10 |
|
Действие при подходе |
if (очередь E < |
|
к выходу |
очередь в офис E .size()) |
|
|
очередь E = |
|
|
очередь в офис E .size(); |
|
Включить сбор статистики |
Установить флажок |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Имя Отображать имя Класс заявки Задержка задается Время задержки Вместимость Включить сбор статистики |
оформлдокум в офисе Е Установить флажок Car Явно exponential(1/timeE) E Установитьфлажок |
Имя Отображать имя Класс заявки Количество копий Новая заявка (копия) Действие при выходе копии |
отправка заявки в ZУстановить флажок Car 1 new Car entity.id = original.id; entity.vxod = original.vxod; |
Имя Отображать имя Класс заявки Вместимость Действие при подходе к выходу
Включить сбор статистики |
очередь в зону ZУстановить флажок Car 100 if(очередь Z< очередь в зону Z .size()) очередь Z = очередь в зону Z .size(); Установить флажок |
Имя Отображать имя Класс заявки Задержка задается Время задержки Вместимость Включить сбор статистики |
выполн заявки в зоне ZУстановить флажок Car Явно exponential(1/timeZ) ZP
Установитьфлажок |
Имя Отображать имя Класс заявки Условие соответствия Вместимость 1 Вместимость 2 Действие при выходе 1 Действие при выходе 2 |
фиксация выполн заявки в ZУстановить флажок Car entity1.id == entity2.id 100 100 entity.id = 0; if(очередь I< фиксация выполн заявки в Z .size2()) очередь I = фиксация выполн заявки в Z .size2(); |
Имя Отображать имя
|
очередь к воротам FУстановить флажок |
Класс заявки Максимальная вместимость Включить сбор статистики |
Car Установить флажок Установить флажок |
|
||
Имя Отображать имя Класс заявки Вместимость Действие при подходе к выходу Включить сбор статистики |
полосы у ворот FУстановить флажок CarF_ if(очередь F< полосы у ворот F .size()) очередь F = полосы у ворот F .size(); Установить флажок |
|
||
Имя Отображать имя Класс заявки Задержка задается Время задержки Вместимость |
досмотр у ворот FУстановить флажок Car Явно exponential(1/timeF) F |
|
||
Имя Отображать имя Класс заявки Вместимость Включить сбор статистики |
queue1 Сбросить флажок Car 100 Установить флажок |
|
||
Имя Отображать имя Класс заявки Задержка задается Время задержки Вместимость Включить сбор статистики |
движение отFкНУстановить флажок Car Явно exponential(1/timeFH) 10 Установить флажок |
|
||
Имя Отображать имя Класс заявки Задержка задается Время задержки Вместимость Включить сбор статистики |
обслуж в зоне I Установить флажок Car Явно exponential(1/timeI) I_ Установить флажок |
|
||
Имя Отображать имя Класс заявки Вместимость Включить сбор статистики |
queue Сбросить флажок Car 100 Установить флажок |
|
||
Имя |
Движение_от_I к J |
|
||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
Отображать имя |
Установить флажок |
Класс заявки |
Car |
Задержка задается |
Явно |
Время задержки |
exponential(1/timeIJ) |
Вместимость |
10 |
Включить сбор статистики |
Установить флажок |
Имя |
очередь на ворот J |
Отображать имя |
Установить флажок |
Класс заявки |
Car |
Вместимость |
10 |
Действие при подходе |
if (очередь J <оче- |
к выходу |
редь на ворот J .size()) |
|
очередь J = оче- |
|
редь на ворот J .size(); |
Включить сбор статистики |
Установить флажок |
Имя |
осмотр на ворот J |
Отображать имя |
Установить флажок |
Класс заявки |
Car |
Задержка задается |
Явно |
Время задержки |
exponential(1/timeJ) |
Вместимость
|
J |
Поясню необходимость и целесообразность применения некоторых объектов. В модели заявка имитирует транспорт. Объект split предназначен для расщепления одной заявки в данной модели на две заявки. Одна поступает, как документ, в зону Z, а вторая, как транспорт, продолжает движение. Когда в зоне Z необходимые для обработки транспорта действия выполнены (подготовлены документы), объект match фиксирует этот момент, то есть синхронизирует дальнейшее движение транспорта. Вторая заявка направляется в объект sink и уничтожается. Как известно, объединить две заявки в одну (а значит не использовать объект sink) можно с помощью объекта combine. Однако в данном случае combine использовать нельзя, так как он не проверяет выполнение у заявок условий, необходимых для их уничтожения. Поэтому могут быть объединены различные заявки. Объект match проверяет условия объединения, установленные в данном случае в дополнительном поле id нестандартного класса заявки Car(entity1. id == entity2. id),именно двух заявок в одну. То есть синхронизации движения заявки как документа и заявки как автомобиля при применении объекта combine не обеспечивается.
В табл. 4. указаны свойства объекта sink.
Свойства |
Значение |
Имя Отображать имя Класс заявки Действие при входе |
выход J Установить флажок Car if(entity.id != 0){ kolJ ++ ; KolObrCar = kolJ/10000; KoefIsp = kolJ/поток транспорта.count(); TimeSum += (time() - entity.vxod); TimeObr = TimeSum / kolJ; KoefIspE = оформлдокумвофисе E .statsUtilization. mean(); KoefIsp_F = досмотруворот F .statsUtilization.mean(); KoefIsp_Z = выполнзаявкивзоне Z .statsUtilization. mean(); KoefIsp_I = обслужвзоне I .statsUtilization.mean(); KoefIsp_J = осмотрнаворот J .statsUtilization.mean();} |
