4.27. КомандыGpssWorId
Команды необходимы, как для построения программы модели, так и для интерактивного взаимодействия cмоделью. Они включают операторы описания данных, операторы управления, которые включены в стандартныйGPSS[10, 13], и команды, которые используются только в языкеGPSSWorld.
Операторы описания данных и команды управления:
Команда START. Используется для инициации начала моделирования. Его формат:
START A,[B],|C],[D]
В операнде А задается значениесчетчика завершений, определяющего момент окончания прогона модели. Операнд А может быть только положительным целым числом.
Операнд В – операнд вывода статистики. Этот операнд может принимать значение «NP» или быть опущенным. Задание «NP» в операнде Вприводит к блокированию вывода статистики. По умолчанию выводится стандартная статистика.
Операнд C не используется и сохранен для совместимостиcпредыдущими версиямиGPSS.
Операнд Dзадает необходимость вывода содержанияCTCи СБС. ОперандDможет быть положительным целым. Если операндDне равен 0, тоCTCи СБС выводятся.
Моделирование продолжается до тех пор, пока счетчик завершения, определенный операндом А, не достигнет нулевого значения. Для уменьшения значения счетчика используется блокTERMINATE (подробнее см. в параграфе 4.4).
Стандартный числовой атрибут, который связан cэтой командой,TG1– текущее значение счетчика завершения.
Оператор INITIAL. Позволяет задавать начальные значения сохраняемых величин (Savevalue), элементов матриц (Matrix) и логических ключей (Logicswitch). Имеет такой формат:
INITIAL A|,B]
Значения операндов:
А– СЧА сохраняемых величин, элементов матриц или логических ключей. В операнде могут стоять:
LS<положительное целое>, LS$<имя> – имя логического ключа;
Х<положительное целое>, Х$<имя> – имя сохраняемой величины;
МХ<положительное целое>( ) или МХ$<имя>( ) имя элемента матрицы.
В– устанавливаемое значение. По умолчанию равно единице. Операнд может быть числом, строкой, именем илиUNSPECIFIED.
При выполнении оператора INITIAL значение, обусловленное операндомВ, назначается логическому ключу, сохраняемой величине или элементу матрицы, определенному в операндеА.
Если операнд А определен как логический ключ, то операндВможет быть только нулем или единицей.
Если в операнде Виспользовано ключевое словоUNSPECIFIED, то сохраняемая величина, матрица или элемент матрицы устанавливается в «неопределенное» состояние. Обычно это ключевое слово используется, чтобы указать на отсутствие данных в матрице результатов, которая должна быть в дальнейшем проанализирована библиотечной процедуройANOVA. Если матрица имеет размерность больше двух, то для установки ее в состояниеUNSPECIFIED надо использовать языкPLUS.
CоператоромINITIAL связаны блокиLOGIC, SAVEVALUE и MSAVEVALUE.
Пример 4.62
INITIAL X88,12000
Значение 12000 записывается в сохраняемую величину cномером 88.
INITIAL MX3(2,4),33
Значение 33 записывается в элемент (2, 4) матрицы 3.
INITIAL XSQuote,"Now is the time ... "
Этот оператор назначает строчную константу сохраняемой величине Quote.
INITIAL MX$Inventory(Part39,Stocklevel),200
Значение 200 записывается в строку Part_39 столбцаStocklevel матрицыInventory. ИменамPart39 и Stocklevel должны быть предварительно назначены соответствующие целые числа в командахEQU
INITIAL MainResult,UNSPECIFIED
Предварительно определяется матрица для экспериментов cименемMainResuLt, которая может не иметь данных.
Команда RESET. Сбрасывает в ноль статистику и СЧА системы, но не удаляет гранзакты из модели. Она используется для повторных экспериментовcмоделью и сброса статистических данных переходного периода имитационного процесса. Имеет такой формат:
RESET
Действия команды RESET:
1) значение относительного модельного времени (C1) устанавливается в ноль;
2) значение абсолютного модельного времени (AC1) остается без изменений;
3) все датчики псевдослучайных чисел остаются неизменными;
4) значения сохраняемых величин и матриц, А также состояния логических ключей не изменяются;
5) счетчики числа входов в блоки (Nj) сбрасываются в ноль;
6) временные интегралы* устройств устанавливаются в ноль;
7) временные интегралы содержимого МКУ** устанавливаются в ноль;
8) счетчики числа входов в МКУ (SCj) и максимального содержимого МКУ (SMj) остаются неизменными;
9) временные интегралы всех очередей*** сбрасываются в ноль, счетчики вхождений в очередь (QCj) и максимального содержимого очереди(QMj) устанавливаются равными текущей длине очереди;
10) в таблицах стираются накопленные статистические данные;
11) временные интегралы СП устанавливаются в ноль, счетчики числа вхождений в списки (CCj) и максимального содержимого списков (CMj) устанавливаются равными текущей длине списка.
* Временной интеграл устройства – сумма длин всех интервалов времени, на протяжении которых устройство было занято.
** Временной интеграл содержимого МКУрассчитывается так. В начале моделирования его значение равно нулю. При выполнении подпрограммы блоковENTER и LEAVE вычисляются интервал времени, на протяжении которого содержимое МКУ не менялось, и соответствующее этому интервалу значение содержимого МКУ. Текущее значение временного интеграла содержимого МКУ увеличивается на значение произведения этих величин.
*** Временной интеграл очереди расчитывается так. В начале моделирования его значение равно нулю. При выполнении подпрограммы блоковQUEUE и DEPART вычисляется интервал времени, на протяжении которого содержимое очереди нс менялось, и соответствующее этому интервалу значение содержимого очереди. Текущее значение временного интеграла содержимого очереди увеличивается на значение произведения этих величин.
Команда CLEAR. Сбрасывает всю накопленную статистику, удаляет все транзакты из модели и устанавливает отсчет (нумерацию) транзактов, сгенерированных блокамиGENERATE, начинаяcединицы.
Формат записи команды CLEAR:
CLEAR [A]
Действия команды CLEAR:
1) все транзакты удаляются из модели;
2) содержимое всех блоков устанавливается в ноль;
3) текущие счетчики блоков (Wj) сбрасываются в ноль;
4) общие счетчики блоков (Nj) сбрасываются в ноль;
5) системное время (C1иAC1) устанавливается в ноль;
6) устройства становятся незанятыми и доступными;
7) МКУ становятся свободными и доступными;
8) временные интегралы устройств, МКУ, очередей и СП устанавливаются в ноль;
9) максимальные значения содержимого очередей, СП и МКУ устанавливаются равными их текущему значению;
10) состояние датчиков псевдослучайных чисел не изменяется;
11)внутренний счетчик транзактов, генерируемых в блоках GENERATE, устанавливается в ноль;
12) из всех числовых групп удаляются их члены;
13) содержимое всех сохраняемых величин и матриц принимает нулевое значение;
14) логические ключи сбрасываются.
Если используется CLEAR OFF, выполняется все перечисленное выше за исключением последних двух пунктов.Toесть, если операндA=OFF, то логические ключи, сохраняемые величины и матрицы остаются без изменений.
После выполнения всех названных операций команды CLEAR GPSS-модель просматривается интерпретатором в поиске блоковGENERATE. В каждом выявленном блокеGENERATE создается новый транзакт так же, как при первой интерпретации блокаGENERATE. Заново вычисляется время начальной задержки и максимальное число транзактов, которые будут образованы в блокахGENERATE.
Команда RMULT. Моделирование часто требует нескольких различных последовательностей случайных чисел. Эти последовательности выдаются генераторами случайных чисел, которые действуют независимо друг от друга. При каждом запуске системы генераторы выдают одну и ту же последовательность чисел. КомандаRMULT позволяет изменять такую последовательность путем изменения начальных множителей.
В системе GPSSWorldгенераторы случайных чисел создаются по мере необходимости, их явное определение не обязательно. Несколько генераторов случайных чисел используютсяGPSSWorldдля блоковGENERATE, ADVANCE и TRANSFER. Они определяются в пункте менюEdit/Setting/Random Numbers (случайные числа) настроек модели.
Формат команды RMULT:
RMULT [A],[Bl,[C],[D],|E],[F|,[Gj
В операнде А задается начальный множитель для первого генератора случайных чиселRN1.
В операнде Взадается начальный множитель для второго генератора случайных чиселRN2.
В операнде Cзадается начальный множитель для третьего генератора случайных чиселRN3.
В операнде Dзадается начальный множитель для четвертого генератора случайных чиселRN4.
В операнде E задается начальный множитель для пятого генератора случайных чиселRN5.
В операнде Fзадается начальный множитель для шестого генератора случайных чиселRN6.
В операнде Gзадается начальный множитель для седьмого генератора случайных чиселRN7.
Стандартный числовой атрибут, связанный cэтой командой, –RN<номep генератора>. Он возвращает случайное целое число из интервала от 0 до 999.
Операнды должны быть положительными целыми числами. В этом операторе должен быть задан хотя бы один операнд.
Пример 4.63
RMULT 875,1237,,,319
Устанавливаются начальные состояния множителей генераторов случайных чисел 1, 2 и 5. Остальные значения остаются без изменений.
Оператор EQU. Предназначен для присвоения числовых значенийименам, которые используются в модели (аналог#define в языке программирования Си). Оператор имеет такой формат:
Таблица 4.49
Поле | Информация в поле |
Метка | Имя |
Операция | EQU |
Операнд А | Выражение |
Когда интерпретатор обрабатывает оператор EQU, он вычисляет выражение, заданное операндомА, после чего создает или переопределяет имя переменной. Имени присваивается результат вычисленного выражения. Полученное значение заменяет ссылки на это имя в операндах или выражениях, используемых в модели.
Значения имен могут использоваться как внутренние значения переменных пользователя, или они могут определять объекты, такие как метка. Именам, используемым как метки объектов, значения обычно не назначаются. Интерпретатор автоматически назначает индивидуальные значения именам, если они еще не появились в операторе EQU, в выражениях или операндах. Имена могут использоваться для определения объекта в СЧА.
Выражения, содержащиеся в операторе EQU, вычисляются согласно правилам для выражений и могут включать запросы к пользовательским или библиотечным процедурамPLUS. Выражения могут использовать любые из арифметических и логических операторов. Если в выражении используются параметры, они вычисляются для активного транзакта.
Имена, которым не были явно назначены значения, не могут использоваться в выражении. Необходимо назначить значение для имени прежде, чем будет вычислено выражение. Переменные пользователя могут быть заданы операторами EQUили в процедуреPLUS.
Если значение имени определено, то оно сохраняет свое значение на протяжении всего прогона модели. Имена переменных пользователя могут быть переопределены:
1) повторным определением и вводом новых операторов EQUв очереди команд;
2) в процедуре PLUS;
3) при выполнении интегрирования cпомощью командыINTEGRATE
Значение метки блока не может быть изменено (переопределено после трансляции) оператором EQU. Если имя было определено для объекта, А затем переопределено, например, операторомEQU, то нет возможности обратиться к первоначальному имени.
Переменные FVARIABLE и BVARIABLE используют одну и ту же область имен.
Если необходимо использовать числовое имя для объекта, то оно должно быть назначено оператором EQUдо определения объекта.
Пример 4.64
В СЧА и операндах блоков этого МКУ теперь может использоваться число 1 или имя Mechanic.
Пример 4.65
Рассмотрим модель одноканальной системы обслуживания:
В этом случае статистика по устройствам имеет такой вид:
Используем оператор EQU:
Теперь статистика по устройствам имеет такой вид:
Кроме рассмотренных выше, к операторам описания объектов относятся:
BVARIABLE – определяет булеву переменную;
FUNCTION – определяет функцию;
FVARIABLE – определяет действительную переменнуюcфиксированной точкой;
MATRIX – определяет матрицу;
QTABLE – определяет таблицу для очереди;
STORAGE – определяет МКУ;
TABLE – определяет таблицу;
VARIABLE – определяет переменную. Все эти операторы были рассмотрены ранее. Отметим только, что вGPSSWorldвозможности работыcматрицами расширены (увеличена максимальная размерность матрицыc2-х до 6). Поэтому операторMATRIX имеет следующий формат:
NAME MATRlX A,B,C,|D],[E],[F|[,G]
Метка NAMEопределяет имя матрицы.
Операнд А не используется (оставлен для совместимостиcпредыдущими версиямиGPSS). Все остальные операнды должны быть только положительными целыми числами и задают размерность матрицы по соответствующему измерению:
В– задает максимальное значение индекса для первой размерности;
C – задает максимальное значение элементов для второй размерности:
D– задает максимальное значение элементов для третьей размерности;
E– задает максимальное значение элементов для четвертой размерности:
F– задает максимальное значение элементов для пятой размерности;
G – задает максимальное значение элементов для шестой размерности.
Только к первым двум размерностям матрицы можно обращаться в блоке MSAVEVALUE. В этом случае все отсутствующие размерности предполагаются равными единице. ПроцедурыPLUSмогут обращаться ко всем элементам любой матрицы. Если необходимо использовать матрицу размерностью больше, чем 2, надо создать одну или несколько процедурPLUSдля обращения к ним. Матрица, определенная в оператореMATRIX, имеет глобальную область действия, т.е. доступна всем процедурамPLUS. Кроме того, может быть создана временная матрицаcлокальной областью действия (доступна только в процедуреPLUS, в которой она объявлена).
Матрицы никогда не удаляются из модели, однако, они могут быть переопределены другим оператором MATRIX.
Когда матрица создается впервые или когда используется команда CLEARON, всем элементам задаются значения 0. При необходимости можно использовать операторINITIAL для задания элемента матрицы неопределенного состояния –UNSPECIFIED. Это полезно для сохранения результатов эксперимента. Когда такая матрица результатов передается библиотечной процедуреANOVA, элементыUNSPECIFIED будут обработаны как отсутствующие данные, вместо нулевых значений.
Максимальный размер памяти, выделяемый для матриц, определяется в настройках параметров системы GPSSWorld.
Команда EXIT (ВЫХОД). Предназначен для завершения работыcсистемойGPSSWorld. Имеет следующий формат:
EXIT [А]
В результате выполнения команды EXIT система немедленно завершает работу. Операнд А является необязательным и используется для управления сохранением модели и результатов моделирования. Он может принимать следующие значения:
0или не указан – в окне сообщений появляется запрос на сохранение для каждого вновь созданного или измененного в сеансе моделирования файла;
1– все файлы сохраняются без запроса;
– 1– не сохраняются никакие файлы.
Диалоговые команды GPSS World. Могут быть включены в модель или введены в диалоговом окне команд –Command (в этом случае они называются диалоговыми командами). Любая имитация связана очередью команд. После трансляции модели при моделировании все команды выстраиваются в очередь команд и выполняются одна за другой, пока этот процесс не будет приостановлен или пока не будут выполнены все команды.
Команды могут быть немедленными или поставленными в очередь. Немедленные команды, как HALT и SHOW, выполняются, как только они получены в процессе моделирования, другие команды ставятся в очередь. Они помещаются в конце списка команд, которые еще не были выполнены. Если при моделировании нет немедленных команд, то выполняется следующая команда из очереди команд. Если имитация выполняется и получена немедленная команда, то моделирование временно приостанавливается для выполнения немедленной команды.
Команда HALT – особый случай. Мало того, что она немедленная команда, но она также удаляет все оставшиеся команды из очереди команд. После выполнения командыHALT моделирование прекращается.
Обычно удобно поместить список часто используемых команд в текстовый файл. Тогда можно использовать команду INCLUDE (ВКЛЮЧИТЬ) для посылки объекту моделирования целой последовательности команд. Еще проще, можно загружать в функциональную клавишу командуINCLUDE и выполнять целый список команд одиночным нажатием соответствующей клавиши.
Команда CONDUCT (ПРОВЕСТИ) начинает эксперимент. Ее формат:
CONDUCT |A|
Операнд А задает имя вызываемой процедуры эксперимента, написанной на языкеPLUS. Операндом может быть только имяPLUS-процедуры. Данный операнд является необязательным.
Команда CONDUCT – немедленная команда, которая может быть послана толькоприостановленному процессу моделирования.
Эта команда запускает эксперимент и передает параметры к предварительно организованному эксперименту на языке PLUSдля объекта моделирования. Если при моделировании используется тол: ко одиночный эксперимент без параметров, операнд А не требуется.
Пример 4.66
CONDUCT MyExperiment(NumberOfTellers, StartingReplicateNumber)
В этом примере PLUS-экспериментMyExperiment запускается точно так же, как любая другая процедура. Глобальные переменные пользователяNumberOfTellers и StartingReplicateNumber используются для того, чтобы определить, где эксперимент начинается или возобновляется при прогоне модели. Параметры вычисляются в глобальном контексте и передаются вызываемому эксперименту.
Как только начался эксперимент cкомандойCONDUCT, диалоговые возможности взаимодействияcвыполняемой моделью ограничены. Можно только отображать часы модельного времениcпомощью менюView/Simulation Clock. Если в процессе моделирования возникла необходимость взаимодействияcмоделью, то эксперимент необходимо остановить командойHALT. КомандаCONDUCT не может быть запущена обращением к процедуреDoCommand. В ходе эксперимента доступны только командаHALT и библиотечная процедураDoCommand. CкомандойCONDUCT не связаны никакие СЧА.
Команда CONTINUE (ПРОДОЛЖИТЬ) возобновляет процесс моделирования, который был ранее прерван либо остановлен командойSTOP.
Формат команды:
CONTINUE
Моделирование считается остановленным, когда встречается условие, установленное командойSTOP илиSTEP. Команда продолжает процесс моделирования, но не исключает повторные условия останова. Условие останова может быть исключено из модели опциейOFF командыSTOP или в окне блоков.
Команда CONTINUE может использоваться после командыHALT, которая удаляет все команды из очереди команд. Только командаCONTINUE может продолжить процесс моделирования, если счетчик завершения остался положительным числом. В этом случае продолжается планирование появления транзактов в модели. В противном случае процесс моделирования прекращается, появление транзактов не планируется, генераторы случайных чисел в начальное состояние не сбрасываются.
Команда CONTINUE может быть выполненаcпомощью «горячих клавиш» [Ctrl+Alt+C], если активно окноGPSSWorld.
Команда INCLUDE (ВКЛЮЧИТЬ) транслирует файл операторов модели.
Формат команды:
INCLUDE А
Операнд А обязательный, он определяет подключаемый дополнительный файл модели или файл со списком команд. Операнд представляет собой строку символов и определяет путь к файлу.
Пример 4.67
INCLUDE "example_l.txt"
Когда транслятор получает команду INCLUDE, он считывает текст модели из файлаcименемexample_l.txt. Так как путь к файлу не указан, то предполагается, что файл находится в каталоге проекта модели. КомандаINCLUDE является немедленной командой. При получении этой команды транслятор начинает транслировать подключаемый файлGPSS-моделиexample_l.txt так, как будто подключаемая модель заменила строкуcкомандойINCLUDE. Допускается подключение не более пяти файлов.
Пример 4.68
INCLUDE "A:\priml.txt"
В этом примере указан полный путь к подключаемому файлу, который находится на дискете в дисководе А.
Система GPSSWorldработает толькоcфайлами, имеющими расширение «.txt». В этих файлах может находиться либо неоттранслированная модельGPSS-программы, либо последовательность команд. При попытке подключенияcпомощью этой команды оттранслированной моделиcрасширением «.gps» транслятор выдает сообщение о том, что подключаемый файл должен быть толькоcрасширением «.txt».
Команда HALT прерывает моделирование и очищает очередь команд. Формат команды:
HALT
Команда HALT – немедленная команда и поэтому не помещается в очередь команд объекта моделирования. Она выполняется немедленно, переводя процесс моделирования в приостановленное состояние и удаляя любые оставшиеся команды из очереди команд. Моделирование может быть продолжено позже командойCONTINUE. Только после этой команды можно использовать командуGROUPS
Команда HALT может быть выполненаcпомощью «горячих клавиш» [Ctrl+Al+H], если активно окноGPSSWorld.
Команда INTEGRATE устанавливает интегрирование и пороги непрерывной переменной. Формат команды:
NAME INTEGRATE A,[B],C,[D],[E]
Таблица 4.50
Операнд | Значение | Результат по умолчанию |
А | Производная | Ошибка |
В | Порог 1 | Null |
С | Метка 1 | Null |
D | Порог 2 | Null |
Е | Метка 2 | Null |
NAME– имя переменной пользователя.
Значение операндов:
А– производная. Операндом А может быть имя, число, строка, выражение в скобках или СЧА.
В– первое пороговое значение (порог). ОперандомВможет быть имя, число, строка, выражение в скобках или СЧА.
C– первая метка. ОперандомCможет быть имя, положительное целое число, выражение в скобках или СЧА. ОперандыВиC: или оба используются, или оба не используются.
D– второе пороговое значение (порог). ОперандомDможет быть имя, число, строка, выражение в скобках или СЧА.
E– вторая метка. Операндом E может быть имя, положительное целое число, выражение в скобках или СЧА. ОперандыDиE: или оба используются, или оба не используются.
Когда объект моделирования принимает команду INTEGRATE, он размещает ее в конце очереди команд.
При выполнении команд INTEGRATE переменная пользователя автоматически интегрируетсяcтечением системного времен. Для интегрирования используется модифицированный метод Рунге-Кутта-Фельберга пятого порядкаcпеременным размером шага.
Всем переменным пользователя, используемым в интегрировании, до выполнения моделирования должны быть даны начальные значения. Это можно сделать cпомощью операторовEQUили операторов присваивания вPLUS-процедуре.
Операнд А командыINTEGRATE используется для производной переменной пользователя по времени. Он может быть очень простым или весьма сложным. В последнем случае можно определить процедуруPLUSи разместить команду вызова в вводимом выражении, используемом для операндаА.
Каждая команда INTEGRATE может иметь ноль, один или два числовых порога. ОперандыВи Cмогут использоваться для определения первого порога, и (или) операндыDи E могут использоваться для определения второго порога. В любом случае, первый операнд пары определяет значение порога, второй указывает метку блока, который принимает генерируемые транзакты.
Если в течение интегрирования значение интегрируемой переменной достигает значение порога (cлюбого направления), создается новый транзакт. Этому транзакту устанавливается приоритет 0, и он переходит в блок, связанныйcэтим порогом в командеINTEGRATE. Время входа транзакта в модель определяется линейной интерполяцией. Для увеличения точности при приближении к порогу шаг интегрирования уменьшается. Транзакты, генерируемые при пересечении порога, могут использоваться для того, чтобы изменить значение порога.
Оба порога равноправны, нет необходимости определять один как нижний, А второй как верхний. Новый транзакт генерируется при пересечении любого порогаcлюбой стороны. Если направление пересечения важно для функционирования модели, то нужно следить за значением переменной либо проверять направление пересечения.
Интегрирование начинается автоматически в активном или «разрешенном» состоянии. Во время выполнения моделирования можно включать или выключать интегрирование, используя один или несколько блоков INTEGRATION.
Чтобы настроить автоматическое интегрирование переменной, необходимо:
1) объявить командой INTEGRATE интегрируемую переменную;
2) присвоить начальные значения используемым переменным.
Пусть имеется простое дифференциальное уравнение вида y' = f(Ө), где Ө – это выражение, в которое входят некоторые переменные и (или) значение системного времени (СЧАAC1). По определениюf(Ө) – это производная переменнойу по времени. Итак, для настройки интегрирования нужно:
1) объявить командой INTEGRATE интегрируемую переменнуюY_(не забыв при этом заключить выражение производной в скобки):
Y_ INTEGRATE (Ө)
2) присвоить переменной Y_начальное значение, например,
Y_ EQU 100.3
3) присвоить начальные значение всем переменным, входящим в выражение Ө (cпомощью операторовEQUили операторов присваивания вPLUS-процедурах).
Производная показывает, как быстро изменяется переменная во времени. Она указывает, на какую величину GPSSWorldавтоматически увеличивает числовое значение интегрируемой переменной в процессе моделирования.
Пусть, например, некоторый склад строится со скоростью 2 блока в минуту, А единица модельного времени равна одной секунде [20]. В этом случае настройка автоматического интегрирования осуществляется так:
Естественно, переменной Inventory может быть придано любое другое начальное значение.
Вычисление производной требует большего времени, чем вычисление аналитического выражения. В таком простом примере, как этот, где переменная вычисляется как функция от времени, гораздо быстрее просто посчитать значение переменной во время моделирования, чем интегрировать переменную.
Интегрирование должно использоваться в случаях, когда не известно решение дифференциального уравнения.
Пример 4.68 [20]
Этот пример определяет систему из двух дифференциально-разностных уравнений первого порядка, точное решение которой таково:
Выражения в командах INTEGRATE используются как производные по времени. Начальные значения непрерывных переменных установлены командамиEQU.
В процессе моделирования интегрирование автоматически выполняется между моментами дискретного времени. Порог установлен для пользовательской переменной X_*. Когда эта переменная пересекает значение 0,707 (cлюбого направления), создается новый транзакт и направляется в блок, помеченный меткойWAKE_UP.
* Обозначение Х используется для СЧА сохраняемых величин и не может использоваться как имя переменной, поэтому в данной модели используется имяX_.
При использовании интегрирования моделирование выполняется поочередно в непрерывных и дискретных стадиях. В процессе имитации при планировании событий выполняется дискретная стадия моделирования. В этом случае часы модельного времени продвигаются от события к событию. Между моментами наступления событий выполняется непрерывная стадия моделирования, в течение которой интегрирование осуществляется cмаленькими приращениями времени, называемыми минишагами. График переменной интегрирования выводит промежуточные значения в концах минишагов. Когда происходит пересечение порога, генерируется транзакт и моделирование переходит в дискретную стадию. Непрерывная и дискретная стадии могут взаимодействовать. Например, интегрируемым переменным пользователя в дискретной стадии могут быть назначены новые значения. Это можно сделать, используя операторыEQU или вызывая предназначенные для этогоPLUS-процедуры.
Пример 4.69
Пусть PLUS-процедура определена следующим образом:
Можно повторно инициализировать переменную пользователя, введя, например, блок PLUSв модель
PLUS (SetPop (200))
или используя ввод выражения, которое вызывает SetPop() в некотором другом блоке.
Уравнения высокого порядка [20]. При необходимости использования в модели дифференциального уравнения высокого порядка, необходимо уменьшить его порядок до первого. Для этого нужно переписать это уравнение как систему уравнений первого порядка. Это выполняется достаточно просто путем ввода новой переменной для каждой промежуточной производной.
Например, пусть имеем дифференциальное уравнение третьего порядка:
Введем обозначения:
Для уравнений еще большего порядка нужно продолжить введение новых переменных. После подстановки новых переменных в начальное уравнение получим дифференциальное уравнение первого порядка:
25v' - 6u + y = 0.
Теперь у нас есть следующая система дифференциальных уравнений:
В системе GPSSWorldэто будет выглядеть так:
Начальные значения для U_, V_ иY_,определенные при помощи оператораEQU, задаются в зависимости от начальных условий моделирования.
Пример 4.70 [20]
Постановка задачи «Хищник-Жертва». На маленьком острове бесконтрольно растет популяция кроликов. Проблема стоит так остро, что местные фермеры прикладывают значительные усилия, чтобы прекратить увеличение популяции кроликов. Для контроля над ситуацией они хотят завести популяцию лис.
Для моделирования этого явления используется модель «хищник – жертва». При моделировании изучается такой вопрос: «Что произойдет, если выпустить 80 лис?».
На рис.4.15 представлен отчет по результатам моделирования при условии, что начальное значение количества лис равно 80. На рис. 4.16 дан график изменения размеров популяций кроликов и лис для этого начального значения.
Puc. 4.15
Puc. 4.16
Команда REPORT. Выводит стандартный статистической отчет о работе модели.
Формат команды:
REPORT [A][.B]
Операнд А не используется (оставлен для совместимостиcпредыдущими версиями).
Операнд В– признак немедленного создания стандартного отчета. Может иметь значениеNOW.
Пример 4.71
REPORT
Эта команда немедленно создает стандартный отчет.
REPORT ,NOW
Этот формат команды сохранен для совместимости cверсиейGPSS/PC. Как и в предыдущем случае, она немедленно создает стандартный отчет.
Команда REPORT ставится в конец очереди команд. Способ выдачи информации в стандартный отчет может быть настроен в параметрах системыEdit/Settings/Report. Если в параметрах указан вывод в окно«In Windows», то стандартный отчет создается в новом окне и может быть сохранен в файле. В противном случае стандартный отчет создается, ему присваивается последовательный номер, и он автоматически помещается в файл.
Команда REPORT больше не использует операнд А и всегда предполагает, что операндВимеет значениеNOW. Она игнорирует параметр «Создать стандартный отчет»(CreateStandardReport), который используется для автоматического создания отчета, и операнд В командыSTART, используемой для текущей имитации. Обычно нет необходимости использовать командуREPORT, так как отчет создается автоматически в соответствииcпараметрами настройки отчета, которые задаются в менюEdit/Settings/Report.
Команда SHOW. Отображает значение выражения в строке состояния в окне модели. Эта команда выполняется немедленно, как только получена системой.
Формат команды:
SHOW <выражение>
Выражения в команде SHOW бывают арифметического и логического типа (см. параграф 4.12).
Пример 4.72
SHOW LOG(Q$BARBER)
Указанная команда вычисляет натуральный логарифм от СЧА Q$BARBER и выводит результат на экран дисплея.
SHOW X$PROFIT – X$expense
Если X$PROFIT – суммарный доход,aX$EXPENSE – суммарные затраты, то командаSHOW выведет их разность в окне модели в строке состояния.
Копия сообщения о выполнении этой команды cрезультатом вычисления посылается в окно журнала сессии. Если нет активных транзактов, т.е. имитация не выполнялась, или именам, используемым в командеSHOW, не были назначены значения, то выдается сообщение об ошибке. Эта команда отображает до 38 цифр или знаков.
Команда STEP. Задает возможность прерывания процесса моделирования при прохождении указанного количества блоков.
Формат команды:
STEP А
Операнд А – счетчик прохождения блоков. Операнд может быть положительным целым.
Команда STEP не является немедленной командой, А становится в конец очереди команд. Когда процесс моделирования прерывается, модель переходит в «приостановленное» состояние. В окне журнала сессии появляется сообщение трассировки. Когда используется командаSTEP, в модели должен быть активный транзакт (то есть модель перед этим может быть запущена командойSTART).
Модель, которая стартовала cиспользованием командыSTEP, не может быть завершена при нулевом счетчике завершения. Моделирование завершается при прохождении указанного в операнде А командыSTEP количества блоков.
Если команда STEP выполняется, то счетчик завершения не устанавливается; блоки при необходимости перенумеровываются; все блоки, генерирующие транзакты, приводятся в исходное состояние; генераторы случайных чисел в начальное состояние не сбрасываются.
Пример 4.73
STEP 1
Процесс моделирования останавливается при прохождении одного блока модели.
Команду STEP используют длятрассировки модели. Для этого необходимо выполнить следующие действия:
1. К тексту модели прибавить последовательность команд:
START 1
STEP 1
Моделирование начнется после команды START (счетчик завершения или длительность прогона модели выбирают так, чтобы на момент завершения моделирования в модели уже был активный транзакт). Активный транзакт после командыSTEP продвинется к следующему блоку.
2. Перейти в диалоговое окно блоков («Blocks Window»). Bокне можно проследить движение каждого транзакта по блокам модели. В окне журнала сессии появится информация, подобная следующей:
01/20/03 16:39:53 Halt. XN: 1. Block 2 Next.
01/20/03 16:39:53 Clock:4.504044. Next: TEST. Line 9.
01/20/0316:39:53 TESTLE Q$Barber,l,Finis;Waitiflinelorless
3. Нажать «мышкой» на поле STEP в меню команд окна блоков. Выполнится команда
STEP 1
и активный транзакт продвинется на один блок вперед.
4. Пункт 3 выполнить столько раз, сколько это необходимо. Для выполнения команды STEP можно использовать комбинацию клавиш [Ctrl+Alt+l].
Команда STOP. Устанавливает или снимает условие останова моделирования.
Формат команды:
STOP [A],[B][,C1
Операнд А – номер транзакта, может быть положительным целым. Если операнд опущен, то любой транзакт удовлетворяет условию останова.
Операнд В– номер блока. Если операнд опущен, то любой блок удовлетворяет условию останова. Операнд может быть положительным целым или именем.
Операнд C– флажок состояния команды (может бытьON илиOFF). По умолчанию –ON.
Пример 4.74
STOP 1000,50
Эта команда задает условие останова модели при входе транзакта cномером 1000 в блокcномером 50.
Команда STOP без операндов вызывает немедленный останов процесса моделирования,acопциейON устанавливает условие останова моделирования, но не стартует модель. Для запуска моделирования используют последовательность операторов и командSTART, STEP, CONTINUE.
Команда CONTINUE позволяет выйти из состояния останова и продолжить моделирование, однако, условие останова, введенное ранее командойSTOP, остается включенным. Для отключения условия останова необходимо выполнить в командуSTOP cфлагомOFF.
Условия останова могут быть заданы в окне блоков.
- Предисловие
- Введение
- Глава 1. Модели массового обслуживания
- 1.1. Системы массового обслуживания и их характеристики
- 1.2. Системыcодним устройством обслуживания
- 1.3. Основы дискретно-событийного моделированияCmo
- 1.4. Многоканальные системы массового обслуживания
- Переменная vаr1, экспоненциальное распределение
- Глава 2. Вероятностные сети систем массового обслуживания
- 2.1. Общие сведения о сетях
- 2.2. Операционный анализ вероятностных сетей
- 2.3. Операционные зависимости
- 2.4. Анализ узких мест в сети
- Глава 3. Вероятностное моделирование
- 3.1. Метод статистических испытаний
- 3.2. Моделирование дискретных случайных величин
- 3.3. Моделирование непрерывных случайных величин
- 3.4. Сбор статистических данных для получения оценок характеристик случайных величин
- 3.5. Определение количества реализаций при моделировании случайных величин
- Глава 4. Система моделированияgpss
- 4.1. Объекты
- 4.2. Часы модельного времени
- 4.3. Типы операторов
- 4.4. Внесение транзактов в модель. БлокGenerate
- 4.5. Удаление транзактов из модели. БлокTerminate
- 4.6. Элементы, отображающие одноканальные обслуживающие устройства
- 4.7. Реализация задержки во времени. БлокAdvance
- 4.8. Сбор статистики об ожидании. БлокиQueue,depart
- 4.9. Переход транзакта в блок, отличный от последующего. БлокTransfer
- 4.10. Моделирование многоканальных устройств
- 4.11. Примеры построенияGpss-моделей
- 4.12. Переменные
- 4.13. Определение функции вGpss
- 4.14. Стандартные числовые атрибуты, параметры транзактов. Блоки assign, mark, loop
- Примеры фрагментов gpss-моделейcиспользованием сча и параметров гранзактов
- 4.15. Изменение приоритета транзактов. БлокPriority
- 4.16. Организация обслуживанияcпрерыванием. Блоки preempt и return
- 4.17. Сохраняемые величины
- 4.18. Проверка числовых выражений. БлокTest
- 4.19. Определение и использование таблиц
- 4.20. Косвенная адресация
- 4.21. Обработка транзактов, принадлежащих одному семейству
- 4.22. Управление процессом моделирования в системеGpss
- 4.23. Списки пользователей
- 4.24. Блоки управления потоками транзактовLogic,gatelr,gatelSиGate
- 4.25. Организация вывода временных рядов изGpss-модели
- 4.26. Краткая характеристика языкаPlus
- 4.27. КомандыGpssWorId
- 4.28. Диалоговые возможностиGpssWorld
- 4.29. Отличия междуGpssWorldиGpss/pc
- Глава 5. Моделирование вычислительных и операционных систем
- 5.1. Операционные системы компьютеров
- 5.2. Сети и системы передачи данных
- 5.3. Проблемы моделирования компьютеров и сетей
- Глава 6. Основы моделирования процессов
- 6.1. Производственные процессы
- 6.2. Распределительные процессы
- 6.3. Процессы обслуживания клиентов
- 6.4. Процессы управления разработками проектов
- Глава 7. Задания для самостоятельной работы Задание 1. Моделирование разливной линии
- Задание 2 [10]. Моделирование контроля и настройки телевизоров
- Задание 3. Моделирование работы кафе
- Задание 4. Моделирование работы обрабатывающего цеха
- Задание 5. Моделирование работы обрабатывающего цеха
- Задание 6. Моделирование работы обрабатывающего цеха
- Задание 7. Моделирование работыCmo
- Задание 8. Моделирование функций
- Задание 9 [10]. Моделирование системы обслуживания
- Задание 10 [16]. Моделирование системы автоматизации проектирования
- Задание 11 [16]. Моделирование работы транспортного цеха
- Задание 12 [16]. Моделирование системы передачи разговора
- Задание 13 [16]. Моделирование системы передачи данных
- Задание 14 [16]. Моделирование узла коммутации сообщений
- Задание 15 [16]. Моделирование процесса сборки
- Задание 16 [16]. Моделирование работы цеха
- Задание 17 [16]. Моделирование системы управления производством
- Задание 18. Моделирование производственного процесса
- Задание 19. Моделирование работы заправочной станции
- Задание 20. Моделированиеработы станции технического обслуживания
- Задание 21. Моделирование работы станции скорой помощи
- Задание 22. Моделирование работы госпиталя
- Задание 23. Моделирование работы маршрутных такси
- Задание 24. Моделирование работы печатной системы
- Задание 25. Моделирование процесса сборки пк
- Глава8. Проектирование имитационных моделей c помощью интерактивной системы имитационного моделирования
- 8.1. Структура интерактивной системы имитационного моделирования
- 8.2. Построение концептуальной схемы модели
- 8.3. Параметрическая настройка модели
- 8.4. Генератор формул
- 8.5. Управление экспериментом
- 8.6. Запуск эксперимента и обработка результатов моделирования
- 8.7. Управление проектами и общей настройкой системы
- 8.8. Пример построения модели средствамиIss2000
- Глава 9. Технология имитационного моделирования
- 9.1. Имитационные проекты
- 9.2. Организация экспериментов
- 9.3. Проблемы организации имитационных экспериментов
- 9.4. Оценка точности результатов моделирования
- 9.5. Факторный план
- 9.6. Дисперсионный анализAnovAв планировании экспериментов
- 9.7. Библиотечная процедураAnova
- 9.8. Технология проведение дисперсионного анализа в системеGpssWorld
- 9.9. Особенности планирования экспериментов
- 9.10. Нахождение экстремальных значений на поверхности отклика
- 9.11. Организация экспериментов вGpssWorId
- 9.L2. Выбор наилучшего варианта структуры системы
- Глава 10. Примеры принятия решенийcпомощью имитационного моделирования
- 10.1. Моделирование производственного участка
- 10.2. Моделирование технологического процесса ремонта и замены оборудования
- Приложение Системные сча
- Сча транзактов
- Сча блоков:
- Сча одноканальных устройств:
- Сча очередей
- Сча таблиц
- Сча ячеек и матриц ячеек сохраняемых величин:
- Сча вычислительных объектов
- Список литературы
- Срдержание
- Глава 5. Моделирование вычислительных и операционных систем 132
- Глава 10. Примеры принятия решений c помощью имитационного моделирования 201