Рассмотрим имитационную модель СМО следующего вида:
СМО такого вида показана на рис. 3.29.
На рис. 3.29:
- источники потоков заявок на обслуживание;
- каналы обслуживания;
- число фаз;
- число каналов в каждой фазе;
- очереди заявок на входах соответствующих фаз.
Такой СМО может быть, например, сборочный цех радиоэлектронного предприятия. Из нескольких цехов ( ) поступают готовые блоки для сборки изделия. Сначала они поступают на диспетчерские посты, на которых происходит оформление соответствующей документации. После этого блоки направляются на сборочные участки.
Диспетчеризация - первая фаза обслуживания.
Сборка изделий - вторая фаза обслуживания.
Затем идет стендовый контроль и регулировка - это третья фаза обслуживания.
Четвертая фаза - приемка готового изделия (например, военная приемка)
Далее может быть упаковка изделия - пятая фаза.
Упакованные изделия поступают в транспортное подразделение для отправки - это шестая фаза.
На каждом из этих шести участков работают инженеры, техники, наладчики, контролеры, упаковщики. В силу различного рода случайностей на входе каждой фазы могут образовываться очереди комплектующих блоков, непроверенных изделий, готовых изделий. А также могут быть простои работников, что в терминах СМО трактуется как очереди свободных каналов.
Вернемся к общей постановке задачи.
Целью моделирования является определение показателей исхода операции массового обслуживания на временном интервале . Например, оценка относительной пропускной способности СМО, среднее количество заявок в очередях, коэффициент использования каналов в каждой фазе и др.
Проанализируем элементы СМО.
Поступление заявок на вход первой фазы - событие активное.
Следовательно, в модели должны быть предусмотрены модули реакции на это событие. Каждый поток обслуживает свой модуль реакции, значит, модулей реакции этого типа должно быть столько, сколько имеется потоков заявок, то есть . Моменты поступления заявок имитируются соответствующими генераторами (датчиками) случайных интервалов между заявками потоков .
Каждый канал имеет два состояния: свободен или занят. Переход в состояние "занят" - событие пассивное, так как определяется поступлением заявки. Переход в состояние "свободен" - событие активное, оно определяется внутренними свойствами канала, например, производительностью. Следовательно, в модели должны быть модули реакции на освобождение каналов. И этих модулей должно быть столько, сколько имеется в нашей СМО каналов:
Эти элементы СМО - пассивные, число состояний неограниченно.
Эти элементы СМО также пассивные, число состояний равно числу каналов в каждой фазе.
Характеризуется одним активным событием - завершение интервала исследования . Следовательно, для обработки этого события в модели предусматривается один специальный модуль реакции.
Изменения состояний считаем мгновенными. Общее число модулей реакции в рассматриваемой модели должно быть:
При большом числе входных потоков и каналов обслуживания количество модулей реакции будет значительным, и модель будет труднообозримой, громоздкой. Однако структуру модели можно существенно упростить, назначив однородным активным событиям по одному модулю реакции. Или: освобождение любого канала вызывает обращение к другому общему модулю реакции. Естественно, на входе таких универсальных модулей реакции должен присутствовать блок настройки на конкретное активное состояние объединенной группы.
Строить же общий модуль реакции на освобождение всех каналов СМО нецелесообразно, так как освобождение каналов последней фазы СМО требует действий, заметно отличающихся от тех, которые необходимо выполнить при освобождении каналов не последней фазы.
Таким образом, имитационная модель СМО будет иметь всего четыре модуля реакции:
Блок-схема имитационной модели СМО состоит из общей части и модулей реакции. Общая часть имеет стандартный вид и была рассмотрена ранее. Структура общей части определяется способом продвижения модельного времени по событиям. Она показана на рис. 3.30.
Блок 1 - установка начальных условий на весь процесс моделирования. Вводятся константы , , указываются число источников заявок, число каналов. Счетчик числа реализаций устанавливается в нуль (или в - в зависимости от того, как организован счет реализаций модели). Указываются данные планирования эксперимента с моделью и др.
Блок 2 - установка начальных условий на очередную реализацию модели. Текущее время, счетчики числа поступивших и обслуженных заявок устанавливаются в нуль. Каналы обслуживания и очереди к ним устанавливаются в исходные состояния (установки исходных состояний определяются требованиями к исследованию) и др.
Наборы исходных данных и определяются конкретным назначением моделируемой СМО и характером последующих экспериментов.
Блоки 3, 4 реализуют продвижение времени по событиям.
Блок 5 - выбор модуля реакции. В зависимости от индекса пространственно временной точки передает управление соответствующему модулю реакции - , , или
В рассматриваемой модели элементы СМО имеют только два состояния, одно из которых является начальным. Поэтому индекс не имеет смысла.
Рассмотрим состав и функционирование модулей реакции.
Допустим, что в рассматриваемый момент времени свершилось активное событие - поступление заявки от одного из источников. Блок 5 передает управление модулю реакции А.
Блок-схема алгоритма модуля реакции приведена рис. 3.31.
Блок А5 - блок настройки. Обеспечивает доступ к ДСЧ, ячейкам и т. д. модуля, предназначенным для обслуживания конкретного потока заявок, которому принадлежит поступившая заявка.
Блок А6 - проверка наличия свободных каналов первой фазы. Количество свободных каналов в очереди обозначено: .
Если все каналы заняты , управление передается блоку А7. Если свободные каналы есть , управление передается блоку А9.
Блок А7 - размещение поступившей заявки в соответствующей очереди первой фазы . Текущее содержимое этой очереди обозначено как .
Блок А8 - запоминание времени постановки заявки в очередь и передача управления блоку А13.
Правая ветвь алгоритма (см. рис. 3.30) выполняет действия, связанные с постановкой заявки на обслуживание.
Блок А9 - имитация загрузки одного из свободных каналов поступившей заявкой. Очередь свободных каналов уменьшается на ( ) . Выбранному каналу присваивается признак занятости - . У свободных каналов этот признак равен .
Блок А10 - определение и запоминание длительности простоя канала. Накопление времени простоя необходимо, например, для определения коэффициента занятости канала на интервале исследования.
Блок А11 - имитация времени обслуживания заявки.
Случайное время обслуживания формируется обращением к соответствующему датчику случайных чисел.
Блок А12 - прогноз времени окончания обслуживания и занесение новой пространственно-временной точки в список событий.
Блок А13 - прогноз момента времени поступления очередной заявки. Соответствующий датчик случайных чисел выдает длительность случайного временного интервала между заявками данного типа. Момент поступления очередной заявки вычисляется как . Полученная таким образом пространственно-временная точка заносится в список событий.
Управление передается в точку Е - блоку 3 для определения очередного ближайшего события.
Если очередным ближайшим событием окажется освобождение канала не последней фазы, то блок 5 передает управление модулю реакции В, имитирующему действия в СМО при свершении этого активного события.
Блок-схема алгоритма модуля реакции В представлена на рис. 3.32.
Модуль В имеет две функции. Во-первых, попытаться загрузить освободившийся канал заявкой из очереди на входе фазы, в которой находится освободившийся канал. Во-вторых, имитировать продвижение заявки, освободившей канал, в следующую фазу обслуживания.
Блок В5 - настройка модуля на освободившийся канал конкретной фазы.
Каждая фаза обслуживания имеет свою очередь заявок на входе, свою очередь свободных каналов и, возможно, свои датчики случайных чисел. Поэтому не будем вводить для них новые обозначения, оставим те, которые были использованы при описании модуля А.
Блок В6. Проверка: есть ли в очереди на входе фазы заявки, ожидающие обслуживания ( ) ? Если есть, то освободившийся
канал должен быть немедленно загружен (блоки 10: 13). Если нет, то канал должен быть переведен в режим ожидания (блоки В7:В9).
Блок В7. Очередь свободных каналов увеличивается на ( ) . Признак занятости канала устанавливается в нуль.
Блок В8. Запоминание момента освобождения канала.
Блок В9. Перевод освободившегося канала в пассивное состояние. Для этого пространственно-временной точке , относящейся к освободившемуся каналу, присвоить значение времени,
превышающего интервал исследования , то есть . Это значение заносится в список событий. Управление передается блоку В14.
Блоки В14:В20 моделируют размещение заявки, освободившей канал, в следующей фазе обслуживания. Функции и взаимные связи этих блоков аналогичны блокам А6 : А12, рассмотренным ранее:
Блок 20 передает управление блоку 3 для идентификации очередного активного события. Этим событием может быть поступление заявки от какого-либо источника на вход первой фазы или окончание обслуживания заявки каким-либо каналом. В этих случаях управление будет снова передано модулям реакции или .
Если же очередным активным событием окажется освобождение канала последней фазы, то управление передается модулю реакции С (рис. 3.33).
Блок С5 - настройка на соответствующий канал последней фазы. Аналогичен блоку В5.
Блоки С6:С13 - загрузка освободившегося канала ожидающей заявкой, если таковая есть на входе последней фазы. Функции и взаимосвязи блоков аналогичны блокам В6:В13. Блок С6 соответствует блоку В6, блок С7 - блоку В7 и т. д. по одинаковым номерам.
Блок С14 формирует числовые атрибуты заявок, покидающих СМО. Такими атрибутами могут быть: суммарное время обслуживания заявки на всех фазах, суммарное время ожидания в очередях, число обслуживаний без ожидания и др. Атрибуты запоминаются и управление передается блоку 2.
Если очередное значение , что означает окончание интервала исследования работы СМО, управление передается модулю реакции (рис. 3.34).
Построить имитационную модель с продвижением времени можно и по-другому. Однако рассмотренная структура модели обладает важными достоинствами:
Облегчены корректировка и развитие модели. Например, в рассмотренной модели СМО легко учесть выход из строя и восстановление каналов обслуживания. Для этого надо добавить два модуля реакции: один - на возникновение отказа, другой - на восстановление работоспособности. Оба эти события рассматриваются как активные, если неисправность возникает из-за внутренних дефектов оборудования, а восстановление является результатом усилий обслуживающего персонала, входящего в состав СМО.
Определить период повторения случайных чисел.
Боев В.Д., Сыпченко Р.П. Компьютерное моделирование