Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КНИЖКА_Моделювання систем у GPSS World.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.15 Mб
Скачать

4.4.9. Арифметичні змінні й арифметичні вирази

Арифметичні змінні визначаються перед початком моделювання.

Цілі арифметичні змінні в GPSS World визначаються командою VARIABLE, а дійсні арифметичні змінні командою FVARIABLE. Формати команд:

Name VARIABLE A

Name FVARIABLE A

Операнд А – вираз, що задається користувачем для обчислення значень змінної, а Name – назва арифметичної змінної.

Наприклад, запис

23 VARIABLE Q3+5

означає, що арифметична змінна під номером 23, яка у подальшому імену­ється V23, дорівнює сумі числа вимог у черзі під номером 3 і константи 5.

Посиланням на арифметичну змінну є V$назва, або Vj, де j – номер змінної. Символічна назва може бути замінене номером (додатним цілим числом) шляхом використання команди EQU. Наприклад:

Nom EQU 5

Nom VARIABLE X$10/MX$Vtm(3,P2)

Тепер на арифметичну змінну Nom можна посилатися так: V5.

Значення арифметичної змінної може використовуватися в такий спосіб:

  • як операнд; у цьому випадку значення арифметичної змінної може представляти: номери об'єкта j та j логічного атрибута (блок GATE); номер параметра транзакту (блоки ASSIGN, INDEX, LOOP, MARK, SPLIT); значення атрибута;

  • як аргумент функції;

  • як значення залежної змінної атрибутивної функції;

  • як аргумент таблиці;

  • як операнд іншої арифметичної змінної або булевої змінної.

Наведемо приклади арифметичних виразів:

Has VARIABLE R$Nak+S$Nak

Мmm VARIABLE Q$Park-Q$Rox

Rаk VARIABLE P1+Q$Ful/14

Vtb VARIABLE N$Ewm@10

У першому прикладі величина змінної Has дорівнює сумі ємності, що залишилася, і поточного вмісту пам'яті Nak. У другому прикладі змінна Мmm визначається як поточний вміст черги Park мінус поточний вміст черги Rox. У третьому прикладі змінна Rаk підраховується спочатку діленням поточного вмісту черги Ful на 4, а потім додаванням результату до значення параметра Р1 активного транзакта. У четвертому прикладі Vtb – лічильник числа входів у блок з назвою Ewm за модулем 10.

Обчислювальні вирази складаються з комбінації СЧА, констант, математичних операторів і бібліотечних функцій. Може бути задане будь-яке число довільних комбінацій. Вирази аналізуються зліва направо згідно ієрархії операторів і правил елементарної алгебри.

Значення арифметичного виразу обчислюється, коли активний тран-закт входить у блок, оператор якого серед своїх операндів містить одне або більше посилань на арифметичні змінні. Обчислені значення мають дійсний тип. У GPSSW проміжні значення і СЧА не округлюються. Ця операція здійснюється за вимогою розробника з використанням функції INT (A).

Наведені нижче приклади характеризують розбіжність результатів, отриманих обчисленням змінних із плаваючими й фіксованою крапками:

Dvd1 FVARIABLE 10#(7/3)

Dvd2 VARIABLE 10#(7/3)

Значення змінної Dvd1 дорівнює 13, оскільки константа 10 буде помно­же­на на 1,34 і від результату 13,4 буде взята ціла частина. Змінна Dvd2 дорів­нює 10, оскільки результат проміжної операції 1,34 буде закруглений до 1.

4.4.10. Булеві змінні

Булева змінна – це логічний вираз, складений з різних СЧА, у тому числі й інших булевих змінних. Вони зозволяють приймати рішення залежно від значень СЧА істану об’єктів шляхом використання одного виразу.

Булева змінна визначається командою BVARIABLE у такому форматі:

Name BVARIABLE A

Тут Name – назва булевої змінної, котра може бути замінено номером за допомогою команди EQU. Операнд А – це логічний вираз.

Булеві вирази можуть бути представлені комбінаціями стандартних числових атрибутів, булевих змінних, знаків булевих операцій та умовних операторів. Вираз може містити бібліотечні функції й Plus-процедури. Булеві вирази приймають одне з двох значень: 1 (істина) або 0 (хибна).

Існують три типи операторів для роботи з логічними змінними: логічні, булеві та оператори відношення.

Логічні оператори пов'язані з об'єктами апаратної категорії й використовуються для визначення стану цих об'єктів, зокрема багатоканальних пристроїв, логічних класів. Зокрема, є такі логічні оператори (j – описує номер або назву):

  • FVj дорівнює 1, якщо пристрій j доступний, інакше – 0;

  • FIj дорівнює 1, якщо пристрій j обслуговує переривання, інакше – 0;

  • SFj дорівнює 1, якщо БКП j заповнений повністю, інакше – 0;

  • SEj дорівнює 1, якщо БКП j порожній, інакше – 0;

  • SVj дорівнює 1, якщо БКП j доступний, інакше – 0;

  • NUj дорівнює 1, якщо пристрій не використовується, інакше – 0;

  • Uj дорівнює 1, якщо пристрій використовується, інакше – 0;

  • LRj дорівнює 1, якщо логічний ключ j виключений, інакше – 0;

  • LSj дорівнює 1, якщо логічний ключ j включений, інакше – 0.

Наприклад:

Vbn BVARIABLE FV$Kan1

Dfg1 BVARIABLE SF$Buf2

Rty BVARIABLE SV$Pusk

Asdf BVARIABLE LS5

У першому прикладі булева змінна Vbn дорівнює 1, якщо пристрій Kan1 доступний, і – 0, якщо не доступний. У другому прикладі булева змінна Dfg1 рівна 1, якщо пристрій Buf2 заповнений повністю. У третьому прикладі бу­ле­ва змінна Rty дорівнює 1, якщо пристрій Pusk є доступним. У четвертому прик­ла­ді булева змінна Asdf рівна 1, якщо логічний ключ з номером 5 включений.

Оператори відношення здійснюють алгебраїчне порівняння операндів, які можуть бути константами або СЧА. Вони мають такий вигляд: “G” – біль­ше, “L” – менше, “Е” – дорівнює, “NE” – не дорівнює, “LE” – менше або дорів­нює, “GE” – більше або дорівнює. Наприклад:

Rty BVARIABLE Avto'G'5

Asdf BVARIABLE Q2$'LE'10

Булева змінна Rty дорівнює 1, якщо змінна Avto більша 5, інакше дорівнює 0. У другому прикладі булева змінна Asdf дорівнює 1, якщо поточна довжина черги номер 2 менша або дорівнює значенню параметра 10 транзакта.

Булевих операторів є два: ORАБО й ANDІ. Оператор АБО перевіряє виконання хоча б однієї з умов, а оператор І вимагає виконання обох умов. Наприклад:

Kan1 BVARIABLE FI$Rem'OR'SF4

Kan2 BVARIABLE FI$Rem'AND'SF$Pogr

Булева змінна Kanl дорівнює 1, якщо виконується одна з умов: пристрій Rem обслуговує переривання або пам'ять з номером 4 не заповнена. Булева змінна Kan2 дорівнює 1, якщо виконуються обидві умови: пристрій Rem обслуговує переривання й пам'ять із назвою Pogr не заповнена.