Математическое моделирование

Блоки SEIZE и RELEASE. Занятие свободных приборов


В процессе перемещения по модели СМО транзакты занимают приборы (ОА). Для того, чтобы занять ОА, транзакт входит (или пытается войти) в соответствующий блок, описывающий этот прибор. Этот блок должен обладать следующими свойствами:

1. Если прибор уже используется (занят другим транзактом), транзакт не может войти в блок, и он должен ждать в очереди.

2.             Если прибор не используется, транзакт может войти в блок. В результате произойдет изменение статуса прибора из «незанято» в «занято».

Для моделирования приборов подобного типа используется блок SEIZE. В результате входа транзакта в блок SEIZE указанное в нем устройство становится «занятым» данным транзактом и остается в этом состоянии до тех пор, пока этот же самый транзакт не пройдет через блок RELEASE, указывающий на это устройство. Один транзакт может занять любое число устройств, но каждое устройство в любой момент времени может быть занято лишь одним транзактом.

Для оператора SEIZE, использованного в программе, обязательно должен быть указан операнд А. Значением операнда А является имя занимаемого прибора. Имя прибора может быть символическим или числовым. Если прибору присваивается символическое имя, то оно должно состоять из трех-пяти алфавитно-цифровых символов, причем первые три символа должны быть буквами. Если прибору присваивается числовое имя, то числа должны быть положительными и целыми. Наибольшее разрешенное число приборов зависит от объема памяти, доступной системе GPSS.

В качестве операнда В оператора SEIZE могут быть указаны символы «Q» или «L». Символ «Q» используется в тех случаях, когда нужно, чтобы собиралась статистика о средней длине очереди или о среднем времени ожидания. Так, запись

SEIZE point,Q

означает, что очередь перед объектом «point» не будет создаваться, но в процессе моделирования будет собираться и раcпечатываться статистика. Если в качестве операнда В указан символ «L», то блок становится «логическим блоком» SEIZE. Это значит, что если прибор А занят, то транзакт проходит через этот блок. Он не ждет перед блоком, как обычно, пока освободится прибор.

Пример использования блока SEIZE:

SEIZE Stan1, Q ! Занять Stan1 (станок №1)

ADVANCE 10,5   ! Выполнить обработку

RELEASE Stan1  ! Освободить Stan1

SEIZE Stan2    ! Занять Stan2 (станок №2)

SEIZE Robot    ! Занять робот

ADVANCE 14     ! Выполнить обработку

RELEASE Stan2  ! Освободить Stan2

RELEASE Robot  ! Освободить робот

Прохождение транзактов через этот участок программы моделирует обслуживание заявок сначала прибором Stan1 в течение от 5 до 15 единиц времени, а затем одновременно двумя приборами Stan2 и Robot в течение 14 единиц времени.

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



Содержание раздела