Построение имитационной модели
После запуска программы Extend (значок
программы
) автоматически открывается окно новой
модели Рис. 1.). В меню Run (Выполнить)
необходимо выбрать команду Simulation Setup
(Установки моделирования), открывающую
одноименное диалоговое окно. Это окно
позволяет определить, каким образом и
как долго будет осуществляться имитация
модели. Обычно единственными параметрами,
которые устанавливаются в этом окне,
являются единицы измерения времени и
время окончания имитации модели. Для
большинства моделей имитация начинается
с заданного по умолчанию нулевого
момента времени. Опцию Number of runs (Количество
испытаний) можно ставить равной 1, если
нет необходимости отслеживать вариации
результатов во время многократных
испытаний модели.

Рис.1 Окно программы Extend с окном новой модели Model_1.max.
Предположим, что мы будем моделировать процесс поминутно, поэтому необходимо открыть список Global time units (Глобальные единицы времени) и выбрать опцию Minutes (Минуты). Время моделирования по условию в течение часа, что составляет 60 мин. Для задания этого параметра необходимо ввести число 60 в поле End simulation at time (Время окончания имитации) и как показано на рисунке 2, и щелкнуть на кнопке Ok.

Рис 2. Окно Simulation Setup (Установки моделирования).
Для того, чтобы использовать необходимые блоки для построения модели необходимо открыть нужные библиотеки, содержащие предопределенные блоки.
Основные библиотеки, которые понадобятся для разработки модели:
Generic (Общая);
Discrete Event (Дискретные события);
Plotter (Графопостроитель);
Stats (Статистика).
Чтобы открыть библиотеку Discrete Event следует выполнить команду LibraryOpen Library (Библиотека Открыть библиотеку), найти папку Libs (Рис.3), выбрать библиотеку Discrete Event (файл DE.lix) и щелкнуть на кнопке Открыть.
Для открытия библиотек Generic(файлGENERIC.lix),Plotter( файлPLOTTER.lix) иStats(файлSTATS.lrx) выполняется такая же последовательность действий.

Рис 3. Окно папки Libs.
После того как вы откроете нужные библиотеки, в меню Library появится список этих библиотек:

А когда вы установите курсор на имени библиотеки – откроется список типов объектов, содержащихся в данной библиотеке:

Рис 4.Система окон меню, открывающая доступ к объектам библиотеки DE.lix.
Типы объектов в свою очередь, открывают список названий блоков этого типа. Теперь, чтобы добавить блок к модели, нужно в меню Library выбрать имя библиотеки, тип блока и его название, после чего копия блока помещается в окно модели Extend.
При моделировании дискретных событий всегда необходим блок Executive(Диспетчер) (Рис. 5.) из библиотекиDiscreteEvent(файлDE.lix), который помещается слева у самого края окна модели (Рис. 6.). Этот блок (с пиктограммой часов) определяет продолжительность имитации, условия остановки и оперирует деталями планирования событий.

Рис. 5. Блок Executive.
Обычно соединение с блоком Executiveотсутствует.

Рис 6. Окно новой модели с размещенным в нем блоком Executive.
Модель будем строить из блоков, отражающих те операции, которые происходят в офисе, включая их в модель последовательно в соответствии с реальным функционированием моделируемой системы.
То есть функционирование офиса начинается с прибытия клиентов. Представим прибытие клиентов в офис блоком Generator(Генератор) (Рис. 7.) и добавим его в модель из подменю GeneratorsбиблиотекиDiscriteEvent(Рис. 6.).

Рис 7. Блок Generator (Генератор).
Двойной щелчок на блоке вызывает его диалоговое окно. Поскольку клиенты прибывают через временные интервалы, величина, которых случайна, то в спискеDistribution(Распределение) выбирается опцияExponential(Экспоненциальный закон распределения) и в полеMean(Среднее) вводим 2 (Рис. 9.).
В окно модели можно добавить прямоугольник с текстом «Прибытие клиентов» для документирования этого раздела модели (Рис. 8.). Прямоугольник с текстом создается просто двойным щелчком мыши в свободной области модели и последующим вводом текста. Параметры текста можно изменить с помощью меню Text (Текст).

Рис 8. Блок Generator (Генератор) вставлен в окно модели.

Рис 9.Диалоговое окно блока Generator (Вкладка Item).
Поскольку Extend позволяет реализовать простейшую анимацию модели, на вкладке Animate диалогового окна можно выбрать вид выходящего элемента из объекта. Выбираем Person, что соответствует прибытию клиентов (Рис. 10.).

Рис 10. Диалоговое окно блока Generator (Вкладка Animate) для выбора вида элементов, выходящих из объекта при реализации анимации.
Далее клиента необходимо поставить в очередь перед пунктом по оформлению проката, которую он проходит в порядке поступления (такая дисциплина очереди называется FIFI, от First In, FirstOut, т. е. первый пришел – первым вышел). Для этого добавим блокQueues(Очереди) библиотеки De.lix (Рис. 11.).

Рис 11. Блок Queues (Очереди).
Затем входной коннектор этого блока соединяется мышью с выходным коннектором блока Generator, помещая клиентов в очередь:

В диалоговом окне блока Queues, FIFO(Рис. 12.) задан параметрMaximumqueuelength(Максимальна длина очереди) со значением 1000, что фактически создает неограниченную очередь.
Коннекторы для выхода значений L и W этого блока во время имитации дают информацию о количестве элементов в очереди и о времени ожидания клиентов.

Рис 12. Диалоговое окно блока Queue.
Соединительные линии, по которым элементы (клиенты) перемещаются между блоками, двойные (как бы полые), а линии для передачи информации (значений), что будет рассмотрено далее, обозначаются тонкими сплошными линиями.
Важно отметить, что элементы (в данном случае клиенты), создаваемые блоком Generator, сразу из него выходят, поэтому в модели должно быть какое-нибудь место, куда они могут войти. Это обычно требует прямого присоединения блока Generator к одному из блоков Queue. В противном случае можно потерять элементы, генерируемые блоком Generator.
Переходим к моделированию следующей операции, происходящей в офисе. Заполнение контракта на прокат автомобиля требует времени. Служащий задерживает клиента в среднем на 5 мин. Чтобы ввести эту задержку, можно использовать блок Activity, Delay (Активность, Задержка). Однако этот блок вмещает только один элемент, а хотелось бы изучить ситуацию в будущем, при которой оформление документов на прокат выполняют несколько служащих. В таком случае следует использовать блок Activity, Multiple(Активность, Множественная) (Рис. 13.), который можно найти в подменю Activities (Активности) библиотеки DE.lix. Этот блок позволяет задерживать несколько элементов, т. е. предоставлять одновременное обслуживание нескольким клиентам.

Рис 13. Блок Activity, Multiple (Активность, Множественная) .
На рисунке 13 показан блок Activity, Delay (Активность, задержка), используемый обычно для задержки элементов в течение некоторого времени, после чего элемент переходит к следующему блоку. Коннектор D применяется для входа значения, которое отменяет время задержки, установленное в диалоговом окне блока. Этот коннектор можно использовать для задания произвольного времени задержки во время испытания модели вместо фиксированной задержки. Коннекторы T и U предназначены для выхода значений и могут использоваться для предоставления информации о занятости и проценте использования этого блока, передаваемой другим блокам во время испытания модели.
Соединяем этот блок с блоком очереди и подписываем текстом: Оформление проката (Рис. 17.). В диалоговом окне блока задаем максимальное количество обслуживаемых (1) в поле Maximum number in activity. В поле Delay зададим первоначально время обслуживания: 1 мин. Поскольку по условию время обслуживания величина случайная, мы его изменим (см. ниже), подключив к этому блоку еще один блок.

Рис 14. Диалоговое окно блока Activity, Multiple.
Для анимационной имитации изменим вид выходящих элементов из блока, выбрав вид Car (Автомобиль) и переключатель Changeallpicturesto(Изменить картинки), что будет соответствовать выезду клиентов после оформления на автомобилях (Рис. 15.).

Рис 15. Диалоговое окно блока Activity, Multiple (Вкладка Animate).
Переходим к моделированию следующей операции.
Заключив договор на прокат, клиент выходит из офиса для получения автомобиля. Элементы (клиенты) покидают имитационную модель через блок Exit (Выход) (Рис. 16.), который находится в подменю Routing (Маршрутизация) библиотеки DE.lix.

Рис 16. Блок Exit (Выход) .
Подсоединяем этот блок к модели (Рис. 17.).

Рис 17. Блоки, имитирующие функционирование офиса по прокату автомобилей.
Поскольку время обслуживания по условию величина случайная и имеет нормальный закон распределения, необходимо использовать еще один дополнительный блок, который будет создавать случайные значения времени обслуживания. Добавим блок InputRandom Number(Ввод случайного числа) (Рис. 18.), который находится в библиотеке GENERIC.lixInputs/Outputs(Ввод/Вывод).

Рис 18. Блок Input Random Number.
Добавим блок, зададим его параметры. После двойного щелчка по блоку, откроется его диалоговое окно (Рис. 19.), в котором зададим в поле Distribution(Распределение) -Normal(Нормальное), в поле Mean (Среднее значение) – 5 (в среднем 5 минут обслуживания) иStdDev(Среднеквадратическое отклонение) – 0.01.

Рис 19. Диалоговое окно блока Input Random Number.
Соединим блок Input Random Number с коннектором D блока Activity, Multiple.

Рис 20. Блоки модели работы офиса по прокату автомобилей.
Добавим к модели еще один дополнительный блок для сбора данных в процессе имитации и для ее графического отображения. Наиболее полезным из них является блок Plotter, Discrete Event(Плоттер, Дискретное событие) (Рис. 21), находящийся в библиотеке PLOTTER.lix.
![]()
Рис. 21. Plotter, Discrete Event
Этот блок фиксирует данные и во время имитации модели вычерчивает диаграммы для нескольких (до четырех) переменных. Переменные, которые должны быть собраны и представлены в виде диаграмм, определяются коннекторами блоков, подключенными к блоку Plotter, Discrete Event. Как показано на рис. 22. блок Plotter, Discrete Event будет фиксировать степень занятости служащих, оформляющих прокат (данные получаемые от блока Activity, Maltiple), и получаемые от блока Queue, FIFO данные о времени, в течение которого клиент ожидает обслуживания.

Рис. 22. Имитационная модельработы офиса по прокату автомобилей.
