4.26. Краткая характеристика языкаPlus
Язык GPSS можно отнести к языкам высокого уровня. В силу этого он имеет довольно слабые алгоритмические возможности. Для устранения этого недостатка в систему GPSS World добавлен PLUS -язык низкого уровня. Выражения, процедуры и эксперименты PLUS можно использовать в GPSS-моделях.
Рассмотрим основные элементы языка PLUS.
Алфавит языка PLUS (GPSS World) содержит алфавитно-цифровые и специальные символы. Для задания имен используются алфавитно-цифровые символы (прописные буквы A-Z, строчные буквы a-z, цифры 0-9 и знак подчеркивания «_»). Для обозначения операторов и пунктуации используются специальные символы («#», «*», «&», «+», «-», «/», «\», «,», «;»). В комментариях допускается использование символов русского алфавита «А-Я».
Имена - это созданные пользователем последовательности символов, используемые для обозначения объектов, переменных и процедур. Имя должно начинаться с буквы, в нем можно использовать от 1 до 250 алфавитно-цифровых символов. При этом имена не должны совпадать с ключевыми словами GPSS и с СЧА. Следует отметить, что GPSS World не различает регистр алфавита.
PLUS-выражение - это комбинация одного или нескольких элементов, называемых факторами. Выражения строятся с использованием операторов и вызовов процедур, обрабатывающих факторы. Выражения могут использоваться в PLUS-процедурах и в операндах операторов GPSS. Если выражение используется в операндам GPSS-блоков, то оно должно записываться в круглых скобках.
Типы данных. Переменные пользователя, элементы матриц, ячейки, параметры транзактов могут иметь значения различных типов данных. В GPSS World используются три основных тbпа данных:
целочисленный (Integer) - это 32-х битовые двоичные числа. Если при выполнении арифметической операции происходит переполнение целочисленного значения, производится автоматическое преобразование его в вещественное;
вещественный (Real) - это числа с плавающей точкой двойной точности. Для представления мантиссы используется 15 десятичных разрядов, а для порядка - значения в интервале от -306 до 306 ;
строковый (String) - это последовательность символов ASCII; строки не ограничены в размерах (максимальная их длина определяется параметрами настройки Edit/Setting.../Simulation).
Выражения могут быть вычисляемыми, численно вычисляемыми, вычисляемыми в виде строки.
Факторы. Факторы - это основные элементы выражений, которые в свою очередь используются в операндах операторов GPSS и PLUS-процедурах.
Факторами выражений GPSS могут быть:
1) строковые константы;
2) вещественные константы;
3) целочисленные константы;
4) имена;
5) элементы PLUS-матрицы;
6) обращения к процедурам (значения, возвращаемы* процедурами);
7) стандартные числовые атрибуты.
Для объединения факторов в выражение используются операторы и вызовы процедур.
Операторы. В табл. 4.48 представлены арифметические операторы, используемые в выражениях GPSS World, перечисленные в порядке убывания их приоритетов.
Таблица 4.48
Все арифметические операторы автоматически преобразуют строковые операнды в числовые значения.
Перенастройку некоторых операторов можно выполнить через пункт меню Edit/Setting.. /Simulation.
К операторам языка PLUS также относятся:
PROCEDURE - определяет PLUS-процедуру;
EXPERIMENT - определяет PLUS-эксперимент;
TEMPORARY - определяет и ограничивает область действия локальных переменных пользователя и локальных матриц (существующих только во время вызова конкретной процедуры);
BEGIN/END - составной оператор, создает блок PLUS-операторов;
присваивание - предназначен для изменения значений переменных;
вызов процедуры - вызывает библиотечную процедуру;
помеченный оператор - класс операторов, начинающихся с метки;
IF/THEN - условный оператор, проверяет выражение и, если результат равен «TRUE» (истина), выполняет действие;
IF/THEN/ELSE - условный оператор проверяет выражение и в зависимости от результата производит то или иное действие;
WHILE/DO - оператор цикла, несколько раз выполняет действие;
GOTO - оператор безусловного перехода, передает управление к метке внутри процедуры;
RETURN - останавливает выполнение процедуры и возвращает результат ее выполнения (после чего память, используемая процедурой, освобождается).
Процедуры языка PLUS могут записываться в любом месте модели (кроме тела другой процедуры). Остальные операторы PLUS могут появляться только внутри оператора PROCEDURE.
Различают процедуры пользовательские и встроенные (библиотечные). Пользовательские процедуры обычно используются для изменения значений глобальных переменных и поименованных величин или для вычисления выражения и выдачи результата. В первом случае результат вычисления не требуется. Во втором - требуется, в этом случае обязательно наличие оператора возврата RETURN. Результат, выдаваемый PLUS-процедурой, используется в операндах или других PLUS-выражениях. Если в операторе RETURN не задано какое-либо выражение или в процедуре отсутствует оператор возврата RETURN, то возвращается значение 0.
Для определения PLUS-процедуры необходимо поместить оператор PROCEDURE в файл модели и выполнить транслирование оператора вместе с моделью или передать оператор PROCEDURE процессу моделирования в интерактивном режиме. После этого уже определенную PLUS-процедуру можно вызывать при вычислении выражений или в PLUS-операторах присваивания.
Если процедура используется более, чем в одной модели, то ее можно сохранить в исходном файле, называемом библиотекой процедур пользователя. Командой INCLUDE можно включать эту библиотеку в каждую модель, в которой будет использоваться данная процедура.
Эксперимент - это особая разновидность PLUS-процедуры пользователя. Для ее определения используется оператор EXPERIMENT. Эта процедура применяется для управления несколькими повторяющимися имитациями.
Эксперименты обычно используются совместно с библиотечной процедурой DoCommand() для управления процессом моделирования, а также с библиотечной процедурой дисперсионного анализа ANOVA для анализа результатов моделирования. Обычно результаты эксперимента записываются в глобальную матрицу, которая передается процедуре ANOVA. Существует возможность автоматически создавать отсеивающие и оптимизирующие эксперименты при помощи генераторов экспериментов.
Эксперимент вызывается только командой CONDUCT, которую можно загрузить с помощью функциональной клавиши.
Эксперименты и обыкновенные процедуры, непосредственно или косвенно вызываемые экспериментом, могут использовать библиотечную процедуру DoCommand() для выполнения операторов GPSS, включая команды и блоки.
Библиотека процедур - это множество PLUS-процедур. Существует два типа библиотек: библиотека пользователя, представляющая собой совокупность процедур пользователя, и встроенная библиотека GPSS World, содержащая готовые к использованию строковые и математические процедуры. Для того, чтобы процедуру можно было использовать в PLUS-выражении, она должна находиться в библиотеке процедур.
Встроенная часть библиотеки содержит процедуры, которые могут быть разбиты на следующие группы:
Обслуживающие процедуры - процедуры, используемые для управления прогонами имитаций и анализа экспериментов.
1. Процедура DoCommand. Транслирует строку аргумента и передает результат трансляции выполняющейся модели. Эта процедура может вызываться только из экспериментов и процедур, вызванных из экспериментов.
2. Процедура ANOVA. Проводит многофакторный дисперсионный анализ, создает таблицу ANOVA, таблицу описательных статистик и выводит эти данные в журнал сессии.
3. Процедура Exit() завершает сеанс работы с GPSS World - останавливает процесс моделирования и закрывает все окна GPSS.
Файловые процедуры (процедуры потоков данных) - процедуры управления потоками данных внутри PLUS-процедуры. Потоки данных используются для чтения и записи файлов или для хранения и доступа больших объемов данных в памяти. Файловые процедуры выполняют следующие операции:
Open( DataStream, FileNameString) - инициализирует поток данных;
Close( DataStream) - закрывает поток данных и извлекает код ошибки;
Read( DataStream) - считывает текстовую строку из потока данных;
Write( DataStream, String) - передает потоку данных текстовую строку;
Seek( DataStream, NewLinePosition) - устанавливает позицию текущей строки потока данных и извлекает предыдущую позицию строки.
Процедуры динамического вызова используются для вызова функций, хранящихся во внешних исполняемых файлах, включая динамически подключаемые библиотеки DLL. Соответствующие процедуры можно использовать для запуска функций, предоставляемых другими фирмами в отдельных исполняемых файлах и поддерживающих протокол CDECL.
Математические процедуры. К ним относятся:
ABS(Expression) - абсолютное значение;
ATN(Expression) - арктангенс (в радианах);
COS(Expression) - косинус;
EXP(Expression) - число е, возведенное в степень аргумента;
INT(Expression) - выделение целой части с отбрасыванием дробной части;
LOG(Expression) - натуральный логарифм;
SIN(Expression) - синус;
SQR(Expression) - квадратный корень;
TAN(Expression) - тангенс.
Вероятностные распределения - процедуры теоретических вероятностных распределений (см. параграф 4.13).
Строковые процедуры выполняют операции со строками:
Align(InsertString, SourceString, Offset) - вставляет одну строку в другую с выравниванием по правому краю;
Catenate(Stringl, String!) - производит объединение строк;
Copies(SourceString, Count) - создает одну строку из нескольких копий исходной;
Datatype(Datum) - возвращает строку, содержащую тип данных аргумента;
Find(TestString, SourceString) - вычисляет смещение одной строки, содержащейся в другой строке;
Left(SourceString, MaxCount) - возвращает левую часть заданной строки;
Length(SourceString) - возвращает количество символов в строке;
Lowercase(SourceString) - переводит все прописные буквы в строке в строчные;
Place(InsertString, SourceString, Offset) - вставляет одну строку в другую с выравниванием по левому краю;
PolyCatenate(Stringl, Stringl,...)- производит объединение двух или более строк;
Right(SourceString, MaxCount) - возвращает правую часть заданной строки;
String(Datum) - преобразует данные в их строковый эквивалент;
StringCompare(Stringl, StringZ) - сравнивает две строки;
Substring(SourceString, Offset, MaxCount) - возвращает подстроку заданной строки;
Trim(SourceString) - удаляет начальные и конечные пробелы;
Uppercase(SourceString) - переводит все строчные буквы в строке в прописные;
Value(Datum) - возвращает числовой эквивалент строки;
Word(SourceString, WordNumber) - возвращает заданное слово строки.
Процедуры запроса возвращают информацию о состоянии тран-закта, находящегося в модели. К ним относятся такие процедуры:
QueryXNExist(TransactionNumber) - возвращает 1, если тран-закт существует в модели, иначе - 0;
QueryXNParameter(TransactionNuraber, Parameter) - возвращает значение параметра транзакта. Если искомого параметра не существует, происходит останов по ошибке;
QueryXNAssemblySet(TransactionNumber) - возвращает номер семейства, к которому принадлежит транзакт;
QueryXNPriority(TransactionNumber) - возвращает приоритет транзакта в виде целого числа;
QueryXNMl(TransactionNumber) - возвращает время входа транзакта в систему.
- Федеральное агентство по образованию
- Оглавление
- Глава 5. Моделирование вычислительных и операционных систем 289
- Глава 6. Основы моделирования процессов 305
- Глава 7. Задания для самостоятельной работы 311
- Глава 8. Проектирование имитационных моделей 335
- Глава 9. Технология имитационного моделирования 361
- Глава 10. Примеры принятия решений с помощью имитационного моделирования 433
- Глава 11. Задания для имитационных проектов 451
- Предисловие
- Введение
- Глава 1. Модели массового обслуживания
- 1.1. Системы массового обслуживания и их характеристики
- 1.2. Системы с одним устройством обслуживания
- 1.3. Основы дискретно-событийного моделирования смо
- 1.4. Многоканальные системы массового обслуживания
- Глава 2. Вероятностные сети систем массового обслуживания
- 2.1. Общие сведения о сетях
- 2.2. Операционный анализ вероятностных сетей
- 2.3. Операционные зависимости
- 2.4. Анализ узких мест в сети
- Глава 3. Вероятностное моделирование
- 3.1. Метод статистических испытаний
- 3.2. Моделирование дискретных случайных величин
- 3.3. Моделирование непрерывных случайных величин
- 3.4. Сбор статистических данных для получения оценок характеристик случайных величин
- Для оценки дисперсии случайной величины ξ используют формулу
- 3.5. Определение количества реализаций при моделировании случайных величин
- По формулам (3.18-3.20) находим
- Задачи для самостоятельной работы
- Задача 6
- Глава 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.23
- 4.14. Стандартные числовые атрибуты, параметры транзактов. Блоки assign, mark, loop
- 4.15. Изменение приоритета транзактов. БлокPriority
- 4.16. Организация обслуживания с прерыванием. Блоки preempt и return
- Задание для самостоятельной работы:
- 4.17. Сохраняемые величины
- 4.18. Проверка числовых выражений. Блок test
- Пример 4.40
- Задание для самостоятельной работы:
- 4.19. Определение и использование таблиц
- Задания для самостоятельной работы:
- 4.20. Косвенная адресация
- 4.21. Обработка транзактов, принадлежащих одному семейству
- 4.22. Управление процессом моделирования в системеGpss
- 4.23. Списки пользователей
- 4.24. Блоки управления потоками транзактовLogic,gatelr,gatelSиGate
- 7 Testne p1,p2,asn2 ; Повторить, если адресат
- 4.25. Организация вывода временных рядов изGpss-модели
- 4.26. Краткая характеристика языкаPlus
- 4.27. Команды gpss World
- 4.28. Диалоговые возможностиGpssWorld
- 4.29. Отличия между gpss World и gpss/pc
- Глава 5. Моделирование вычислительных и операционных систем
- 5.1. Операционные системы компьютеров
- 5.2. Сети и системы передачи данных
- 5.3. Проблемы моделирования компьютеров и сетей
- Глава 6. Основы моделирования процессов
- 6.1. Производственные процессы
- 6.2. Распределительные процессы
- 6.3. Процессы обслуживания клиентов
- 6.4. Процессы управления разработками проектов
- Глава 7. Задания для самостоятельной работы Задание 1. Моделирование разливной линии
- Глава 8. Проектирование имитационных моделей с помощью интерактивной системы имитационного моделирования
- 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. Технология проведение дисперсионного анализа в системеGpss World
- 9.9. Особенности планирования экспериментов
- 9.10. Нахождение экстремальных значений на поверхности отклика
- 9.11. Организация экспериментов вGpssWorld
- 9.12. Выбор наилучшего варианта структуры системы
- Глава 10. Примеры принятия решений с помощью имитационного моделирования
- 10.1. Моделирование производственного участка
- 10.2. Моделирование технологического процесса ремонта и замены оборудования
- Глава 11. Задания для имитационных проектов
- Приложение Системные сча
- Сча транзактов
- Сча блоков:
- Сча одноканальных устройств:
- Сча очередей
- Сча таблиц
- Сча ячеек и матриц ячеек сохраняемых величин:
- Сча вычислительных объектов
- Сча списков и групп
- Список литературы