Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Використання блоків та операторів в системі імітаційного моделювання GPSS World - файл 1.doc


Використання блоків та операторів в системі імітаційного моделювання GPSS World
скачать (275.5 kb.)

Доступные файлы (1):

1.doc276kb.03.12.2011 16:10скачать

содержание

1.doc


Міністерство освіти і науки, молоді та спорту України

Тернопільський національний економічний університет

Факультет комп’ютерних інформаційних технологій

Кафедра комп’ютерних наук
Лабораторна робота №5

«Використання блоків та операторів в системі імітаційного моделювання GPSS World»

з дисципліни:

«Моделювання системи»
Виконав:

Студент групи ПЗАС-32

Перевірив:

Марценюк Є. О.

Тема: Використання блоків та операторів в системі імітаційного моделювання GPSS World.

Мета: Вивчити та описати базові блоки та оператори системи імітаційного моделювання GPSS World.

  1. ^ Коротко основні теоретичні відомості:

Мова GPSS містить словник та граматику, за допомогою яких легко можуть бути розроблені точні моделі систем певного класу. Відповідно до правил мови розробляється текст програми, який за допомогою будь-якого текстового редактора зберігається на диску у форматі ASCII  файлу. Машинна програма (транслятор) виконує модель, написану на мові GPSS, надаючи тим самим користувачу можливість проведення експериментів з цією моделлю на ЕОМ. Транслятор GPSS є інтерпретатором, тобто виконання програми здійснюється одночасно з її трансляцією.
^ 1.1. Правила оформлення програми на GPSS.

Початкова програма на мові GPSS, як і програма на будь-якій мові програмування, є послідовністю операторів. Оператори GPSS/PC записуються і вводяться в ЕОМ в наступному форматі:

номер_стрІЧКИ МІТКА операція операнди ; коментарі

В деяких версіях системи (у тому числі і в системі GPSS World) нумерація рядків програми виконується автоматично і в текст програми номера рядків включати не вимагається. Крім того, в деяких GPSS системах коментар відділяється від тексту програмного рядка не крапкою з комою (символ “;”), а знаком оклику (символ “!”). Окремі оператори можуть мати поле “МІТКА” для посилання на ці оператори в інших операторах. Якщо такі посилання відсутні, то цей елемент оператора не є обов'язковим.

У полі “операція” записується ключове слово (назва оператора), яке вказує на конкретну функцію, що виконується оператором. Це поле оператора є обов'язковим. У деяких операторів поле операції включає також допоміжний операнд.

У полях “операнди” записується інформація, яка уточнює та конкретизує виконання функції, визначеної в полі операції. Ці поля залежно від типу операції містять до семи операндів, розташованих в певній послідовності. Операнди позначаються звичайно першими буквами латинського алфавіту від А до G. Деякі оператори взагалі не мають операндів, а в деяких операнди можуть бути опущені, при цьому встановлюються їх стандартні значення. При записі операндів використовується позиційний принцип: пропуск операнда відзначається комою.

Поле “коментарі” є необов'язковим. У разі присутності коментарів, вони відділяються від поля операндів крапкою з комою (GPSS/PC) або знаком оклику. В системі GPSS/PC в текст коментарів не допускається включати символи кирилиці.

У випадку, якщо коментар займає рядок повністю (в рядку немає операторів, які повинні виконуватися при “прогоні” моделі), в першій позиції рядка ставиться символ “*”. Приймаючи до уваги, що програми на GPSS достатньо важкі для сприйняття, при виконанні учбових завдань слід забезпечувати коментарями кожну включену в програму конструкцію.

Приклад програми на мові GPSS наведений нижче:

^

*Рядок відведений під коментар

MET1 GENERATE  10,5,,6 ! Далі по рядку йде коментар


Оператори GPSS записуються, починаючи з першої позиції, у довільному форматі, тобто окремі поля розділяються довільною кількістю пропусків. В ранніх версіях мови GPSS застосовувалася “бланкова форма” запису програм, тобто вимагалося враховувати номери позицій (“колонок”), в яких розміщувалися різні елементи запису. При введенні початкової програми в інтегрованому середовищі GPSS/PC розміщення окремих полів операторів з певною кількістю інтервалів між ними проводиться автоматично.
^ 1.2. Блоки створення і знищення транзактів

Для створення і знищення транзактів в системі GPSS використовуються блоки GENERATE (породження транзактів), TERMINATE (знищення транзактів), SPLIT і ASSEMBLE (управління копіями транзактів).

GENERATE - блок, через який транзакти входять в модель (породжуються). В одній моделі може бути декілька таких блоків. Необхідну для даного блоку інформацію задає розробник за допомогою операндів. Відомості про ці операнди зведені в таблиці 1.

Операнди А і В в блоці є основними (їх наявність обов'язково), операнди С,D і E - додаткові. Всі ці операнди не обов'язково повинні бути задані явно. Коли операнди задані у вигляді констант, вони повинні бути ненегативними цілими числами. В деяких версіях системи для операндів А і В допускаються також дійсні числа. Цілі числа повинні мати максимум 5 цифр, дійсні - 8 цифр, причому значення операнда А не повинно бути менше В.

Таблиця 1 - Операнди блоку GENERATE

Операнд

Значення

Значення по замовчуванню

А

Середній інтервал часу породження

Нуль

B

Половина поля допуску рівномірно розподіленого інтервалу (половина розмаху інтервалів часу прибуття)

Нуль

С

Зсув інтервалів (момент часу, у який в блоці повинен з'явитися перший транзакт)

Зсув відсутній

D

Обмежувач (граничне значення загального числа транзактів, які можуть увійти до моделі через даний блок протягом часу моделювання. Коли це число досягнуте, даний блок GENERATE перестає бути активним)

Нескінченість

E

Рівень пріоритету (рівень або клас пріоритету кожного з транзактів, що входять в модель через даний блок. Всього існує 128 рівнів, які задаються числами від 0 до 127)

Нуль

Приклади використання блоку GENERATE:

^

GENERATE 15,3


Тут задані операнди А і В (15 і 3 відповідно). Такий запис означає, що інтервал часу прибуття рівний 15 плюс-мінус 3, тобто інтервалом часу прибуття є випадкове число з середнім значенням, рівним 15, і полем допуску, рівним 6 (оскільки 3 - це половина поля допуску), тобто інтервал може бути виражений числами 12, 13, 14, 15, 16, 17 і 18.

^

GENERATE 3,3,10,5


Тут не заданий тільки операнд Е. В цьому випадку моментом першого приходу є значення 10. Після цього інтервали часу прибуття знаходять з рівномірного розподілу 33 (інакше кажучи, від 0 до 6 включно). Проте тільки перші п'ять транзактів повинні увійти до моделі через цей блок.

^

GENERATE 5,,2


Тут задані операнди А і С. Час першого прибуття задано числом 2. Після цього прихід транзактів здійснюватиметься через кожні п'ять одиниць часу. Оскільки ніякого значення не використано між двома комами, це значить, що операнд В заданий по замовчуванню, а операнди D і Е відсутні.

З моделі транзакти потрапляють в блок TERMINATE. У моделі може бути будь-яке число цих блоків. Інформація для цього блоку задається за допомогою одного операнда - операнд А. Операнд А задає величину, яка повинна відніматися з спеціального лічильника (лічильник завершень) кожного разу, коли транзакт входить в блок TERMINATE. Якщо операнд А не заданий, то по замовчуванню мається на увазі значення 0. В цьому випадку вхід транзакта в такий блок не викликає зменшення змісту лічильника. При досягненні змістом лічильника нуля моделювання завершується. Значення лічильника задається на початку моделювання за допомогою оператора START таким чином: START А. В приведеному записі значення операнда А відповідає значенню лічильника.

Для призначення пріоритету транзакта використовується операнд Е блоку GENERATE. Проте для цих цілей може використовуватися і спеціальний блок PRIORITY. Формат даного блоку: PRIORITY А. В приведеному записі операнд А - значення пріоритету, привласнюваного транзакту, що увійшов до блоку. Пріоритет транзакта у блоці PRIORITY виражається цілим позитивним числом в інтервалі від 0 до 99 999.
^ 1.3. Блоки, що описують роботу обладнання

Для опису роботи обладнання в мові GPSS використовуються блоки SEIZE і RELEASE (блоки заняття вільних обслуговуючих апаратів), PREETMP, RETURN (блоки захоплення приладів), ADVANCE (блок затримки).

Блоки SEIZE і RELEASE. В процесі переміщення по моделі СМО транзакти займають прилади. Для того, щоб зайняти прилад, транзакт входить (або намагається увійти) в відповідний блок, що описує прилад. Цей блок повинен володіти наступними властивостями:

  • якщо прилад вже використовується (зайнятий іншим транзактом), транзакт не може увійти до блоку, і він повинен чекати в черзі;

  • якщо прилад не використовується, транзакт може увійти до блоку. У результаті відбудеться зміна статусу приладу з “незайнято” в “зайнято”.

Для моделювання приладів подібного типу використовується блок SEIZE. У результаті входу транзакта в блок SEIZE вказаний в ньому пристрій стає зайнятим даним транзактом і залишається в цьому стані до тих пір, поки цей транзакт не пройде через блок RELEASE, вказуючий на цей пристрій. Один транзакт може зайняти будь-яке число пристроїв, але кожен пристрій у будь-який момент часу може бути зайнятий лише одним транзактом.

Для оператора SEIZE, використаного в програмі, обов'язково повинен бути вказаний операнд А. Значенням операнда А є ім'я займаного приладу. Ім'я приладу може бути символічним або числовим. Якщо приладу привласнюється символічне ім'я, то воно має складатися з трьох-п'яти алфавітно-цифрових символів, причому перші три символи повинні бути буквами. Якщо приладу привласнюється числове ім'я, то числа повинні бути позитивними і цілими. Найбільше дозволене число приладів залежить від об'єму пам'яті, доступної системі GPSS.

Операнду В оператора SEIZE можуть бути вказані символи “Q” або “L”. Символ “Q” використовується в тих випадках, коли потрібно зібрати статистику про середню довжину черги або про середній час очікування. Так, запис SEIZE point,Q означає, що черга перед об'єктом “point” не створюватиметься, але в процесі моделювання буде збиратись і роздруковуватись статистика. Якщо як операнд У вказаний символ “L”, то блок стає “логічним блоком” SEIZE. Це значить, що якщо прилад А зайнятий, то транзакт проходить через цей блок. Він не чекає перед блоком поки звільниться прилад.

Приклад використовування блоку SEIZE:
^


SEIZE Stan1, Q ! Зайняти Stan1 (верстат №1)

ADVANCE 10,5 ! Виконати обробку

RELEASE Stan1 ! Звільнити Stan1

SEIZE Stan2 ! Зайняти Stan2 (верстат №2)

SEIZE Robot ! Зайняти Robot

ADVANCE 14 ! Виконати обробку

RELEASE Stan2 ! Звільнити Stan2

^

RELEASE Robot ! Звільнити Robot


Проходження транзактів через цю ділянку програми моделює обслуговування заявок спочатку приладом Stan1 в інтервалі від 5 до 15 одиниць часу, а потім одночасно двома приладами Stan2 і Robot протягом 14 одиниць часу.

При  спробі звільнити вільний прилад, системою видається повідомлення про помилку і процес моделювання зупиняється. Те ж саме відбувається, якщо транзакт намагається звільнити прилад, зайнятий іншим транзактом.

Блок затримки транзактів ADVANCE. Зручним засобом моделювання різного роду обслуговування, що триває деякий проміжок часу, є затримка транзакту, яка виконується в GPSS за допомогою блоку ADVANCE.

Транзакт займає прилад (оператор SEIZE) для того, щоб негайно почати на ньому обслуговування. Протягом часу обслуговування транзакт повинен припинити рухатися по моделі. Блок ADVANCE використовується для затримки просування транзакта протягом деякого інтервалу часу. Звичайно цей інтервал задається випадковою змінною. Інформація, необхідна для опису часу обслуговування і його розподілу, задається операндами А і В.

Операнд А використовують для визначення середнього часу, який транзакт, що входить в блок, проведе в ньому. Операнд В використовують для встановлення половини поля допуску. Значення цих двох операндів по замовчуванню рівні нулю. Постійний час затримки вказується в полі А, операнд B при цьому залишається порожнім. Приклад програмної конструкції, в якій використовується блок затримки ADVANCE:

^

SEIZE Sbor1

ADVANCE 30,5

RELEASE Sbor1


Такий запис означає, що для кожного транзакта, що входить в цей блок, можливі значення інтервалів часу знаходяться в межах 25-35 одиниць часу включно. Наприклад, транзакт увійшов до блоку ADVANCE (тобто зайняв прилад обслуговування Sbor1) у момент часу, рівний 134, а “розіграним значенням” з рівномірного розподілу 305 є 31. У подібному випадку транзакт залишатиметься в блоці ADVANCE до моменту часу, рівного 134+31=165. Протягом цього часу прилад Sbor1 залишатиметься у стані “зайнятий”.
^ 1.4. Керуючі оператори GPSS

В мові GPSS існує ряд операторів, які не використовуються для визначення блоків. Оператори цього класу служать для задання режимів моделювання і керування роботою інтерпретатора GPSS

Оператор SIMULATE (МОДЕЛЮВАТИ). Якщо розробник має намір виконати прогін моделі, то, звичайно, оператор SIMULATE ставиться у першому рядку програми. Оператор має єдиний операнд А (ціле позитивне число), яке вказує, скільки разів виконується програма. Значення операнда по замовчуванню рівне  1.

Оператор START (ПОЧАТИ). Моделювання почнеться тільки після того, як інтерпретатором в тексті моделі буде знайдений оператор START. Тому цей оператор повинен бути поміщений в кінці програми (після повного визначення моделі). Операнд А задає початкове значення лічильника числа завершень (звичайно приймається рівним одиниці). Як операнд В, може використовуватися запис “NP”. В цьому випадку після закінчення моделювання не роздруковуватиметься статистика.

Оператор END (ЗАКІНЧИТИ). Оператор END розміщується в останньому рядку програми, після вказівки всіх команд управління прогонами моделі. Він вказує інтерпретатору повернути керування в операційну систему. Оператор END не має операндів і стоїть після оператора START.

Оператор CLEAR (ОЧИСТИТИ). У деяких випадках розробнику необхідно виконати послідовно декілька прогонів моделі змінюючи її параметри. Оператор CLEAR дозволяє об'єднати всі ці прогони в один етап моделювання.

Припустимо, потрібно виконати три прогони моделі при різних значеннях операнда В в блоці GENERATE. Використання оператора CLEAR виглядає таким чином :

KEY GENERATE,,,4 ! KEY - символічне ім'я блоку

... ! повний опис моделі

...

...

START 1 ! почати перший прогін

^

KEY GENERATE,,,5 ! зміна для другого прогону

CLEAR ! очищення для другого прогону

START 1 ! почати другий прогін і т.д.

KEY GENERATE,,,6

CLEAR

START 1

END


Оператор RESET (СКИДАННЯ). Оператор RESET встановлює значення всіх стандартних числових атрибутів (СЧА) в їх початкові значення. Виняток становлять: випадкові числа; абсолютний час; поточний список кожного блоку та всі С-величини.

^ Завдання для виконання:

  1. Перед виконанням роботи ознайомитись з теоретичними відомостями.

  2. Описати вказаний блок, згідно варіанту, використовуючи засоби довідки GPSS. До опису входить: опис всіх можливих параметрів з прикладами їх практичного застосування. У лабораторній роботі повинні бути 2-5 копій екрану.

  3. Привести лістинг програми, в якій використовується описаний блок. Представити результати моделювання програми.

^ Результат виконаного завдання:

Варіант №7 – блок GATE {LS, LR}

Блок GATE використовується для перевірки статусу приладів, перемикачів без зміни їх стану.

Операнд А блоку GATE вказує ім'я перевіряємого логічного перемикача. Допоміжним оператором є логічний покажчик, який показує необхідний стан логічного перемикача для того, щоб перевірка була істинною. Якщо використовується логічний покажчик LS, то перевірка істинна в разі, коли перемикач «встановлено», в іншому випадку перевірка помилкова. Коли в якості логічного покажчика використовується LR, то перевірка істинна при «скинутому» перемикачі і помилкова в іншому випадку. Операнд В необов'язковий. Якщо операнд В не використовується, то перевірку проводять у режимі відмови. Якщо перевірка в режимі відмови не буде істинною, то клапан закритий. Якщо транзакт виявляє, що клапан закритий, він затримується в блоці, що передує блоку GATE.

Існують також інші покажчики, але вони в даній лабораторній роботі не використовуються (згідно варіанту).

Згідно із даним варіантом створюємо лістинг програми:

* Oleg Zarevennyi. dfmbrains pls. 2010
* in this model we are using seconds as a time
simulate 2; repeat program 2 times

generate 5,1; create unit every 4-6 seconds.
gate LR check,sec; pass if "check" is off (LR), alt. LS-On. Or send to sec.
recheck seize robot1; unit are destroying by two robots together

seize robot2; robot number two

split 2,sec; copy by two and send to security

advance 2,1; processing, delay by 1-3 seconds.

release robot1; unit left first robot

release robot2; unit left second robots
logic S check; S - on, R - off and invert is I
split 5,recheck; creates Transactions, copy by 5 and send them to the robots.

advance 20,15; delay 5-35 sec.
sec seize security; unit at security check

advance 4; security checking for 4 sec.

release security; unit are clear, left security check point
assemble 6; destroy units

advance 50,50; delay after security

terminate 2; kill 2 units (start 100 - 2)

start 100; NP - means don't show (create) report in report window
За допомогою пункту головного меню: Command/Create Simulation (або Command/Start) створюємо, або запускаємо модель на виконання (Рис. 1).



Рис. 1.

Результат даної симуляції поданий нижче:

GPSS World Simulation Report - works1.7.1

Wednesday, November 17, 2010 11:55:59
^ START TIME END TIME BLOCKS FACILITIES STORAGES

0.000 1435.576 17 3 0

NAME VALUE

CHECK 10000.000

RECHECK 3.000

ROBOT1 10001.000

ROBOT2 10002.000

SEC 12.000

SECURITY 10003.000

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

^ 1 GENERATE 286 0 0

2 GATE 286 239 0

RECHECK 3 SEIZE 710 0 0

4 SEIZE 710 0 0

5 SPLIT 710 0 0

6 ADVANCE 710 1 0

7 RELEASE 709 0 0

8 RELEASE 709 0 0

9 LOGIC 709 0 0

10 SPLIT 709 0 0

^ 11 ADVANCE 709 611 0

SEC 12 SEIZE 358 0 0

13 ADVANCE 358 1 0

14 RELEASE 357 0 0

15 ASSEMBLE 357 45 0

16 ADVANCE 52 2 0

17 TERMINATE 50 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

^ ROBOT1 710 0.996 2.014 1 1054 0 0 0 2836

ROBOT2 710 0.996 2.014 1 1054 0 0 0 0

SECURITY 358 0.996 3.994 1 777 0 0 0 2045

LOGICSWITCH VALUE RETRY

CHECK 1 0

FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE

5238 0 1436.027 5238 0 1

1054 0 1436.063 1 6 7

1045 0 1436.260 1 11 12

777 0 1437.685 777 13 14

1032 0 1438.456 1 11 12

1031 0 1438.588 1 11 12

1037 0 1441.887 1 11 12

1047 0 1445.447 1 11 12

1038 0 1447.249 1 11 12

1046 0 1447.377 1 11 12

1052 0 1448.235 1 11 12

1051 0 1448.921 1 11 12

1044 0 1449.240 1 11 12

1053 0 1450.040 1 11 12

148 0 1492.229 1 16 17

784 0 1527.818 1 16 17
Знімки екрану із виконаним завданням (Рис. 2,3):



Рис.2



Рис.3

Висновок:

____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Тернопіль 2011



Скачать файл (275.5 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации