4.26. Краткая характеристика языкаPlus
Язык GPSSможно отнести к языкам высокого уровня. В силу этого он имеет довольно слабые алгоритмические возможности. Для устранения этого недостатка в системуGPSSWorldдобавленPLUS– язык низкого уровня. Выражения, процедуры и экспериментыPLUSможно использовать вGPSS-моделях.
Рассмотрим основные элементы языка PLUS.
Алфавит языкаPLUS(GPSSWorld) содержит алфавитно-цифровые и специальные символы. Для задания имен используются алфавитно-цифровые символы (прописные буквыA-Z, строчные буквыa-z, цифры 0-9 и знак подчеркивания «_»). Для обозначения операторов и пунктуации используются специальные символы («#», «*», «&», «+», «-», «/», «\», «,», «;»). В комментариях допускается использование символов русского алфавита «А-Я».
Имена – это созданные пользователем последовательности символов, используемые для обозначения объектов, переменных и процедур. Имя должно начинатьсяcбуквы, в нем можно использовать от 1 до 250 алфавитно-цифровых символов. При этом имена не должны совпадатьcключевыми словамиGPSSиcСЧА. Следует отметить, чтоGPSSWorldне различает регистр алфавита.
PLUS-выражение – это комбинация одного или нескольких элементов, называемых факторами. Выражения строятсяcиспользованием операторов и вызовов процедур, обрабатывающих факторы. Выражения могут использоваться вPLUS-процедурах и в операндах операторовGPSS. Если выражение используется в операндахGPSS-блоков, то оно должно записываться в круглых скобках.
Типы данных. Переменные пользователя, элементы матриц, ячейки, параметры транзактов могут иметь значения различных типов данных. ВGPSSWorldиспользуются три основных типа данных:
целочисленный (Integer) – это 32-х битовые двоичные числа. Если при выполнении арифметической операции происходит переполнение целочисленного значения, производится автоматическое преобразование его в вещественное;
вещественный (Real) – это числаcплавающей точкой двойной точности. Для представления мантиссы используется 15 десятичных разрядов, А для порядка – значения в интервале от – 306 до 306;
строковый (String) – это последовательность символовASCII; строки не ограничены в размерах (максимальная их длина определяется параметрами настройкиEdit/Setting.../Simulation).
Выражения могут быть вычисляемыми, численно вычисляемыми, вычисляемыми в виде строки.
Факторы. Факторы – это основные элементы выражений, которые в свою очередь используются в операндах операторовGPSSиPLUS-процедурах.
Факторами выражений GPSSмогут быть:
1) строковые константы;
2) вещественные константы;
3) целочисленные константы;
4) имена;
5) элементы PLUS-матрицы;
6) обращения к процедурам (значения, возвращаемые процедурами);
7) стандартные числовые атрибуты.
Для объединения факторов в выражение используются операторы и вызовы процедур.
Операторы. В табл. 4.48 представлены арифметические операторы, используемые в выраженияхGPSSWorld, перечисленные в порядке убывания их приоритетов.
Таблица 4.48
Оператор | Действие | Результат | Унарный/бинарный (количество операндов) |
– | Отрицание | Аддитивная инверсия | Унарный |
^ | Возведение в степень | Арифметический показатель степени | Бинарный |
NOTили | Инверсия | 1 (TRUE) или О (FALSE) | Унарный |
AND | Логическое И | 1 (TRUE) или О (FALSE) | Бинарный |
OR | Логическое ИЛИ | 1 (TRUE) или О (FALSE) | Бинарный |
G или > | Больше | 1 (TRUE) или О (FALSE) | Бинарный |
Lили < | Меньше | 1 (TRUE) или О (FALSE) | Бинарный |
Еили = | Равно | 1 (TRUE) или О (FALSE) | Бинарный |
NE или /= | Не равно | 1 (TRUE) или О (FALSE) | Бинарный |
LE или <= | Меньше или равно | 1 (TRUE) или О (FALSE) | Бинарный |
GEили => | Больше или равно | 1 (TRUE) или О (FALSE) | Бинарный |
# или * | Умножение | Арифметическое произведение | Бинарный |
/ | Деление | Арифметическое частное | Бинарный |
\ | Целочисленное деление | Целочисленное частное | Бинарный |
@ | Деление по модулю | Целочисленный остаток | Бинарный |
+ | Сложение | Арифметическая сумма | Бинарный |
– | Вычитание | Арифметическая разность | Бинарный |
Все арифметические операторы автоматически преобразуют строковые операнды в числовые значения.
Перенастройку некоторых операторов можно выполнить через пункт меню Edit/Setting.. /Simulation.
К операторам языка PLUSтакже относятся:
PROCEDURE – определяетPLUS-процедуру;
EXPERIMENT – определяетPLUS-эксперимент;
TEMPORARY – определяет и ограничивает область действия локальных переменных пользователя и локальных матриц (существующих только во время вызова конкретной процедуры);
BEGIN/END составной оператор, создает блокPLUS-операторов;
присваивание – предназначен для изменения значений переменных;
вызов процедуры – вызывает библиотечную процедуру;
помеченный оператор – класс операторов, начинающихсяcметки;
IF/THEN – условный оператор, проверяет выражение и, если результат равен «TRUE» (истина), выполняет действие;
IF/THEN/ELSE– условный оператор проверяет выражение и в зависимости от результата производит то или иное действие;
WHILE/DO – оператор цикла, несколько раз выполняет действие;
GOTO – оператор безусловного перехода, передает управление к метке внутри процедуры;
RETURN – останавливает выполнение процедуры и возвращает результат ее выполнения (после чего память, используемая процедурой, освобождается).
Процедуры языка PLUSмогут записываться в любом месте модели (кроме тела другой процедуры). Остальные операторыPLUSмогут появляться только внутри оператораPROCEDURE.
Различают процедуры пользовательские и встроенные (библиотечные). Пользовательские процедуры обычно используются для изменения значений глобальных переменных и поименованных величин или для вычисления выражения и выдачи результата. В первом случае результат вычисления не требуется. Во втором – требуется, в этом случае обязательно наличие оператора возвратаRETURN. Результат, выдаваемыйPLUS-процедурой, используется в операндах или другихPLUS-выражениях. Если в оператореRETURN не задано какое-либо выражение или в процедуре отсутствует оператор возвратаRETURN, то возвращается значение 0.
Для определения PLUS-процедуры необходимо поместить операторPROCEDURE в файл модели и выполнить транслирование оператора вместеcмоделью или передать операторPROCEDURE процессу моделирования в интерактивном режиме. После этого уже определеннуюPLUS-процедуру можно вызывать при вычислении выражений или вPLUS-операторах присваивания.
Если процедура используется более, чем в одной модели, то ее можно сохранить в исходном файле, называемом библиотекой процедур пользователя. КомандойINCLUDE можно включать эту библиотеку в каждую модель, в которой будет использоваться данная процедура.
Эксперимент – это особая разновидностьPLUS-процедуры пользователя. Для ее определения используется операторEXPERIMENT. Эта процедура применяется для управления несколькими повторяющимися имитациями.
Эксперименты обычно используются совместно cбиблиотечной процедуройDoCommand() для управления процессом моделирования, А такжеcбиблиотечной процедурой дисперсионного анализаANOVA для анализа результатов моделирования. Обычно результаты эксперимента записываются в глобальную матрицу, которая передается процедуреANOVA. Существует возможность автоматически создавать отсеивающие и оптимизирующие эксперименты при помощи генераторов экспериментов.
Эксперимент вызывается только командой CONDUCT, которую можно загрузитьcпомощью функциональной клавиши.
Эксперименты и обыкновенные процедуры, непосредственно или косвенно вызываемые экспериментом, могут использовать библиотечную процедуру DoCommand() для выполнения операторовGPSS, включая команды и блоки.
Библиотека процедур – это множествоPLUS-процедур. Существует два типа библиотек:библиотека пользователя, представляющая собой совокупность процедур пользователя, ивстроенная библиотека GPSSWorld, содержащая готовые к использованию строковые и математические процедуры. Для того, чтобы процедуру можно было использовать вPLUS-выражении, она должна находиться в библиотеке процедур.
Встроенная часть библиотеки содержит процедуры, которые могут быть разбиты на следующие группы:
Обслуживающие процедуры – процедуры, используемые для управления прогонами имитаций и анализа экспериментов.
1. Процедура DoCommand. Транслирует строку аргумента и передает результат трансляции выполняющейся модели. Эта процедура может вызываться только из экспериментов и процедур, вызванных из экспериментов.
2. Процедура ANOVA. Проводит многофакторный дисперсионный анализ, создает таблицуANOVA, таблицу описательных статистик и выводит эти данные в журнал сессии.
3. Процедура Exit() завершает сеанс работыcGPSSWorld– останавливает процесс моделирования и закрывает все окна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) – числоe, возведенное в степень аргумента;
INT(Expression) – выделение целой частиcотбрасыванием дробной части;
LOG(Expression) – натуральный логарифм;
SIN(Expression) – синус;
SQR(Expression) – квадратный корень;
TAN(Expression) – тангенс.
Вероятностные распределения процедуры теоретических вероятностных распределений (см. параграф 4.13).
Строковые процедуры выполняют операции со строками:
Align(InsertString, SourceString, Offset) – вставляет одну строку в другуюcвыравниванием по правому краю;
Catenate(Stringl, String2) – производит объединение строк;
Copies(SourceString, Count) – создает одну строку из нескольких копий исходной;
Datatype(Datum) – возвращает строку, содержащую тип данных аргумента;
Find(TestString, SourceString) – вычисляет смещение одной строки, содержащейся в другой строке;
Left(SourceString, MaxCount) – возвращает левую часть заданной строки;
Length(SourceString) – возвращает количество символов в строке;
Lowercase(SourceString) – переводит все прописные буквы в строке в строчные;
Place(InsertString, SourceString, Offset) – вставляет одну строку в другуюcвыравниванием по левому краю;
PolyCatenate(Stringl, Stringl,...) – производит объединение двух или более строк;
Right(SourceString, MaxCount) – возвращает правую часть заданной строки;
String(Datum) – преобразует данные в их строковый эквивалент;
StringCompare(Stringl, String2) – сравнивает две строки;
Substring(SourceString, Offset, MaxCount) – возвращает подстроку заданной строки;
Trim(SourceString) – удаляет начальные и конечные пробелы;
Uppercase(SourceString) – – переводит все строчные буквы в строке в прописные;
VaIue(Datum) – возвращает числовой эквивалент строки;
Word(SourceString, WordNumber) – возвращает заданное слово строки.
Процедуры запроса возвращают информацию о состоянии транзакта, находящегося в модели. К ним относятся такие процедуры:
QueryXNExist(TransactionNumber) – возвращает 1, если транзакт существует в модели, иначе – 0;
QueryXNParameter(TransactionNumber, Parameter) – возвращает значение параметра транзакта. Если искомого параметра не существует, происходит останов по ошибке;
QueryXNAssemblySet(TransactionNumber) – возвращает номер семейства, к которому принадлежит транзакт;
QueryXNPriority(TransactionNumber) – возвращает приоритет транзакта в виде целого числа;
QueryXNMl(TransactionNumber) –возвращает время входа транзакта в систему.
- Предисловие
- Введение
- Глава 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