русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Операторы модификации атрибутов и параметров заявок


Дата добавления: 2015-06-12; просмотров: 656; Нарушение авторских прав


ADOPT – определение или смена семейства активной заявки. При создании заявки оператором GENERATE параметру семейства присваивается исходное значение, равное порядковому номеру заявки. Если создаются копии заявки (оператор SPLIT), то все они принадлежат к семейству порождающей заявки.

При входе заявки в оператор ADOPT происходит присоединение заявки к семейству, номер или имя которого определено операндом А:

ADOPT А

Операнд А быть име­нем, положительным целым числом, выражением в скобках, СЧА, СЧА*параметр. Например, ADOPT 2000– все активные заявки, прошедшие оператор, становятся членами семейства с номером 2000 (значение присваивается параметру Assembly Setvalue заявки).

SPLIT – создание копий заявок. Оператор GENERATE является основным средством создания заявок и ввода их в модель. Вход заявок в оператор GENERATE не допускается. Кроме оператора GEN­ERATE для создания заявок используется оператор SPLIT (расщепить). Но, в от­личие от GENERATE, оператор SPLIT не создает самостоятельных заявок, а лишь генерирует заданное число копий входящего в него заявки – порождающей. Оператор SPLIT имеет следующий формат:

SPLIT А,[В],[С]

Операнд А – число создаваемых копий одного семейства. Он может быть име­нем, положительным целым числом, выражением в скобках, СЧА, СЧА*параметр. Все копии формируются в момент входа порождающей заявки в оператор SPLIT. Операнд В – номер оператора, к которому переходят копии порождающей заявки. Значение операнда В вычисляется для каждой копии отдельно.

После прохождения оператора SPLIT порождающая заявка направляется в сле­дующий оператор, а все копии направляются по адресу, указанному операндом В (или к следующему оператору, если операнд В не указан – по умолча­нию). Таким образом, если операнд А равен k, то из оператора выйдут k+1 заявка. Далее порождающая заявка и копии являются равноправными и при необходимости мо­гут проходить снова через любое число операторов SPLIT.



Операндом С может быть задан номер параметра, используемого для присво­ения копиям последовательных номеров (нумерации). Если операнд С не ис­пользуется, по умолчанию номеров выходящих из оператора SPLIT заявок в их параметрах нет.

Операнды В и С могут быть такими же, как и операнд А. Например:

- SPLIT 6 – из оператора SPLIT выйдет 1+6=7 заявок, шесть копий вслед за порождающий заявкой будут направлены к следующему оператору, так как операнд В не используется. Записи номеров в параметр порождаю­щей и копий заявок также не будет – операнд С опущен. Копии имеют тот же приоритет, значения параметров и время входа в модель, что и порож­дающая заявка.

- SPLIT 9,Met11 – оператор SPLIT сгенерирует 1+9=10 заявок. Порождаю­щая заявка перейдет к следующему оператору, а девять копий – к оператору с мет­кой Met11. Записи номеров в параметры заявок также нет.

- SPLIT 4,Met1,5 – оператор SPLIT при входе порождающей заявки генерирует четыре копии, которые направляются к оператору с меткой Metl. Каж­дая копия имеет тот же приоритет, время входа в модель и значения пара­метров, что и порождающая заявка, за исключением параметра номер 5. В параметр номер 5 каждой копии будет записан порядковый номер. Если параметр номер 5 порождающей заявки не определен зара­нее, он будет создан, и ему будет присвоено значение 0. Если параметр номер 5 порождающей заявки определен заранее и его значение равно n, то в параметре номер 5 порождающей заявки и копий после выхода из блoкa SPLIT будут записаны n+1, n+2, n+3, n+4 и n+5 соответственно.

- SPLIT 3,P$Adr,Adr– оператор, к которому должны направляться копии заявок, указывается опе­рандом В, значение которого, т. е. номер оператора, вычисляется для каждой вновь создаваемой копии. Если параметр с именем Adr содержит номер оператора, например n, то первая копия будет направлена к оператору n+2, вторая – к n+3, третья – к n+4. Эти же номера будут записаны в параметр с именем Adr копий порождающей заявки. Сама же порождающая заявка со значением n+1 параметра с именем Adr перейдет к следующему оператору.

Каждая новая копия, создаваемая оператором SPLIT, становится членом семейства заявок, порожденных исходной заявкой оператора GENERATE. Заявки, принадлежащие к одному семейству, объединяются планировщиком в список. Если оператором SPLIT не производит нумерацию порождаю­щей заявки и ее копий, то внутри семейства нельзя установить, какая из заявок является порождающей. Число заявок в семействе произ­вольно. Каждая заявка, созданная оператором GENERATE, является отдельным семейством (номер заявки равен номеру семейства, т. е. сколько сгенери­ровано оператором GENERATE в модели заявок, столько и семейств). Таким об­разом, число семейств (ансамблей) в системе произвольно и семейство су­ществует до тех пор, пока в нем находится хотя бы одна заявка. К семейству заявок можно применять операторы MATCH, ASSEMBLE, GATHER.

ASSEMBLE – объединение заявок. Оператор ASSEMBLE (объединить) используется для объединения заданного числа заявок, принадлежащих одному семейству, в одну заявку. Из оператора ASSEM­BLE выходит только одна заявка, который переходит в следующий оператор. Оператор ASSEMBLE имеет следующий формат:

ASSEMBLE A

Операнд А это число заявок одного семейства, участвующих в сборке (на­чальное число счетчика сборки). Может быть именем, положительным целым числом, выражением в скобках, СЧА, СЧА*параметр. В одном и том же операторе ASSEMBLE возможна одновременная сборка заявок нескольких семейств. Так как сборка длится в течение какого-то промежутка модельного времени, оператор ASSEMBLE имеет список синхронизации. В список синхронизации помещаются первые вошедшие в оператор ASSЕМВLE заявки каж­дого собираемого семейства. Они ожидают прихода заявок своих семейств.

При входе заявки в оператор ASSEMBLE проверяется: есть ли в списке синхро­низации заявка такого же семейства. Если заявки такого же семейства в списке синхронизации нет, т. е. во­шедшая заявка первая из собираемого семейства, то вычисляется опе­ранд А, округляется до целого числа и уменьшается на 1. В зависимости от полученного результата S, сохраняемого в ячейке (счетчике сборки) первой заявки собираемого семейства, выполняются следующие действия:

- если S<0, то происходит останов по ошибке «Счетчик сборки не положителен»;

- если S=0, то заявка сразу пытается войти в следующий оператор;

- если S>1 то заявка исключается из списка текущих событий и помещается в список синхронизации оператора ASSEMBLE.

Если в списке синхронизации уже есть заявка того же семейства, что и вошедшая в оператор ASSEMBLE, то вошедшая заявка уничто­жается, а счетчик сборки, сохраненный в ячейке находящейся в списке син­хронизации заявки, уменьшается на 1. Когда этот счетчик сборки стано­вится равным нулю, т. е. в оператор ASSEMBLE вошло заданное число заявок, ожидающая заявка выводится из списка синхронизации. Если обслуживание этой заявки не было прервано ни одним из устройств, она пытается пе­рейти к следующему оператору и в случае успеха возвращается в список текущих событий. Например:

- ASSEMBLE 7 – собирает 7 заявок одного семейства, 6 уничтожаются, одна переходит в следующий оператор.

- ASSEMBLE *1 – собирает число заявок, равное значению параметра 1 первого пришед­шего в оператор ASSEMBLE заявки семейства. Этим способом задания счетчика сборки удобно пользоваться, когда неизвестно заранее количество собирае­мых заявок, и оно определяется в ходе моделирования. В этом случае нужно в параметр номер один всех собираемых заявок записать значение счетчика сборки, так как неизвестно, какая заявка придет первой и уста­новит счетчик сборки.

Прерванной заявке запрещается покидать оператор ASSEMBLE до тех пор, пока все его прерванные обслуживания не будут закончены. Поэтому рекомендуется стро­ить модель так, чтобы заявки, обслуживание которых было прервано без удале­ния (без освобождения устройства), не входили в оператор ASSEMBLE.

Пример совместного использования операторов SPLIT и ASSEMBLE. На пункт управления, состоящий из 4-х автоматизированных рабочих мест (АРМ), поступают груп­пы сообщений. Интервалы времени поступления групп сообщений подчинены экспоненци­альному закону со средним значением 5 часов. Количество сообщений в группе распределено по нормальному закону с математическим ожиданием 20 со­общений и стандартным отклонением 3 сообщения. Время обработки одного сообщения на одном АРМ распределяется по экспоненциальному закону со средним значением 25 мин. После обработки сообщения вновь собираются и хранятся вместе. Ограничений на количество обрабатываемых сообщений нет.

Для имитации группы сообщений и одного сообщения следует использовать заявки. АРМ в модели будет представлять многоканальное устройство (МКУ), заданное накопителем (см. ЛР№4).

Общая идея построения модели заключается в следующем. Оператор GENERATE имитирует поступление заявок. Одна заявка – одна группа сообщений. Затем случай­ным образом определяется количество сообщений в группе. Далее поступив­шая группа сообщений – исходная заявка входного потока копируется оператором SPLIT и результат копирования – число заявок по числу сообще­ний в группе, поступают на АРМ – МКУ и обрабатываются. После обработки сообщения, входящие в группу, собираются оператором ASSEMBLE. Когда все заявки-сообщения будут обработаны и поступят в оператор ASSEMBLE, из него вый­дет одна заявка, имитирующая снова собранную группу сообщений. Реализация в GPSS имеет вид, приведенный в примере 1.

 

Пример 1

; Задание исходных данных

Tpt EQU 300 ; Средний интервал поступления групп сообщений

Moka EQU 30 ; Матожидание числа сообщений в группе

Soka EQU 5 ; Стандартное отклонение числа сообщений в группе

Троа EQU 25 ; Среднее время обработки одного сообщения

VrMod EQU 4320 ; Время моделирования

P0br STORAGE 4 ; Число каналов МКУ

; Сегмент имитации поступления и обработки сообщений

GENERATE (Exponential(13,0,Tpt)) ; Источник групп сообщений

ASSIGN 1,(Normal(451,Moka,Soka)) ; Определение числа сообщений в

; группе

SPLIT *1 ; Деление группы на сообщения

QUEUE Rr1 ; Занять очередь

ENTER PObr ; Занять канал МКУ

DEPART Rr1 ; Покинуть очередь

ADVANCE (Exponential(13,0,Tpoa)) ; Обработка сообщения

LEAVE PObr ; Освободить один канал МКУ

ASSEMBLE *1 ; Собрать сообщения в группу

TERMINATE ; Выход обработанных групп

; сообщений

; Сегмент задания времени моделирования

GENERATE VrMod

TERMINATE 1

 

В операторе ASSIGN случайным образом определяется количество сообщений в пос­тупившей группе и запоминается в первом параметре заявки. Сделано это потому, что в операторе ASSEMBLE использована запись ASSEMBLE *1, значит, он со­бирает число заявок, равное значению параметра 1 первой пришедшего в оператор ASSEMBLE заявки семейства, а какая именно заявка придет первым после обработки на МКУ РР1 – исходная или копия – неизвестно.

GATHER – пакетирование заявок. Оператор GATHER (собирать) предназначен для сбора заданного количества заявок одного семейства, движущихся по одному и тому же пути. Отличие оператора GATHER от оператора ASSEMBLE состоит в том, что в нем заявки не уничтожаются (не «сливаются» в одну), а после сбора все направляются к следующему оператору. Формат оператора:

GATHER A

Операнд А задает число заявок, принадлежащих одному семейству, ко­торое нужно собрать при их движении по одному пути (начальное число счет­чика сбора). Может быть именем, положительным целым числом, выражением в скобках, СЧА, СЧА*параметр.

Оператор GATHER также может одновременно производить сбор заявок не­скольких семейств и также имеет список синхронизации.

Пусть при входе заявки в оператор GATHER в результате проверки оказалось, что в его списке синхронизации нет заявок этого же семейства, т. е. вошед­шая заявка из данного семейства является первой. Тогда вычисляется опе­ранд А, округляется до целого числа, уменьшается на 1 и запоминается по­лученный результат S в ячейке заявки – счетчике сбора. В зависимости от результата S возможны следующие действия:

- если S<0, то происходит останов программы по ошибке «счетчик сбора не положителен»;

- если S=0, то заявка сразу пытается войти в следующий оператор;

- если S>1, то заявка помещается в список синхронизации оператора для ожидания прибытия других заявок своего семейства.

Если проверкой в списке синхронизации обнаружены заявки семейства, к которому принадлежит только что вошедшая в оператор GATHER заявка, то она помещается в список синхронизации, а счетчик сбо­ра уменьшается на 1. Если его значение становится равным нулю, т. е. в оператор GATHER вошло заданное число заявок данного семейства, все собранные заявки исключаются из списка синхронизации и помещаются в список те­кущих событий.

Если среди собранных заявок одного семейства обнаруживаются прерванные заявки, то после окончания сбора они не переводятся в СТС. Прерванные заявки будут находиться в операторе GATHER, но не в списке синхронизации, до тех пор, пока все прерванные обслуживания не будут закончены. Поэтому в модели нужно предусмотреть, чтобы прерванные без удаления, т. е. без освобождения устройс­тва, заявки, если в этом нет необходимости, не входили в оператор GATHER.

Дополнительный пример, демонстрирующий различие в использовании операторов GATHER и ASSEMBLE в режиме пошагового прогона, приведен в Приложении 4.

MATCH – синхронизация движения заявок. Оператор MATCH (синхронизировать) предназначен для синхронизации движения заявок одного семейства, продвигающихся по разным путям. Для синх­ронизации необходимы два оператора MATCH, находящихся в соответствующих местах модели и называемых сопряженными. Формат записи:

Name MATCH A

Операндом А каждого оператора MATCH указывается метка или номер сопряжен­ного ему оператора. Операнд может быть именем, положительным целым числом, выражением в скобках, СЧА или СЧА*параметр. Например:

Kont1 MATCH Kont2

Kont2 MATCH Kont1

В модели эти операторы будут помещены раздельно в параллельных путях про­движения заявок. При входе заявки в оператор MATCH операнд А вычисляется и округляется до це­лого числа. По полученному значению определяется сопряженный оператор MATCH. При его отсутствии происходит останов по ошибке.

Если сопряженный оператор есть, проверяется наличие в нем заявки из того же семейства. Если в операторе нет ни одной заявки данного семейства, пос­тупившая заявка помещается в список синхронизации и будет ожидать в нем входа заявки своего семейства в сопряженный оператор MATCH. При поступлении такой заявки в сопряженный оператор MATCH обе заявки одного семейства будут исключены из списка синхронизации и одновремен­но будут пропущены в следующие за оператором MATCH операторы. Одна и та же пара операторов MATCH может одновременно синхронизировать лю­бое число пар заявок из разных семейств. Заявки одного семейства также можно синхронизировать в любом числе пар операторов MATCH. Если одна из синхронизируемых заявок будучи прерванной вошла в оператор MATCH, ей не разрешается выйти из него до тех пор, пока все его прерванные об­служивания не будут закончены. Поэтому строить модель нужно так, чтобы заявки, обслуживание которых прервано без удаления (без освобождения уст­ройств), не входили в операторы MATCH.

Оператор MATCH может быть сопряжен сам себе (в этом случае его действие будет аналогично действию оператора GATHER с операндом А, равным 2) например:

Six MATCH Six

Пример применения оператора MATCH. Техническое обслуживание (ТО) средств связи (СС) проводят в два этапа две группы специалистов. Первый этап выполняется специалистами пер­вой и второй групп параллельно со средним временем соответственно 80 и 70 минут. После первого этапа производится уточнение мероприятий ТО, вре­мя выполнения которого принимается равным нулю. После уточнения специ­алистами первой и второй групп параллельно выполняется второй этап со средним временем 30 и 40 минут соответственно. Затем третья группа спе­циалистов производит комплексную проверку СС со средним временем 60 минут. Интервалы поступления СС и время их ТО подчиняются экспонен­циальному закону. В модели группы специалистов целесообразно представить ОУ, а СС – заявками. Пусть первой группе специалистов соответствует ОУ Gto1, второй группе – Gto2, третьей группе – Gto3. реализация модели показана в примере 2.

 

Пример 2

; Задание исходных данных

Post EQU 11400 ; Интервал поступления СС на ТО

0bs2 EQU 4800 ; Среднее время ТО первой группой на этапе 1

Obs3 EQU 4200 ; Среднее время ТО второй группой на этапе 1

0bs4 EQU 1800 ; Среднее время ТО первой группой на этапе 2

0bs5 EQU 2400 ; Среднее время ТО второй группой на этапе 2

0bs6 EQU 3600 ; Среднее время ТО третьей группой на этапе 3

; Сегмент имитации поступления средств связи на ТО

GENERATE (Exponential(215,0,Post)) ; Источник средств связи

SPLIT 1, Anb ; Разделение на две заявки

; Сегмент имитации работы первой группы специалистов

SEIZE Tg1 ; Занять первую группу специалистов

ADVANCE (Exponential(215, 0, 0bs2)) ; Первый этап обслуживания

Par1 MATCH Par2 ; Уточнение мероприятий ТО

ADVANCE (Exponential(215,0,0bs4)) ; Второй этап обслуживания

RELEASE Tg1 ; Освободить первую группу

TRANSFER ,Ank

; Сегмент имитации работы второй группы специалистов

Anb SEIZE Tg2 ; Занять вторую группу специалистов

ADVANCE (Exponential(215,0,0bs3)) ; Первый этап обслуживания

Par2 MATCH Par1 ; Уточнение мероприятий ТО

ADVANCE (Exponential(215,0,0bs5)) ; Второй этап обслуживания

RELEASE Tg2 ; Освободить вторую группу

; специалистов

Ank ASSEMBLE 2 ; Передача СС третьей группе

; Сегмент имитации работы третьей группы специалистов

SEIZE Tg3 ; Занять третью группу специалистов

ADVANCE (Exponential(215,0,0bs6)) ; Третий этап обслуживания

RELEASE ТgЗ ; Освободить третью группу

TERMINATE 1 ; Готовые СС

 

В примере 2 после поступления в модель исходной заявки – одного образца средства связи – осуществляется расщепление ее с помощью оператора SPLIT на две заявки. Первая из них направляется на цепочку операторов, имитирующих работу специалистов первой группы, а вторая (копия) – на операторы, моделирующие работу специалистов второй группы. После выполнения первого этапа обслуживания специалистами обеих групп обе заявки задерживаются операторами MATCH и одновременно начинается второй этап работ. После его выполнения две заявки оператором ASSEMBLE объединяются в один и далее с использованием одной заявки имитируется проведение комплексной проверки.

INDEX – изменение параметра заявки. Изменить значение параметра заявки можно оператором INDEX следующе­го формата:

INDEX А,В

Операнд А – номер параметра заявки, он может быть именем, положитель­ным целым числом, выражением в скобках, СЧА или СЧА*параметр. Операнд В – числовое значение, которое прибавляется к значению парамет­ра, указанного операндом А. Может быть именем, числом, выражением в скобках, СЧА или СЧА*параметр. Полученный результат заносится в первый параметр заявки.

Так, например, INDEX Slag1,(Normal(21,Mat,SreOtk)+X$post) – при входе заявки в такой оператор вычисляется выражение в скобках, которым указан опе­ранд В, и складывается со значением параметра с именем Slag1. Результат сло­жения присваивается параметру номер один заявки. Если этот параметр не существует, он создается. Если же нет параметра, указанного операндом А, происходит останов по ошибке «Обращение к несуществующему параметру».

PLUS. В GPSS World значения параметров заявок можно также изменять оператором PLUS. Оператор PLUS вычисляет выражение и может записать его в параметр. Оператор PLUS имеет следующий формат:

PLUS А,[В]

Операнд А – выражение. Может быть именем, числом, строкой, выражением в скобках, СЧА или СЧА*параметр. Операнд В – номер параметра заявки, в котором сохраняется результат. Операнд может быть именем, положительным целым числом, выражением в скобках, СЧА или СЧА*параметр. Так, например, PLUS (Exponential(23,0,32.7)+48.75),Itog– при входе заявки в такой оператор PLUS вычисляется выражение в скобках, которым задан операнд А. Затем полученный результат присваивается параметру с име­нем Itog. Если такой параметр не существует, он создается.

 



<== предыдущая лекция | следующая лекция ==>
Объекты языка имитационного моделирования GPSS | Операторы изменения последовательности движения заявок


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.009 сек.