Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИМЭП_отчет_Хахалева 391гр..doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
323.58 Кб
Скачать

Построение событийной части модели

О бъекты событийной части модели показаны на рис. 2.

Рис. 2 Объекты событийной части модели.

Для построения использованы следующие двадцать объектов библиотеки EnterpriseLibrary (в скобках после имени каждого объекта указано их количество в событийной части модели):

source (один);

queue (восемь);

delay (восемь);

split (один);

match (один);

sink (один).

  1. Был создан нестандартный класс заявки Carс полями:

Int id;

Double vxod;

Дополнительное поле id нестандартного класса заявки Car введено для проверки объектом match условия объединения двух заявок в одну.

Поле vxod предназначено для записи времени входа заявки в модель и вычисления времени обработки заявки.

  1. Были заданы параметры для каждого объекта.

Свойства 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();}