дивитися на реферати схожі на "Моделювання на GPSS" p>
ОСНОВИ МОДЕЛЮВАННЯ НА GPSS/PC p>
ЗМІСТ p>
ВСТУП ........ ............................................ 1 p>
1. ЗАГАЛЬНІ ВІДОМОСТІ ПРО GPSS/PC ................................. 2 p>
2. ОСНОВНІ БЛОКИ GPSS/PC І ПОВ'ЯЗАНІ З НИМИ ОБ'ЄКТИ ........ 6 p>
2.1. Блоки, пов'язані з транзактамі .................... 6 p>
2.2. Блоки, пов'язані з апаратними об'єктами .......... 13 p>
2.3. Блоки для збору статистичних даних ............. 15 p>
2.4. Блоки, що змінюють маршрути транзактов ............. 18 p>
2.5. Блоки, які працюють з пам'яттю ....................... 21 p>
2.6. Блоки для роботи зі списками користувача ......... 23 p>
3. УПРАВЛЯЮШІЕ ОПЕРАТОРИ GPSS/PC ............................ 25 p>
4. ДЕЯКІ ПРИЙОМИ КОНСТРУЮВАННЯ GPSS-МОДЕЛЕЙ ............ 42 p>
4.1. Непряма адресація ............................... 42 p>
4.2. Обробка одночасних подій ................... 44 p>
5. КОМАНДИ GPSS/PC І ТЕХНОЛОГІЯ РОБОТИ З ПАКЕТОМ ............ 47 p>
5.1. Завантаження інтегрованого середовища .................... 47 p>
5.2. Введення нової моделі ................................. 47 p>
5.3. Редагування тексту моделі ...................... 48 p>
5.4. Запис і зчитування моделі з диска ................ 49 p>
5.5. Прогон моделі і спостереження за моделюванням ...... 49 p>
5.6. Отримання та інтерпретація стандартного звіту ..... 53 p>
СПИСОК ЛІТЕРАТУРИ ........................................ ... 58 p>
ВСТУП p>
Процеси функціонування різних систем і мереж зв'язку можуть бути представлені тією чи іншою сукупністю систем масового обслуговування (СМО) - стохастичних, динамічних, дискретно-неперервним-рывных математичних моделей. Дослідження характеристик таких мо-делей може проводитися або аналітичними методами, або шляхом імітаційного моделювання [1-6]. P>
Імітаційна модель відображає стохастичний процес зміни дискретних станів СМО в безперервному часу у формі моделірующе-го алгоритму. При його реалізації на ЕОМ проводиться накопичення статистичних даних з тих атрибутів моделі, характеристики кото-яких є предметом досліджень. Після закінчення моделювання на-копленная статистика обробляється, і результати моделювання по-лучан у вигляді вибіркових розподілів досліджуваних величин або їх вибіркових моментів. Таким чином, при імітаційний моделюванні систем масового обслуговування мова завжди йде про статистичного імітаційного моделювання [5; 6]. P>
Складні функції моделює алгоритму можуть бути реалізовані засобами універсальних мов програмування (Паскаль, Сі), що надає необмежені можливості у розробці, налагодженні і використанні моделі. Однак така гнучкість купується ціною великих зусиль, що витрачаються на розробку та програмування дуже складних моделюючих алгоритмів, що оперують з списковим структурами даних. Альтернативою цьому є використання спе-ціалізірованних мов імітаційного моделювання [5-7]. P>
Спеціалізовані мови мають засоби опису структури та процесу функціонування моделюється системи, що значно об-легшає і спрощує програмування імітаційних моделей, оскільки основні функції моделює алгоритму при цьому реалізуються ав-томатіческі. Програми імітаційних моделей на спеціалізованих мовах моделювання близькі до описами модельованих систем природною мовою, що дозволяє конструювати складні імітаційно-ні моделі користувачам, які не є професійними програм-мист. P>
Одним з найбільш ефективних і поширених мов моді-воджується складних дискретних систем є в даний час мова p>
GPSS [1; 4; 7]. Він може бути з найбільшим успіхом використаний для моделювання систем, формалiзуються, у вигляді систем масового обслу-живания. Як об'єкти мови використовуються аналоги таких стан-дротяні компонентів СМО, як заявки, що обслуговують прилади, черги і т.п. Достатній набір подібних компонентів дозволяє конструюю-вати складні імітаційні моделі, зберігаючи звичну термінологію p>
СМО. P>
На персональних комп'ютерах (ПК) типу IBM/PC мова GPSS реалі-зовано в рамках пакета прикладних програм GPSS/PC [8]. Основний мо-дуль пакету являє собою інтегроване середовище, що включає крім транслятора з вхідної мови засоби введення і редактірова-ня тексту моделі, її налагодження і спостереження за процесом моделірова-ня, графічні засоби відображення атрибутів моделі, а також засоби накопичення результатів моделювання в базі даних і їх статистичної обробки. Крім основного модуля до складу пакету входить модуль створення стандартного звіту GPSS/PC, а також ряд до-полнітельних модулів і файлів. P>
У даному виданні, що складається з двох частин, викладаються основи моделювання систем та мереж зв'язку з використанням пакету GPSS/PC. p>
У першій частині розглядаються основні поняття і засоби GPSS/PC, прийоми конструювання GPSS-моделей і технологія роботи з пакетом. p>
Виклад матеріалу супроводжується невеликими навчальними прикладами.
Щодо детальний розгляд мови GPSS/PC викликано відсутністю в літературі навчального матеріалу з даної версії мови. p>
У другій частині розглядаються приклади GPSS-моделей різних систем і мереж масового обслуговування, що використовуються для формалізує - ції процесів функціонування систем і мереж зв'язку. Наводиться також ряд прикладів моделювання систем та мереж зв'язку з використанням GPSS/PC. Детально коментуються тексти GPSS-моделей і резуль-тати моделювання. P>
1. ЗАГАЛЬНІ ВІДОМОСТІ ПРО GPSS/PC p>
Вихідна програма на мові GPSS/PC, як і програма на будь-якій мові програмування, являє собою послідовність опе-ратора. Оператори GPSS/PC записуються і вводяться в ПК у такому форматі: номер _строкі ім'я операція операнди; коментарі p>
Всі оператори вихідної програми повинні починатися з номі-ра 0_строкі - цілого позитивного числа від 1 до 9999999. Пос-ле введення операторів вони розташовуються у вихідній програмі в відповідної з нумерацією рядків. Зазвичай нумерація проводиться з неко-менту, котрим кроком, відмінним від 1, щоб мати можливість додавання опе-ратора в потрібне місце вихідної программи.Некоторие оператори удо-бно вводити, не включаючи їх у вихідну програму. Такі оператори не залежать від номера рядка. P>
У цьому виданні при описі формату операторів і в прикладах моделей номери рядків будуть опускатися для кращої читання тексту. P>
Окремі оператори можуть мати ім'я для посилання на ці оператори в інших операторах. Якщо такі посилання відсутні, то цей елемент оператора не є обов'язковим. P>
У полі операції записується ключове слово (назва операторами-ра), що вказує конкретну функцію, виконувану даним оператором. P>
Це поле оператора є обов'язковим. У деяких операторів поле операції включає в себе також допоміжний операнд. P>
У полях операндів записується інформація, уточнююча і конк-ретізірующая виконання функції, визначеної в полі операції. Ці поля в залежності від типу операції містять до семи операндів, розташованих у певній послідовності і що позначаються звичайно першими літерами латинського алфавіту від A до G. Деякі оператори взагалі не мають операндів, а в деяких операнди можуть бути опущені, при цьому встановлюються їх стандартні значення (за замовчуванням). Під час запису операндів використовується позиційний принцип: пропуск операнда відзначається комою. P>
Необов'язкові коментарі у разі їх присутності відокремлюються від поля операндів крапкою з комою. Коментарі не можуть містити літер російського алфавіту. P>
Оператори GPSS/PC записуються, починаючи з першої позиції, у вільному форматі, тобто окремі поля розділяються довільним ко-лічеством пробілів. Під час введення вихідної програми в інтегрованому середовищі GPSS/PC розміщення окремих полів операторів з певною кількістю інтервалів між ними проводиться автоматично. P>
Кожен оператор GPSS/PC відноситься до одного з чотирьох типів: оператори-блоки, оператори визначення об'єктів, керуючі опера-тори і оператори-команди. p>
Оператори-блоки формують логіку моделі. У GPSS/PC є близько 50 різних видів блоків, кожен з яких виконує свою конкретну функцію. За кожним з таких блоків стоїть відповідна підпрограма транслятора, а операнди кожного блоку служать парамет-рами цієї підпрограми. P>
Оператори визначення об'єктів служать для опису пара-метрів деяких об'єктів GPSS/PC (про самих об'єктах мова піде далі) . p>
Прикладами параметрів об'єктів можуть бути кількість каналів у мно-гоканальной системі масового обслуговування, кількість рядків і стовпців матриці і т.п. p>
Керуючі оператори служать для управління процесом моделі-вання ( прогоном моделі). Оператори-команди дозволяють керувати роботою інтегрованого середовища GPSS/PC. Керуючі оператори і p>
оператори-команди зазвичай не включаються в початкову програму, а вводяться безпосередньо з клавіатури ПК у процесі інтерактив-ного взаємодії з інтегрованою середовищем. P>
Після трансляції вихідної програми в пам'яті ПК створюється так p>
звана поточна модель, яка є сукупністю різного типу об'єктів, кожен з яких представляє собою деякий набір чисел у пам'яті ПК, що описують властивості і поточний стан об'єкту. p>
Об'єкти GPSS/PC можна розділити на сім класів: динамічні, операційні, апаратні, статистичні, обчислювач-ні, що запам'ятовують і групуються. p>
Динамічні об'єкти, відповідні заявками в системах масового обслуговування, називаються в GPSS/PC транзактамі. Вони p>
"створюються" і "знищуються" так, як це необхідно за логікою моді-ли в процесі моделювання. З кожним транзактом може бути пов'язано довільне число параметрів, що несуть в собі необхідну інформа-цію про це транзакте. Крім того, транзакти можуть мати різні пріоритети. P>
Операційні об'єкти GPSS/PC, що називаються блоками, відповідають p>
операторам-блокам вихідної програми. Вони, як уже говорилося, формують логіку моделі, даючи транзактам вказівки: куди йти і що робити далі. Модель системи на GPSS/PC можна уявити сукупність-ністю блоків, об'єднаних відповідно до логіки роботи реаль-ної системи в так звану блок-схему. Блок-схема моделі p>
може бути зображена графічно, наочно показуючи взаємодію p>
блоків у процесі моделювання. P>
Апаратні об'єкти GPSS/PC - це абстрактні елементи, на ко - торие може бути розчленоване (декомпозіровано) обладнання реальної системи. До них відносяться одноканальні і багатоканальні устрій-ства і логічні перемикачі. Багатоканальне пристрій іноді називають пам'яттю. P>
Одноканальний і багатоканальні пристрої відповідають обслу-жива приладів в СМО. Одноканальне пристрій, який для стислості надалі будемо називати просто пристроєм, може обслужити-ти одночасно тільки один транзакт. Багатоканальне пристрій p>
(СКУ) може обслуговувати одночасно кілька транзактов. Логи-етичні перемикачі (ЛП) використовуються для моделювання двійкових станів логічного чи фізичного характеру. ЛП може знаходитися в двох станах: включено і вимкнене. Його стан може змінюватися в процесі моделювання, а також опитуватися для при-нятія певних рішень. P>
Статистичні об'єкти GPSS/PC служать для збору й обробки статистичних даних про функціонування моделі. До них відносяться черги і таблиці. P>
Кожна чергу забезпечує збір і обробку даних про транзак-тах, затриманих в будь-якій точці моделі, наприклад перед одн-нальним пристроєм. Таблиці використовуються для отримання вибіркових розподілів деяких випадкових величин, наприклад часу преба-вання транзакта в моделі. P>
До обчислювальним об'єктів GPSS/PC відносяться змінні (Аріф-метичних і Булевського) і функції. Вони використовуються для обчислюва-лення деяких величин, заданих арифметичними або логічними виразами або табличними залежностями. P>
Запам'ятовувальні об'єкти GPSS/PC забезпечують збереження в пам'яті ПК окремих величин, що використовуються в моделі, а також масивів таких величин. До них відносяться так звані зберігаються величини і матриці, що зберігаються величин. P>
До об'єкти групують класу відносяться списки користувачів та групи. Списки користувача використовуються для організації Очер-дей з дисциплінами, відмінними від дисципліни "раніше прийшов - раніше обслужений". Групи в даному виданні розглядатися не будуть. P>
Кожному об'єкту того чи іншого класу відповідають числові атрибути, що описують його стан в даний момент модельного вре-мени. Крім того, є ряд так званих системних атрибутів, p>
що відносяться не до окремих об'єктах, а до моделі в цілому. P>
Значення атрибутів всіх об'єктів моделі після закінчення моделювання p>
Виводяться в стандартний звіт GPSS/PC. Більша частина атрибутів дос-тупна програмісту і складає так звані стандартні число-ші атрибути (ВЧА), 0которие можуть використовуватися як опе-рандів операторів вихідної програми. Всі ВЧА в GPSS/PC є це-лимі числами. P>
Кожен об'єкт GPSS/PC має ім'я та номер. Імена об'єктів даються в різних операторах вихідної програми, а відповідні їм номери транслятор присвоює автоматично. Назва об'єкта пред-вляєтся собою що починається з букви послідовність літер латинського алфавіту, цифр та символу "підкреслення". При необхідності імені будь-якого об'єкта, крім імені блоку, можна поставити у відповідність будь-який номер за допомогою оператора опису EQU, що має такий вигляд: ім'я EQU номер p>
Блокам присвоюються їх порядкові номери у вихідній програмі p>
(непутать з номерами рядків !). p>
Для посилання 0на якої-небудь стандартний числовий атрибут некот-якого об'єкта відповідний операнд оператора вихідної програми записується одним із таких способів: p>
ВЧА $ ім'я ; p>
ВЧА j, де ВЧА - системне позначення (назва) конкретного стандар-тного числового атрибута даного об'єкта, а ім'я - ім'я об'єкта; j - номер об'єкта; $ - символ-розділювач. p>
Прогон поточної моделі, тобто власне моделювання, виконуємо-ється за допомогою спеціальної керуючої програми, яку називають симулятором (від англійського SIMULATE - моделювати, імітувати). p>
Робота GPSS-моделі під керуванням симулятора полягає в переміщення щении транзактов від одних блоків до інших , аналогічно тому, як у моделюється СМО переміщуються заявки, що відповідають транзактам. p>
У початковий момент часу в GPSS-моделі немає жодного тран-закта. У процесі моделювання симулятор генерує транзакти в певні моменти часу відповідно до тих логічними піт-ребностямі, які виникають в моделюється системі. Подібним же чином транзакти залишають модель в певні моменти часу в залежності від специфіки моделюється системи. У загальному випадку в мо-діли одночасно існує велике число транзактов, однак в кожний момент часу симулятор здійснює просування тільки ка-кого-небудь одного транзакта. P>
Якщо транзакт почав свій рух, він переміщується від блоку до блоку по шляху, написаним блок-схемою. У той момент, коли тран-закт входить в деякий блок, на виконання викликається підпрограма симулятора, що відповідає типу цього блоку, а після її виконан-ня, при якому реалізується функція даного блоку, транзакт "намагався-ється" увійти в наступний блок. Таке просування транзакта продовжуючи-ється до тих пір, поки не відбудеться одне з наступних можливих з-битій: p>
1) транзакт входить в блок, функцією якого є видалення транзакта з моделі; p>
2) транзакт входить в блок, функцією якого є затримка транзакта на якийсь певний час в моделі; p>
3) транзакт "намагається" увійти в наступний блок, проте блок p>
"відмовляється" вжити його. У цьому випадку транзакт залишається в тому блоці, де був, і пізніше буде повторювати свою спробу увійти в наступний блок. Коли умови в моделі зміняться, така спроба може виявитися успішною, і транзакт зможе продовжити своє перемі-щення по блок-схемі. P>
Якщо виникло одне з описаних вище умов, обробка даного p>
транзакта припиняється, і починається переміщення іншого транзакта. p>
Таким чином, виконання моделювання симулятором триває p>
постійно. p>
Проходячи через блоки моделі, кожен транзакт вносить вклад в со - держімое лічильників блоків. Значення цих лічильників доступні програмісту через ВЧА блоків: W - поточний зміст блоку і N - загальна кількість входів до блоку. P>
Кожне просування транзакта в моделі є подією, кото-рої має відбутися в певний момент модельного часу. Для того, щоб підтримувати правильну тимчасову послідовність подіютий, симулятор має таймер модельного часу, який ав-томатіческі коректується у відповідності з логікою, запропонованою моделлю. p>
Таймер GPSS/PC має такі особливості: p>
1) реєструються тільки цілі значення ( всі тимчасові інтер-вали в моделі зображуються цілими числами); p>
2) одиниця модельного часу визначається розробником моді-ли, що задає всі тимчасові інтервали в одних і тих же, обраних ним одиницях; p> < p> 3) симулятор не аналізує стан моделі в кожен дотримуюся-щий момент модельного часу (віддалений від поточного на одиницю модельного часу), а просуває таймер до моме-нту часу, коли відбувається найближчим така подія. p>
Значення таймера доступні програмісту через системні ВЧА C1 p>
(відносний час) і AC1 (абсолютна час). p>
Центральної завданням, що виконується симулятором, є визна-ня того, який транзакт треба вибрати такий для просування в моделі, коли його попередник припинив своє просування. З цією метою симулятор розглядає кожен транзакт як елемент деякий-го списку. У відносно простих моделях використовуються лише два основних списку: список поточних подій і список майбутніх подій. P>
Список поточних подій включає в себе ті транзакти, плановане час просування яких дорівнює або менше поточного модельного часу (до останніх відносяться транзакти, рух яких було заблоковано раніше). Він організовується в порядку спадання пріоритетів тов транзактов, а в межах кожного рівня пріоритету - в порядку надходження транзактов. P>
Список майбутніх подій включає в себе транзакти, плановане час просування яких більше поточного часу, тобто події, пов'язані з просуванням цих транзактов, повинні відбутися в буду-щем. Цей список організовується в порядку зростання планованого часу просування транзактов. P>
Симулятор GPSS/PC поміщає транзакти залежно від умов в моделі в той чи інший список і переносить транзакти зі списку в список, переглядає списки, вибираючи наступний транзакт для оброб-лення, коректує таймер модельного часу після обробки всіх транзактов у списку поточних подій. p>
2. ОСНОВНІ БЛОКИ GPSS/PC І ПОВ'ЯЗАНІ З НИМИ ОБ'ЄКТИ p>
2.1. Блоки, пов'язані з транзактамі p>
З транзактамі пов'язані блоки створення, знищення, затримки транзактов, зміни їх атрибутів і створення копій транзактов. P>
Для створення транзактов, що входять в модель, служить блок p>
GENERATE (генерувати), що має такий вигляд: p>
ім'я GENERATE A, B, C, D, E p>
У полі A задається середнє значення інтервалу часу між мо - ментами надходження в модель двох послідовних транзактов. Якщо цей інтервал постійний, то поле B не використовується. Якщо ж інтер-вал надходження є випадковою величиною, то в полі B вказуючи-ється модифікатор середнього значення, який може бути заданий у вигляді модифікатора-інтервалу або модифікатора-функції. P>
Модифікатор-інтервал використовується, коли інтервал надходження транзактов є випадковою величиною з рівномірним законом роз-ределенія ймовірностей. У цьому випадку в поле B може бути заданий лю-бой ВЧА, окрім посилання на функцію, а діапазон зміни інтервалу надходження має межі AB, A + B. p>
Наприклад, блок p>
GENERATE 100,40 створює транзакти через випадкові проміжки часу, рівномірно розподілені на відрізку [60; 140]. p>
Модифікатор-функція використовується, якщо закон розподілу ін-інтервал надходження відмінний від рівномірного. У цьому випадку в поле B повинна бути записана посилання на функцію (її ВЧА), що описує цей закон, і випадковий інтервал надходження визначається, як ціла частина твору поля A (середнього значення) на обчислена значен-ня функції. P>
У полі C задається час вступу до модель першого транзак-та. Якщо це поле порожнє або дорівнює 0, то момент появи перших транзакта визначається операндами A і B. p>
Поле D задає загальне число транзактов, яка має бути ство-дано блоком GENERATE. Якщо це поле порожнім, то блок генерує неоген-раніченное число транзактов до завершення моделювання. P>
У полі E задається пріоритет, який присвоюється генеруються транзак-там. Число рівнів пріоритетів необмежена, причому найнижчий пріоритет - нульовий. Якщо поле E пусто, то що генеруються транзакти мають нульовий пріоритет. P>
Транзакти мають ряд стандартних числових атрибутів. Наприклад, p>
ВЧА з назвою PR дозволяє посилатися на пріоритет транзакта. ВЧА з назвою M1 містить так зване резидентні час транзакта, p>
тобто час, що минув з моменту входу транзакта в модель через блок p>
GENERATE. ВЧА з назвою XN1 містить внутрішній номер транзакта,який є унікальним і дозволяє завжди відрізнити один транзакт від іншого. На відміну від ВЧА інших об'єктів, ВЧА p>
транзактов не містять посилання на ім'я або номер транзакта. Посилання на ВЧА транзакта завжди відноситься до активного транзакту, тобто тра-нзакту, що обробляються в даний момент симулятором. p>
Важливими стандартними числовими атрибутами транзактов є значення їх параметрів. Будь-який транзакт може мати необмежену кількість параметрів, що містять ті чи інші числові значення. Посилання на цей ВЧА транзактов завжди відноситься до активного транзакту і має вигляд Pj або Р $ ім'я, де j та ім'я - номер та ім'я параметра відповідно. Така посилання можлива тільки в тому випадку, якщо параметр з вказаним номером або вже існує, тобто в нього p>
занесено яке-небудь значення. p>
Для присвоювання параметрами початкових значень або зміни цих значень служить блок ASSIGN (привласнювати), що має наступні формат: ім'я ASSIGN A, B, C
У полі A вказується номер або ім'я параметра, в який за-носиться значення операнда B. Якщо в полі A після імені (номери) па-раметра стоїть знак + або -, то значення операнда B додається або віднімається з поточного вмісту параметра. У полі З може бути вказано ім'я або номер функції-модифікатора, що діє аналогічно функції-модифікатори в полі B блоку GENERATE. P>
Наприклад, блок p>
ASSIGN 5,0 записує в параметр з номером 5 значення 0, а блок p>
ASSIGN COUNT +, 1 додає 1 до поточного значення параметра з ім'ям COUNT. p>
Для запису поточного модельного часу в заданий параметр транзакта служить блок MARK (зазначити), має такий вигляд: p>
ім'я MARK A p>
У полі A вказується номер або ім'я параметра транзакта, в ко-торий заноситься поточне модельне час при вході цього транзакта в блок MARK. Вміст цього параметра може бути пізніше вико-вано для визначення транзитного часу 0пребиванія транзакта в якоїсь частини моделі з допомогою ВЧА з назвою MP. P>
Наприклад, якщо на вході ділянки моделі помістити блок p>
MARK MARKER, то на виході цієї ділянки ВЧА MP $ MARKER буде містити різниця між поточним модельним часом і часом, занесеного до параметр p>
MARKER блоком MARK. p>
Якщо поле A блоку MARK порожньо , то поточний час заноситься на місце позначки часу входу транзакта в модель, яка використовується при визначенні резидентного часу транзакта за допомогою ВЧА M1. p>
Щоб змінити пріоритет транзакта служить блок PRIORITY (Пріо-рітет), що має такий вигляд: ім'я PRIORITY A, B p>
У полі A записується новий пріоритет транзакта. У полі B мо-жет міститися ключове слово BU, за наявності якого транзакт, що ввійшов до блоку, поміщається у списку поточних подій після всіх інших транзактов нової пріоритетною групи, і список поточних подій проглядається з початку. Використання такої можливості буде розглянуто нижче. P>
Для видалення транзактов з моделі є блок TERMINATE (за-вершити), що має такий вигляд: ім'я TERMINATE A p>
Значення поля A вказує, на скільки одиниць зменшується з-держімое так званого лічильника завершений при вході транзакта у цей блок TERMINATE. Якщо поле A не визначено, то вона вважається рівним 0, і транзакти, що проходять через такий блок, не зменшують вміст лічильника завершений. P>
Початкове значення лічильника завершений встановлюється управ-ляющие оператором START (почати), призначеним для запуску про-гону моделі. Поле A цього оператора містить початкове значення лічильника завершений (див. розд. 3). Прогон моделі закінчується, коли вміст лічильника завершений звертається до 0. Таким чином, в моделі повинен бути хоча б один блок TERMINATE з непустих полем p>
A, інакше процес моделювання ніколи не завершиться. P>
Поточне значення лічильника завершений є програмісту че-рез системний ВЧА TG1 . p>
Ділянка блок-схеми моделі, пов'язаний з парою блоків p>
GENERATE-ТERMINATE, називається сегментом. Прості моделі можуть складатися з одного сегмента, у складних моделях може бути кілька сегментів. P>
Наприклад, найпростіший сегмент моделі, що складається всього з двох блоків GENERATE і TERMINATE і наведений на рис. 1, у сукупності з керуючим оператором START моделює процес створення випадково-го потоку транзактов, що надходять в модель із середнім інтервалом в p>
100 одиниць модельного часу, і знищення цих транзактов. На-чільного значення лічильника завершений одно 1000. Кожен транзакт, що проходить через блок TERMINATE, віднімає з лічильника одиницю, і таким чином моделювання завершиться, коли тисячний за рахунком транзакт увійде до блоку TERMINATE. При цьому точне значення таймера в момент завершення прогону непередбачувано. Отже, у приве-денном прикладі тривалість прогону встановлюється не за мо-ремого часу, а за кількістю транзактов, які пройшли через мо-дель. P>
GENERATE 100,40 p>
TERMINATE 1 p>
START 1000 p>
Якщо необхідно управляти тривалістю прогону по мо-ремого часу, то в моделі використовується спеціальний сегмент, на-зване сегментом таймера. p>
GENERATE 100,40
TERMINATE p>
GENERATE 100000 p>
TERMINATE 1 p>
START 1 p>
Наприклад, у моделі з двох сегментів, наведеною на рис. 2, перший (основний) сегмент виконує ті ж функції, що і з попередньої-щем прикладі. Зауважимо, однак, що поле A блоку TERMINATE в першому сегменті порожньо, тобто знищувані транзакти не зменшують вміст-го лічильника завершений. У другому сегменті блок GENERATE створить першу транзакт в момент модельного часу, що дорівнює 100000. Але цей транзакт виявиться і останнім у даному сегменті, тому що, увійшовши до блоку TERMINATE, він учинить 0 вміст лічильника завершений, встановлене оператором START рівним 1. Таким чином, у цій мо-діли гарантується завершення прогону в певний момент модель-ного часу, а точна кількість транзактов, які пройшли через мо-дель, непередбачувано. P>
У наведених прикладах транзакти, що входять в модель через блок
GENERATE, в той же момент модельного часу знищувалися в блоці p>
TERMINATE. У моделях систем масового обслуговування заявки обслужить-вають приладами (каналами) СМО протягом певного проміжку часу, перш ніж покинути СМО. Для моделювання такого обслужить-вання, тобто для затримки транзактов на певний відрізок модель-ного часу, служить блок ADVANCE (затримати), що має такий вигляд: ім'я ADVANCE A, B p>
Операнд у полях A і B мають таке ж значення, що і в соот - відповідне полях блоку GENERATE. Слід зазначити, що транзакти, що входять до блоку ADVANCE, переводяться зі списку поточних подій в список майбутніх подій, а після закінчення обчисленого часу затримаю-ки повертаються назад, до списку поточних подій, і їх просування по блок-схемі триває. Якщо обчислена час затримки одно p>
0, то транзакт в той же момент модельного часу переходить в на-дме блок, залишаючись у списку поточних подій. P>
Наприклад, у сегменті, наведеному на рис . 3, транзакти, вступників в модель з блоку GENERATE через випадкові інтервали време-ни, що мають рівномірний розподіл на відрізку [60; 140], потрапляють до блоку ADVANCE. Тут визначається випадкове час затримки тран-закта, що має рівномірний розподіл на відрізку [30; 130], і транзакт переводиться в список майбутніх подій. Після закінчення часу затримки транзакт повертається до списку поточних подій і входить до блоку TERMINATE, де знищується. Зауважимо, що в списку майбутніх з-битій, а значить і в блоці ADVANCE може одночасно знаходитися довільна кількість транзактов. P>
GENERATE 100,40 p>
ADVANCE 80,50 p> < p> TERMINATE 1 p>
У розглянутих вище прикладах випадкові інтервали часу під-чинять рівномірному закону розподілу ймовірностей. Для напів-чення випадкових величин з іншими розподілами в GPSS/PC викорис-зуются обчислювальні об'єкти: змінні і функції. P>
Як відомо, довільна випадкова величина пов'язана зі слу-чайної величиною R, що має рівномірний розподіл на відрізку
[0; 1], через свою зворотну функцію розподілу. Для деяких випадкових величин рівняння зв'язку має явне рішення, і значення випадкової величини із заданим розподілом ймовірностей може бути обчислено через R за формулою. Так, наприклад, значення випадок-ної величини E з показовим (експоненціальним) розподілом з параметром d обчислюється за формулою: p>
E = - (1/d) * ln (R) p>
Нагадаємо, що параметр d має сенс величини, зворотної математ-зації очікування E, а, отже, 1/d - математичне сподівання p>
(середнє значення) випадкової величини E. p>
Для отримання випадкової величини R з рівномірним Розподіл-му на відрізку [0; 1] в GPSS/PC є вбудовані генератори випадок-них чисел. Для отримання випадкового числа шляхом звернення до такого генератора досить записати системний ВЧА RN з номером генерато-ра, наприклад RN1. Правда, вбудовані генератори випадкових чисел p>
GPSS/PC дають числа не на відрізку [0; 1], а цілі випадкові числа, рівномірно розподілені від 0 до 999, але їх неважко привести до вказаного відрізку поділом на 1000. p>
Найпростіше описані обчислення в GPSS/PC виконуються з використанням арифметичних змінних. Вони можуть бути цілими і дійсними. Цілі змінні визначаються перед початком моді-воджується за допомогою оператора визначення VARIABLE p>
(змінна), що має такий вигляд: p>
ім'я VARIABLE вираз p>
Тут ім'я - ім'я змінної , що використовується для посилань на неї, а вираз - арифметичний вираз, що визначає змінну. p>
Арифметичне вираз являє собою комбінацію операндів, як які можуть виступати константи, ВЧА та функції, зна-ков арифметичних операцій і круглих дужок. Слід зауважити, що знайомий операції множення в GPSS/PC є символ # (номер). P>
Результат кожної проміжної операції в цілих змінних перетворень-зуется до цілого типу шляхом відкидання дробової частини, і, таким чином, результатом операції поділу є ціла частина приватного. p>
Дійсні змінні 0определяются перед початком моделі-вання за допомогою оператора визначення FVARIABLE, що має той же формат, що і оператор VARIABLE. Відмінність дійсних змінних від цілих полягає в тому, що в дійсних змінних всі проміжні операції виконуються зі збереженням дробової частини чисел, і лише остаточний результат приводиться до цілого типу відб-расиваніем дробової частини. P>
Арифметичні змінні обох типів мають єдиний ВЧА з назвою V, значенням якого є результат обчислення Аріф-метичних вираження, що визначає змінну. Обчислення висловлю-вання проводиться при вході транзакта до блоку, що містить посилання на p>
ВЧА V з ім'ям змінної. P>
Дійсні змінні можуть бути використані для отри-мання випадкових інтервалів часу з показовим законом Розподі - лення. Нехай в моделі з прикладу на рис. 3 розподілу часу надходження транзактов і часу затримки повинні мати показник-ний закон. Це може бути зроблено так, як показано на рис. 4. P>
TARR FVARIABLE -100 # LOG ((1 + RN1)/1000) p>
TSRV FVARIABLE -80 # LOG ((1 + RN1)/1000) p>
GENERATE V $ TARR p>
ADVANCE V $ TSRV p>
TERMINATE 1 p>
Рис. 4 p>
Змінна з ім'ям TARR задає вираз для обчислення ін-інтервал надходження із середнім значенням 100, друга змінна з ім'ям TSRV - для обчислення часу затримки із середнім значенням p>
80. Блоки GENERATE і ADVANCE містять у полі A посилання на відповідної змінні, при цьому полі B не використовується, тому що в полі A міститься випадкова величина, що не потребує модифікації. P>
Більшість випадкових величин не може бути отримано через p>
випадкову величину R з допомогою арифметичного виразу. Крім то-го, такий спосіб є досить трудомістким, оскільки вимагає звернення до математичних функцій, обчислення яких вимагає десятків машинних операцій. Іншим можливим способом є використання обчислювальних об'єктів GPSS/PC типу функція. P>
Функції використовуються для обчислення величин, заданих табліч-ними залежностями. Кожна функція визначається перед початком моді-воджується за допомогою оператора визначення FUNCTION (функція), маю-ного наступний формат: ім'я FUNCTION A, B p>
Тут ім'я - ім'я функції, що використовується для посилань на неї; A - стандартний числовий ат?? ібут, що є аргументом функції; B - тип функції і число точок таблиці, яка визначає функцію. p>
Існує п'ять типів функцій. Розглянемо спочатку безперервні числові функції, тип яких кодується літерою C. Так, наприклад, у визначенні безперервної числової функції, таблиця якої соді-ржіт 24 точки, поле B повинно мати значення C24. P>
При використанні неперервної функції для генерування слу-чайних чисел її аргументом має бути один з генераторів випадок - них чисел RNj. Так, оператор для визначення функції показового розподілу може мати такий вигляд: p>
EXP FUNCTION RN1, C24 p>
Особливістю використання вбудованих генераторів випадкових чисел p>
RNj як аргументи функцій є те, що їх значення в цьому контексті інтерпретуються як дробові числа від 0 до 0,999999. p>
Таблиця з координатами точок функції розташовується в рядках, що слідують безпосередньо за оператором FUNCTION. Ці рядки не повинні мати поля нумерації. Кожна точка таблиці задається парою Xi p>
(значення аргументу) і Yi (значення функції), відокремлюваних один від одного комою. Пари координат відокремлюються один від одного символом "/" і розташовуються на довільному кількості рядків. Послідовник-ність значень аргументу Xi повинна бути строго зростаючою. P>
Як уже зазначалося, для користування в полі B блоків p>
GENERATE і ADVANCE обчислення інтервалу надходження або часу за-держки проводиться шляхом множення операнда A на обчислена зна-чення функції. Звідси випливає, що функція, яка використовується для гені-рірованія випадкових чисел з показовим розподілом, повинна описувати залежність y =- ln (x), представлену в табличному вигляді. P>
Оператор FUNCTION з такою таблицею, що містить 24 точки для забезпе-чення достатньої точності апроксимації, має такий вигляд: p>
EXP FUNCTION RN1, C24 p>
0,0/.1, .104/.2, .222/.3,. 355/.4, .509/.5, .69/.6, .915 p>
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3 p>
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9 p>
.99 , 4.6/.995, 5.3/.998, 6.2/.999, 7/.9998, 8 p>
Обчислення неперервної функції здійснюється в такий спосіб. p>
Спочатку визначається інтервал (Xi; Xi 1), на якому знаходиться теку-ний значення ВЧА-аргументу (у нашому прикладі - згенероване зна-чення RN1). Потім на цьому інтервалі виконується лінійна Інтерполу-ція з використанням відповідних значень Yi і Yi 1. Результат інтерполяції усікається (відкиданням дробової частини) і використовується в якості значення функції. Якщо функція служить операндом B блоків p>
GENERATE або ADVANCE, то усікання результату проводиться тільки після його множення на значення операнда A. p>
Використання функцій для отримання випадкових чисел з заданим розподілом дає хоча і менш точний результат за рахунок погрішу-ностей апроксимації, але зате з меншими обчислювальними витратами p>
(кілька машинних операцій на виконання лінійної інтерполяції). p>
Щоб до похибки апроксимації не додавати занадто велику пог-решность усікання, середнє значення при використанні показових розподілів має бути достатньо великим (не менше 50). Ця ре-комендація відноситься і до використання змінних. P>
Ф