Имитационное моделирование систем. Учебное пособие
.pdfс тем же именем таблицы, что определено в блоке TABLE. Когда сообщение входит в блокTABULATE, оценивается аргумент таблицы (операнд А в операторе TABLE). Если он меньше или равен операнду В в операторе TABLE, то выбирается первый частотный класс таблицы. Если аргумент таблицы не подходит для этого класса, то класс выбирается путем деления значения аргумента на операнд С оператора TABLE.
TERMINATE - уничтожение сообщения, уменьшение счетчика завершенных сообщений. Блок TERMINATE имеет следующий формат записи:
TERMINATE [<A>]
В поле А задается число единиц, на которое этот блок изменяет содержимое счетчика завершений, определяющего
момент |
окончания |
моделирования. |
Операнд |
А |
может |
быть |
||||
именем, |
положительным |
целым |
числом, СЧА |
или |
||||||
СЧА*<параметр>. По |
умолчанию |
значение, |
определяемое |
|||||||
полем |
А, |
равно |
0. |
Если поле |
А |
пусто, |
то |
сообщение |
||
уничтожается, а содержимое счетчика не изменяется. |
|
|
||||||||
TEST - проверка арифметических условий и модификация |
||||||||||
направления |
движения |
потока |
сообщений. Блок TEST имеет |
|||||||
следующий формат: |
TEST <X> |
<A>,<B>,[<C>] |
|
|
|
|||||
|
|
|
|
|
|
|||||
Блок TEST в противоположность блоку LOOP, не изменяет никаких атрибутов сообщения; он определяет номер следующего блока для вошедшего в него сообщения в зависимости от того, выполняется требуемое условие или нет. Блок управляет потоком сообщений, проверяя выполнение алгебраических отношений между значениями СЧА, заданных в полях А и В.
Операнды А и В - сравниваемые величины, которые могут быть именем, любым целым числом, СЧА или СЧА*<параметр>.
Во вспомогательном поле операции оператора описания
блока TEST - <X> - записывается |
один из шести условных |
операторов: |
|
- 'L' - меньше. Отношение |
истинное, если значение |
аргумента поля А меньше значения аргумента поля В;
71
-'LE' - меньше или равно. Отношение истинное, если
значение аргумента поля А меньше или равно значению аргумента поля В;
-'E' - равно. Отношение истинное, если значения обоих аргументов равны;
-'NE' - не равно. Отношение истинное, если значения аргументов полей А и В не равны;
-'G' - больше. Отношение истинное, если значение аргумента поля А больше значения аргумента поля В;
-'GE' - больше или равно. Отношение истинное, если
значение |
|
аргумента |
поля |
А |
больше |
или |
равно |
значению |
||||
аргумента поля В. |
|
|
|
|
|
|
|
|
|
|||
Если |
отношение СЧА, заданных в полях А и В, истинно, |
|
||||||||||
сообщение переходит к следующему блоку. Если отношение |
||||||||||||
ложно, |
сообщение |
переходит |
к блоку, номер которого |
задан |
||||||||
полем С. |
|
|
|
|
|
|
|
|
|
|
|
|
C - номер блока для входящего сообщения, если отношение |
|
|||||||||||
величин, |
заданных |
в |
полях А и В, |
ложно. Операнд C может |
|
|||||||
быть |
именем, |
положительным |
целым |
числом, СЧА |
или |
|||||||
СЧА*<параметр>. |
|
|
|
|
|
|
|
|
|
|||
TRANSFER - пересылка сообщения на указанный блок. |
|
|||||||||||
Блок TRANSFER имеет следующий формат: |
|
|
|
|
||||||||
|
|
|
TRANSFER |
[<A>],[<B>],[<C>],[<D>] |
|
|
|
|||||
Блок |
TRANSFER |
является |
основным |
|
средством, |
|||||||
позволяющим направить сообщение к любому блоку модели. |
|
|
||||||||||
Поле |
А |
задает |
режим |
выбора |
следующего , блока |
|||||||
которому должно перейти сообщение. |
|
|
|
|
|
|||||||
Существуют |
|
следующие |
режимы |
работы |
бло |
|||||||
TRANSFER: |
|
|
|
|
|
|
|
|
|
|
||
-безусловный (пробел);
-статистический (.);
-BOTH;
-ALL;
-PICK;
-функция (FN);
-параметр (Р);
-подпрограмма (SBR);
-SIM.
72
Кроме того, |
операнд |
А |
может |
быть |
дробным |
числом, |
|||||||||
именем, |
положительным |
|
целым |
|
числом, СЧА |
|
или |
||||||||
СЧА*<параметр>. |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Поля |
В |
|
и |
С |
задают |
возможные |
значения |
номеров |
|||||||
следующих блоков или их положение. Использование значений |
|
||||||||||||||
описано при рассмотрении определенных режимов выбора. |
|
||||||||||||||
Операнды могут быть именем, положительным целым числом, |
|
||||||||||||||
СЧА или СЧА*<параметр>. Если |
поле |
В |
пусто, ассемблер |
|
|||||||||||
записывает в нем номер блока, следующего за блоком |
|
||||||||||||||
TRANSFER. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UNLINK - вывод сообщения из списка пользователя. Блок |
|
||||||||||||||
UNLINK имеет следующий формат записи: |
|
|
|
|
|
|
|||||||||
|
UNLINK [<X>] <A>,<B>,[<C>],[<D>],[<E>],[<F>] |
|
|
|
|||||||||||
Блок UNLINK удаляет сообщения из списка пользователя. |
|
||||||||||||||
Указатели |
отношения, |
записываемые во вспомогательном поле |
|||||||||||||
операции <X> определяют, какое |
|
явное |
|
условие |
|
следует |
|||||||||
рассматривать. |
Если |
|
указатель |
|
отношения |
не |
, |
задан |
|||||||
предполагается отношение равенства (Е). |
|
|
|
|
|
|
|
||||||||
Поле А задает номер списка пользователя, из которого |
|
||||||||||||||
удаляются |
одно или |
несколько |
сообщений. Операнд |
А |
может |
||||||||||
быть |
именем, |
|
положительным |
целым, |
СЧА |
или |
|
||||||||
СЧА*<параметр>. |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
В поле В указывается номер блока, к которому переходят |
|
||||||||||||||
удаленные |
сообщения. |
Операнд В может бытьименем, |
|
||||||||||||
положительным целым, СЧА, СЧА*<параметр>. |
|
|
|
|
|
|
|||||||||
Поле С задает счетчик числа удаленныхсообщений. |
|
||||||||||||||
Операнд С может |
быть |
"ALL", |
именем, |
положительным |
|
||||||||||
целым, СЧА, СЧА*<параметр>. Значение СЧА является числом |
|||||||||||||||
удаляемых сообщений. Может быть задано "ALL", что означает |
|
||||||||||||||
удаление всех сообщений. |
|
|
|
|
|
|
|
|
|
|
|
||||
Поле |
D |
может |
быть |
|
именем, |
целым, |
СЧА, |
|
|||||||
СЧА*<параметр>, "BACK" сравнивается со значением параметра |
|
||||||||||||||
сообщений списка пользователя (номер параметра указан в поле |
|
||||||||||||||
D). Операнд Е может |
быть |
|
именем, |
целым, |
СЧА, |
|
|||||||||
СЧА*<параметр>. |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Поле F задаёт номер следующего блока для |
входящего |
в |
|
||||||||||||
блок UNLINK |
сообщения |
в |
случаях: когда |
соответствующий |
|
||||||||||
73
список |
пользователя |
пуст; когда |
не |
выполнено |
заданное |
||||||||
отношение или когда |
указанная |
в поле D переменная равна |
|
||||||||||
нулю. Операнд F может быть именем, положительным целым, |
|
||||||||||||
СЧА, СЧА*<параметр>. |
|
|
|
|
|
|
|
|
|
||||
9.2. Операторы описания данных и контроля управления |
|
||||||||||||
Для |
|
описания |
многоканальных |
устройств, |
переменных, |
|
|||||||
таблиц и т.д. требуются операторы описания объектов. Формат |
|
||||||||||||
операторов |
описания |
|
объектов такой же, как и у операторов |
||||||||||
описания |
|
блоков: в |
поле метки содержится |
символическое |
|||||||||
обозначение, которое идентифицирует описываемый объект; в |
|
||||||||||||
поле операции задается имя оператора описания(STORAGE, |
|
||||||||||||
TABLE, INITIAL, и т.д.); в поле операндов |
- |
необходимое |
|
||||||||||
количество операндов, определяемое типом оператора. |
|
|
|||||||||||
Интерпретатору |
|
GPSS |
требуется |
|
также |
некоторая |
|||||||
дополнительная |
информация |
|
для |
контроля |
за |
процессом |
|||||||
моделирования. |
Кроме |
того, |
необходима |
|
информация |
для |
|||||||
обеспечения |
условий |
проведения |
|
сериймодельных |
|
||||||||
экспериментов. |
Эта |
|
информация |
|
задается |
с |
помощью |
||||||
управляющих |
операторов GPSS. |
Ниже |
приводится |
список |
|||||||||
операторов |
описания |
|
данных и контроля управленияGPSS с |
|
|||||||||
краткими комментариями по их назначению: |
|
|
|
|
|
||||||||
CLEAR |
- сброс |
|
накопленной статистики в0 и удаление |
||||||||||
всех сообщений из модели. Формат записи оператора CLEAR: |
|
||||||||||||
CLEAR
Оператор CLEAR сбрасывает всю накопленную статистику, удаляет все сообщения из модели и устанавливает отсчет сгенерированных сообщений для блока GENERATE, начиная с 1.
Когда выполняется оператор CLEAR :
-содержимое всех блоков становится равным 0;
-все сообщения удаляются из модели;
-текущие счетчики устанавливаются в 0;
-системное время устанавливается в 0;
-устройства незаняты и доступны;
-содержимое всех ячеек, матриц, таблиц принимает значение 0;
74
-логические переключатели сбрасываются;
-многоканальные устройства становятся свободными и доступными;
-общие счетчики устанавливаются равными 0;
-временные интегралы устройств, многоканальных устройств, очередей и списков пользователя устанавливаются в ноль;
-минимальные и максимальные значения устанавливаются равными текущему содержимому очередей, списков пользователя
имногоканальных устройств;
- состояние |
датчиков |
псевдослучайных |
чисел |
не |
изменяется; |
|
|
|
|
-внутренний счетчик генерируемых сообщений в блоке GENERATE устанавливается в 0;
-из всех числовых групп удаляются их члены.
EQU - присвоение целых значений именам. Оператор EQU имеет следующий формат:
<A> EQU <B>
<A> - определяемое символьное обозначение объекта; <B> - целое число в диапазоне от -32766 до +32766.
Определяемое символьное обозначение объекта должно начинаться с буквы и иметь длину не более пяти символов. Определяемые символические обозначения могут использоваться как номера СЧА. Ассемблер GPSS заменяет символьные ссылки
на соответствующие цифровые эквиваленты.
FUNCTION - определение функций. Оператор описания функции имеет следующий вид:
|
ИМЯ FUNCTION |
A,B,N |
|
|
|
|
X1,Y1/X2,Y2/.X3, X4 |
|
|
||
|
XN-1,YN-1/ XN,YN |
|
|
||
где ИМЯ - числовое или символическое имя функции; |
|
|
|||
A - аргумент |
функции (часто используются ГСЧ |
RN1- |
|||
RN8); |
|
|
|
|
|
B - тип функции (D - дискретная, С - непрерывная); |
|
||||
N - число |
описанных |
во |
второй |
и |
последующих |
строках значений функций. |
|
|
|
|
|
75
FVARIABLE - |
определение |
переменных с |
плавающей |
||||
точкой. Формат: |
|
|
num FVARIABLE ехр |
|
|
|
|
|
|
|
|
|
|
||
num - номер переменной; |
|
|
|
|
|||
ехр - допустимое арифметическое или булево выражение, |
|
||||||
использующее СЧА |
или константы; знак % |
заменяет |
* при |
|
|||
косвенной адресации. |
|
|
|
|
|
|
|
Когда используется СЧА V$ при обращении к переменной, |
|
||||||
описанной оператором FVARIABLE, используется вещественная |
|
||||||
арифметика. Целочисленные значения имеют место во |
всех |
||||||
случаях, кроме того, когда FVARIABLE входит в состав функции |
|
||||||
(FUNCTION) |
или |
другой |
вещественной |
переменной |
|||
(FVARIABLE). В логических операциях не нулевые значения |
|||||||
рассматриваются |
|
как "ИСТИНА", |
при |
этом |
переменная |
||
принимает значение 0 ("ЛОЖЬ") или 1 ("ИСТИНА"). Переменная |
|
||||||
может иметь |
до13 |
уровней вложения (т.е переменных, |
|
||||
ссылающихся на другие переменные). Знак % используется для |
|
||||||
обозначения косвенной адресации с использованием , |
СЧА |
||||||
поскольку знак * используется для операции умножения. |
|
|
|||||
INITIAL - присвоение или модификация значений ячеек сохраняемых величин или элементов матриц ячеек сохраняемых величин. Оператор INITIAL имеет следующий формат:
INITIAL <A>,[<B>]
Оператор INITIAL позволяет задавать начальные значения
ячеек, элементов матриц и логических переключателей. |
|
|||||
А - |
логические переключатели, ячейки или |
элементы |
||||
матриц, определяютcя как СЧА. В поле А могут стоять |
||||||
следующие СЧА : LS, X, MX. |
|
|
|
|||
Операнд |
может |
бытьLS<положительное |
целое>, |
|||
LS$<имя>, |
X<положительное |
целое>, X$<имя>, |
MX |
|||
<положительное целое() > или MX$<имя()>. |
|
|
||||
В - величина, которая определяется. По умолчанию равна 1. |
||||||
Операнд может быть целым или именем. |
|
|
||||
MATRIX |
- определение |
матриц |
ячеек |
сохраняемых |
||
величин. Оператор описания матрицы имеет следующий формат: |
||||||
|
|
<NAME> |
MATRIX |
<A>,<B>,<C> |
|
|
76
Каждая матрица должна иметь оператор описания. Метка NAME определяет имя матрицы. Значение поля должно быть именем.
Поле А не используется (оставлено для совместимости с более старыми версиями GPSS).
В поле В задается число строк матрицы, в поле С - число столбцов. Операнды В и С могут быть положительными целыми.
QTABLE - определение Q-таблиц. Оператор имеет следующий формат:
<NAME> QTABLE <A>,<B>,<C>,<D>
Оператор QTABLE является средством получения распределения пребывания сообщения в очереди. Метка NAME определяет имя таблицы.
Вполе А задается имя очереди. Операнд может быть положительным целым или именем.
Поле В - верхняя граница первого частотного класса. Операнд может быть нулем или положительным целым.
Поле С - размер частотного интервала - разница между верхней и нижней границей каждого частотного класса. Операнд может быть положительным целым.
Вполе D задается число частотных интервалов. Оно не может превышать 8191. Операнд может быть положительным целым числом.
RESET - сброс статистики в0 без сброса датчиков случайных чисел и таймера абсолютного времени. Оператор RESET имеет следующий формат:
RESET |
|
Оператор RESET сбрасывает в ноль статистику |
и |
атрибуты системы. Действие оператора RESET можно описать следующим образом:
-значение относительного условного времени(C1) устанавливается в ноль;
-значение абсолютного условного времени(АС1) остается неизменным;
- все |
датчики |
псевдослучайных |
чисел |
остаются |
неизменными; |
|
|
|
|
77
- значения ячеек и матриц, а также состояния логических
ключей не изменяются. |
|
|
|
|
Счетчики блоков (Nj) сбрасываются |
в |
ноль. Временные |
||
интегралы |
устройств |
сбрасываются |
в |
. нольВременные |
интегралы |
содержимого |
многоканальных |
устройств |
|
сбрасываются в ноль. Счетчики числа входов в многоканальное устройство (SCj) и максимальное содержимое многоканального устройства(SMj) остаются в соответствии с их содержимым в текущий момент времени. Временные интегралы всех очередей сбрасываются в ноль. Счетчики входов в очередь (QCj) и максимальное содержимое очередей (QMj) полагаются равными текущей длине очереди. В таблицах стираются накопленные статистические данные. Временные интегралы списков пользователя сбрасываются в ноль. Счетчик числа входов в список (CCj) и максимальное содержимое (CMj) устанавливаются равным текущей длине списка.
RMULT - установка начальных значений одного или более генераторов случайных чисел Формат записи описания RMULT:
RMULT <A>,<B>,<C>,<D>,<E>,<F>,<G>
Оператор RMULT позволяет в процессе моделирования
изменять |
последовательности |
случайных . |
Этичисел |
последовательности изменяются |
путем изменения |
исходных |
|
множителей. |
|
|
|
Вполе А задается исходный множитель для RN1.
Вполе B задается исходный множитель для RN2.
Вполе C задается исходный множитель для RN3.
Вполе D задается исходный множитель для RN4.
Вполе E задается исходный множитель для RN5.
Вполе F задается исходный множитель для RN6.
Вполе G задается исходный множитель для RN7.
START - установка значения счетчика завершения инициирования процесса. Оператор START имеет следующий формат записи:
START <A>,[<B>],<C>,[<D>]
Оператор START используется для инициирования начала моделирования. В поле А задается значение счетчика завершений, определяющего момент окончания прогона модели. В процессе
78
счета сообщения |
будут входить в блоки TERMINATE. В поле А |
|
|||||||||
блока TERMINATE может задаваться число единиц, вычитаемое |
|
||||||||||
из счетчика завершений, заданного в поле А оператораSTART, |
|
||||||||||
при входе сообщения в блок TERMINATE. Операнд А может |
|
||||||||||
быть положительным целым. |
|
|
|
|
|
|
|
||||
В - |
операнд вывода статистики. Операнд может быть "NP" |
|
|||||||||
либо опущен. Задание "NP" в поле В приводит к блокировке |
|
||||||||||
вывода |
статистики. По |
умолчанию |
выводится |
стандартная |
|
||||||
статистика. |
|
|
|
|
|
|
|
|
|
|
|
Поле С не используется. |
Сохраняется |
по |
аналогии |
с |
|
||||||
описаниями других версий GPSS. |
|
|
|
|
|
|
|
||||
Поле D определяет |
необходимость |
вывода |
содержимого |
|
|||||||
списков текущих |
и |
будущих событий. Операнд D может быть |
|
||||||||
положительным целым. Моделирование идет до тех пор, пока |
|
||||||||||
счетчик завершения моделирования, определенный операндом А, |
|
||||||||||
не достигнет 0. |
Для |
уменьшения |
счетчика |
используется |
блок |
|
|||||
TERMINATE. |
|
|
|
|
|
|
|
|
|
|
|
STORAGE |
- |
определение |
многоканальных |
устройств. |
|
||||||
Оператор |
описания |
многоканального |
|
устройства |
имеет |
||||||
следующий формат:
<NAME> STORAGE <A>
Оператор STORAGE определяет емкость многоканального устройства в текущей модели.
Поле метки определяет имя многоканального устройства. Поле может быть именем. Операнд А определяет объем
многоканального устройства. Операнд А может быть положительным целым.
TABLE - определение таблиц. Оператор описания таблицы TABLE имеет следующий формат:
<NAME> TABLE <A>,<B>,<C>,<D>
Оператор определяет аргумент, а также число и ширину частотных интервалов. Метка NAME определяет имя таблицы.
Вполе А задается аргумент таблицы - элемент данных, чье частотное распределение будет табулироваться. Операнд может быть именем, целым, СЧА или СЧА*<параметр>.
Вполе В задается верхний предел первого интервала. Операнд может целым или именем.
79
Вполе С задается ширина частотного интерваларазница между верхней и нижней границей каждого частотного класса. Операнд может быть положительным целым.
Вполе D задается число частотных интервалов. Это число не может превышать 8191. Операнд может быть положительным целым.
VARIABLE - определение целых переменных. Формат:
num VARIABLE ехр
num - номер переменной (числовое или символическое имя); ехр - арифметическое или логическое выражен, использующее допустимые СЧА и(или) константы; знак "%" заменяет"* при косвенной адресации.
Когда производится обращение к СЧАV$, выражение, соответствующее переменной VARIABLE, вычисляется с использованием целочисленной арифметики. В логических операциях ненулевые значения рассматриваются как"ИСТИНА". При этом переменная принимает значение 0 в случае "ЛОЖЬ" и 1 в случае "ИСТИНА". Переменная может иметь до13 уровней вложения (т.е переменных, ссылающихся на другие переменные). Знак % используется при косвенной адресации, т.к * означает умножение.
Задания для моделирования
(ПК-23)
Задание 1. На сборочный участок цеха предприятия через интервалы времени, распределенные экспоненциально со средним значением 10 мин, поступают партии из трех деталей каждая. Половина поступающих деталей перед сборкой должна пройти предварительную обработку в течение7 мин. На сборку подается синхронно одна обработанная и одна необработанная детали. Процесс сборки занимает всего6 мин, затем изделие поступает на регулировку, которая продолжается в среднем 8 мин и время выполнения которой распределено экспоненциально. В результате сборки возможно появление4 % бракованных изделий, которые на регулировку не поступают, а направляются снова на предварительную обработку.
80
