Базовые модули системы Arena 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Базовые модули системы Arena



 

Модуль Create (генератор транзактов) – вводит транзакты в модель. Например, покупатели приходят в магазин, суда прибывают в порт, в службу поддержки поступают звонки и т.д.

Обозначение:

Модель может включать несколько модулей Create.

На рисунке показано окно параметров для модуля Create, где можно задать, например, как часто должны поступать транзакты.

 

 

Рисунок говорит о следующем: клиенты парикмахерской заходят примерно раз в 15 минут, закон распределения интервала между клиентами – экспоненциальный.

Для модуля задаются такие параметры:

- название модуля (Name [7]);

- тип поступающего транзакта (Entity type);

- интервал между прибытиями транзакта (Time Interval);

- число транзактов при каждом поступлении (Entities per arrival);

- максимальное число поступлений (Max Arrivals).

Интервал может быть задан как:

- «константа» (Constant). Транзакты поступают в модель строго через равные промежутки времени. Например, деталь поступает на участок обработки строго один раз в минуту

- «по расписанию» (Schedule). В этом случае следует выбрать расписание. Например, в течение дня у магазина наблюдается разная интенсивность поступления клиентов – в «часы пик» она значительно увеличивается.

- «выражение» (Expression) Указывается функция распределения и ее параметры. Так, на рисунке показано, что интервал поступления транзактов подчиняется равномерному закону распределения и может составлять от 10 до 20 минут unif(10,20).

 

 

- «случайный» (Random(Expo)). В системах массового обслуживания очень часто встречается пуассоновский поток заявок. При таком потоке интервал времени между появлениями заявок подчиняется экспоненциальному закону распределения. Для отражения этого частого случая и предусмотрена опция «Random (expo)». Можно выбрать ее и задать математическое ожидания интервала. Эта опция введена для удобства. С тем же результатом можно использовать выражение expo(15).

Задавая интервал необходимо выбрать единицу измерения времени [8].

Для модуля Create задается число транзактов при каждом поступлении (Entities per arrival). Чаще всего поступает один транзакт, но модуль Create может вводить транзакты партиями. Например, согласно технологическому процессу, в цех поступают одновременно 5 деталей (рабочий раз в 7-10 минут привозит тележку, с пятью деталями). Мы можем считать детали транзактами и указать, что они всегда поступают по 5.

Можно смоделировать и ситуацию, когда люди заходят в магазин группами 1-4 человека. В поле «Entities per arrival» указываем выражение unif(1,4), значит при каждом поступлении прибывает от одного до четырех транзактов.

В поле «максимальное число поступлений» (Max Arrivals) обычно стоит значение по умолчанию «Infinite», бесконечность. Поле позволяет ограничить число транзактов в модели. Например, грузовики прибывают в гараж, где их проверяют, обслуживают и ставят на ночь. Но у фирмы ограниченное число грузовиков и, значит, в какой-то момент поступит последний.

Как правило, эту возможность используют для так называемых, «замкнутых схем». «Открытая схема» – транзакты приходят в модель (генерируются, создаются), затем после необходимого обслуживания, уничтожаются, выводятся из модели. При «закрытой схеме» все выглядит иначе – в модель вводится определенное число транзактов, которые затем циркулируют внутри модели. Например, у фирмы 10 автобусов. Они проходят обслуживание и уходят на маршрут, затем возвращаются и вновь уходят и т.д.

Модуль Dispose (терминатор транзактов) – выводит транзакты из модели (уничтожает транзакты). Например, покупатели после покупки товара, покидают магазин.

Обозначение:

 

Модуль Process (обработка, действие) моделируетобработку транзактов: обслуживание покупателей продавцом, разгрузку судна, ремонт телевизора и т.д. Обратим внимание, что с точки зрения имитационной модели «обработка» означает задержку транзакта на определенное время, содержательный смысл этой задержки определяется исследователем.

Обозначение:

Обработка транзактов может потребовать использования ресурсов. Так, для сверления детали нужен соответствующий станок, для обслуживания покупателя – продавец и т.п.

Арена обеспечивает достаточную гибкость работы с ресурсами. Обработка может потребовать нескольких единиц ресурсов, либо может потребовать несколько разных ресурсов. Например, для профилактического осмотра автомобиля нужны два рабочих автосервиса и смотровая яма. Транзакт может «захватить» ресурс и перемещать его за собой по модели, с тем, чтобы потом «отпустить». Автомобиль «захватывает» яму, затем его осматривает одна бригада рабочих, затем другая бригада выполняет кузовные работы, затем автомобиль «отпустит» яму.

Существует четыре типа модуля Process:

- Delay, задержать. Не требуется никаких ресурсов. Пример: покрашенный стол выставляется на улицу, где он должен просохнуть. Столы не конкурируют ни за какой ресурс – одновременно на солнце может сушиться неограниченное число столов.

- Seize-Delay-Release, захватить-задержать-отпустить. Пример: деталь поступила на станок, была просверлена и освободила станок. Это наиболее распространенный вариант модуля.

- Seize-Delay, захватить – задержать.

- Delay-Release, задержать-отпустить.

Два последних варианта используются для построения сложных мноногофазных процессов, предполагающих несколько стадий обработки. Захватив ресурс, транзакт может удерживать его несколько операций.

В случае, если модуль Process предполагает захват какого-то ресурса (то есть типы Seize-Delay-Release или Seize-Delay), к модулю автоматически добавляется очередь. Если нужного ресурса нет в наличии (сломан, неактивен согласно расписанию или занят другими транзактами) транзакт будет ожидать его освобождения в очереди:

 

 

Пример модуля Process приведен на рисунке. Как видим, здесь используется тип Seize-Delay-Release. Процесс носит имя «стрижка». Для процесса необходим один парикмахер. Время стрижки распределено по треугольному закону распределения, причем на стрижку может уйти от 15 минут (минимальное значение) до 30 минут (максимальное) при том, что 20 минут – это наиболее вероятное значение.

 

 

Рассмотрим более подробно параметры модуля. Окно распадается на три зоны. В первой зоне заполняем имя операции - Name (так же как для любого другого модуля Арены).

Вторая зона отвечает за тип процесса и за используемые ресурсы.

 

 

В списке Action нужно выбрать необходимый тип модуля.

Если выбран тип Delay, то больше ничего указывать не нужно, никакие ресурсы для операции не требуются.

Если же выбран другой тип, то нужно явно указать, какие именно ресурсы и в каких количествах нужны для выполнения операции:

 

На рисунке выше показано, что для выполнения операции нужны три штуки первого инструмента и одна штука второго инструмента.

Операция может потребовать нескольких единиц ресурсов, например, для разгрузки большого судна нужно два портовых крана.

С помощью кнопок Add (добавить), Edit (редактировать), Delete (удалить) можно управлять списком необходимых ресурсов.

Окно редактирования ресурса:

 

 

В окне следует выбрать из списка имя ресурса (предполагается, что ресурсы мы создали заранее. Можно, однако, ввести имя несуществующего пока ресурса, в этом случае ресурс будет создан автоматически). В поле Quantity (количество) вводим число единиц ресурса, необходимых для выполнения операции над одним транзактом [9].

В окне редактирования ресурсов имеется еще одно поле – Type. Здесь можно выбрать один из двух вариантов: Resource (конкретный ресурс) или Set (множество, пул ресурсов). Работа с пулами ресурсов будет рассмотрена в главе 6.

В поле Priority нужно указать приоритет операции. Дело в том, что один и тот же ресурс может использоваться в нескольких модулях Process. С помощью поля приоритета можно указывать, какая из операций, требующая этого ресурса начнется первой [10]. Например, сотрудник паспортного стола выполняет две операции – «прием заявления» и «выдача паспорта». Приоритет второй операции выше – это значит, что при наличии людей, ожидающих обоих операций сотрудник в первую очередь станет обслуживать тех, кто пришел получить готовый паспорт.

Вне зависимости от выбранного типа модуля Process необходимо задать время исполнения операции (зона 3):

 

 

В целом, работа ведется аналогично модулю Create. Нужно указать способ определения времени, единицу измерения времени. Разработчики системы по умолчанию предлагают треугольный закон распределения с тремя параметрами – минимальным, наиболее вероятным и максимальным временем исполнения операции.

 

 

Другие варианты:

- фиксированное время (Constant), операция всегда занимает четко заданное время.

- нормальное распределение времени обслуживания (Normal). В этом варианте следует задать два параметра – математическое ожидание и среднеквадратическое отклонение (как показано на рисунке).

 

 

- равномерное распределение времени обслуживания (Uniform). Задается минимальное и максимальное время.

- выражение (Expression). Можно ввести выражение, показывающее необходимое время обслуживания. Например, если время обслуживание подчиняется экспоненциальному закону, то можно указать expo(15).

Выражения позволяют более гибко управлять временем обработки транзактов. Например, транзакт-вагон может иметь атрибут mass, показывающий вес груза. А время разгрузки может зависеть от веса: 10*mass. Чтобы включить элемент случайности expo (10*mass).

Последнее поле Allocation позволяет отнести время, проведения операции к одной из категорий, для последующего анализа. Например, в данном случае указано, что операция относится к «создающим стоимость» (Value Added). В дальнейшем по результатам моделирования мы сможем определить какой процент времени тратится на создание стоимости, какой – на вспомогательные операции, какой – на ожидание. Так можно судить об эффективности моделируемых процессов.

После того, как мы изучили три первых модуля [11], можем приступить к созданию первой простейшей модели.

Пример 1. Клиенты заходят в парикмахерскую раз в 15 минут (закон распределения интервала времени прихода клиентов экспоненциальный). В парикмахерской работают два парикмахера, которые тратят на стрижку клиента от 20 до 40 минут, закон распределения – равномерный.

 

Прежде всего, необходимо определиться с важнейшими понятиями:

- клиент – это транзакт.

- парикмахер – это ресурс.

Создадим с помощью невизуального модуля Entity (шаблон Basic Process) транзакты-клиенты. Дадим транзакту имя и выберем подходящую картинку:

 

 

 

Теперь с помощью невизуального модуля Resource создадим парикмахера. Здесь мы задали имя ресурса – Barber:

 

 

В поле Type укажем, что используется фиксированная мощность ресурса (fixed capacity). Далее в поле capacity (мощность) задаем число единиц ресурсов, имеющихся в наличии – 2 парикмахера.

Остальные параметры мы не используем в модели, эти параметры отвечают за стоимость ресурсов: Busy/Hour (стоимость часа ресурса если он занят), Idle / Hour (стоимость часа ресурса, если он простаивает), Per Use (стоимость единичного обращения к ресурсу).

Теперь можно создавать граф модели:

 

 

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

 

 

Рассмотрим параметры отдельных модулей. На рисунке показано окно параметров модуля Create:

 

 

На следующем рисунке приведено окно параметров модуля Process. У модуля Process имеется очередь. Обратим внимание, что это единая очередь для всех мастеров, как только освобождается один из мастеров, первый клиент в очереди садится в его кресло.

 

 

Теперь необходимо определить параметры модели в целом. Для этого обращаемся к пункту главного меню Run-Setup. Здесь нас интересует вкладка Replication Parameters.

 

 

Здесь можно задать число повторений прогона модели «Number of Replication».

Далее определяем длину интервала моделирования «Replication Length», в примере мы уставили 8 часов. Если оставить значение по умолчанию – работа будет продолжать бесконечно до того, как пользователь остановит моделирование или пока наступит условие окончания.

В окне можно указать так называемый Warm-up период, результаты которого учитываться не будут [12].

Наконец, очень важно выбрать в Base Time Units единицу времени, наиболее подходящую для конкретной модели. Именно в таких единицах будут выводиться отчеты о моделировании, а также именно она будет использоваться в специальных функциях, которые обращаются к времени.

Поле Terminating Condition позволяет указать условие завершения моделирования. Например, мы могли бы задать здесь выражение, которое завершит моделирование при успешном обслуживании 100 клиентов.

Посмотрим на приведенный ниже листинг, он получен с помощью пункта меню Run – SIMAN - VIEW:

 

; Model statements for module: BasicProcess.Create 1 (ClientCome)

;

2$ CREATE, 1,HoursToBaseTime(0.0),Client:HoursToBaseTime(EXPO(15)):NEXT(3$);

3$ ASSIGN: ClientCome.NumberOut=ClientCome.NumberOut + 1:NEXT(1$);

;

; Model statements for module: BasicProcess.Process 1 (HairCut)

;

1$ ASSIGN: HairCut.NumberIn=HairCut.NumberIn + 1:

HairCut.WIP=HairCut.WIP+1;

9$ QUEUE, HairCut.Queue;

8$ SEIZE, 2,VA:

Barber,1:NEXT(7$);

7$ DELAY: Uniform(20,40),,VA;

6$ RELEASE: Barber,1;

54$ ASSIGN: HairCut.NumberOut=HairCut.NumberOut + 1:

HairCut.WIP=HairCut.WIP-1:NEXT(0$);

; Model statements for module: BasicProcess.Dispose 1 (ExitModel)

0$ ASSIGN: ExitModel.NumberOut=ExitModel.NumberOut + 1;

57$ DISPOSE: Yes;

 

Этот программный код был автоматически сформирован системой Arena на основе созданного нами графа и его параметров. В тексте программы легко угадываются работа отдельных модулей. Мы видим, что для каждого из модулей потребовалось несколько строк программного кода.

Теперь запустим модель с помощью специальной панели инструментов:

 

 

Эта панель позволяет запускать приостанавливать модель, прокручивать ее без анимации, регулировать скорость моделирования, выполнять моделирование по шагам.

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

На рисунке можно увидеть следующее: поступили 17 клиентов; два клиента находятся в очереди на стрижку; один парикмахер занят; только что освободился второй парикмахер – его клиент покидает модель.

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

Рассмотрим теперь модель с несколькими процессами.

 

Пример 2. Имеется некоторый технологический процесс. Поступающие детали (интервал поступления 10 минут, закон распределения экспоненциальный) помещаются на специальную тележку (имеется 3 таких тележки) и подвергаются грунтовке (операция выполняется 8±2 минут рабочим №1), затем окраске (6±2 минуты, рабочим №2), затем проходят просушку в течение 20 минут, затем снимаются с тележки и освобождают цех.

 

Очевидно, что для данного примера:

- транзакт – деталь;

- ресурсы: тележка, рабочий №1, рабочий №2.

Окно создания ресурсов:

 

На следующем рисунке показан граф модели. Обратим внимание на одну особенность - ресурс «тележка» захватывается транзактом в модуле Take Cart и удерживается в течение нескольких операций.

Рассмотрим модель и ее составляющие более подробно. Транзакты-детали поступают в модель с помощью модуля DetailCome типа Create. Далее происходит захват тележки (cart) в модуле TakeCart.

 

 

Как видим из следующего рисунка, выбран тип модуля Seize-Delay. После прохождения модуля деталь будет удерживать за собой ресурс-тележку. Время задержки в модуле нулевое.

 

Далее осуществляется грунтовка и окраска. Это модули типа Seize-Delay-Release, ресурсом выступают рабочие (worker1 для грунтовки, worker 2 для окраски). Время выполнения операции подчинено равномерному закону. Так для грунтовки выставлено минимальное время 6, максимальное 10 минут, в соответствии с условиями задачи:

 

Модуль Process, соответствующий операции сушки детали имеет тип Delay, это значит, что никаких дополнительных ресурсов (кроме тележки, которую по-прежнему удерживается деталью) для операции не нужно. Время отводимое на сушку – строго 20 минут, задано с помощью константы.

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

Граф модели в процессе прогона:

 

Фрагмент отчета по результатам моделирования:

 

 

По результатам моделирования видно, что «узким местом» является модуль Process «TakeCart», то есть детали ожидают тележки. Это видно из рисунка, а также из фрагментов отчета: разница времени нахождения в очередях и разница в загрузке ресурсов.

Для повышения эффективности системы добавим еще одну тележку (изменим мощность, capacity ресурса «тележка» в невизуальном модуле Resources).

Отчет после прогона измененной модели:

Время ожидание в очереди значительно сократилось, загрузка ресурсов выровнялась, производительность системы возросла.

Контрольные вопросы

1) Какой модуль отвечает за обслуживание транзакта?

2) В каких случаяx модуль Process будет иметь очередь?

3) Какой типа модуля Process следует выбрать для операции, соответствующей переходу транзакта-работника к месту выполнения работы?

4) Может ли транзакт в модуле Process использовать сразу несколько единиц ресурса?

5) Может ли транзакт в модуле Process использовать сразу несколько различных ресурсов?

6) Каким образом нужно настроить модуль Create чтобы организовать «замкнутую схему», при которой ограниченное число транзактов будет циркулировать внутри модели не покидая ее?

7) Может ли интервал времени между приходом транзактов быть случайной величиной?

8) Какова важнейшая характеристика ресурса, которую можно получить в результате моделирования?

9) Что делает модуль Dispose?

10) Как сделать, чтобы в отчетах по результатам моделирования время выводилось в минутах?

11) Если транзакт «захватил» ресурс и удерживает его, перемещаясь по модели, как он сможет «отпустить» ресурс?

12) Как задать графическое изображение транзакта?



Поделиться:


Последнее изменение этой страницы: 2016-06-29; просмотров: 2565; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.111.183 (0.11 с.)