вимоги обробляє пристрою. Ця послідовність диктується логікою обслуговування вимог у системі. Якщо в будь-дискретний момент часу в систему надходить чергову вимогу і одночасно з цим завершується обробка-якого з вже знаходяться в системі, то спочатку необхідно обробити завершення обслуговування, і лише потім надходження нової вимоги в систему. Це диктується тим, що знову надійшов вимогу потрібно вільне пристрій, який з'явиться, можливо, лише в результаті завершення обслуговування якого з вже обробляються системою вимог. У найзагальнішому вигляді завершення обробки складається у вивільненні зайнятого пристрої та збільшенні на одиницю лічильника числа оброблених вимог. Точно так само, обробка надходження полягає у виборі вільного пристрої та передачу йому вимоги на обробку, або, в разі відсутності такого пристрою, у відмові в обробці даної вимоги. Зазначені два обробника подій включаються в основний цикл відліку дискретних моментів часу періоду моделювання, як показано нижче:
// ініціалізація:
// основний цикл: for (t = 0; t
{
// обробка завершення обслуговування вимоги:
// обробка надходження нової вимоги в систему:// завершення: {...}
В якості параметрів моделі використовуємо наступні константи і макроозначення: Т - час моделювання (в сек.); - число обробних пристроїв в системі;
RIN - генератор випадкового потоку надходять у систему вимог;
RON - генератор інтервалів часу обробки вимоги оброблювальним пристроєм;
Програмна реалізація алгоритму і результат її виконання наведені нижче на рис. 1, 2. Вихідний текст програми починається з визначення параметрів моделі та технічних вихідних даних. Всі вони визначаються за допомогою директиви препроцесора "# define". Макроси RIN і RON визначають виклики функцій, що моделюють розподіл інтервалів часу між подіями вхідного потоку вимог і інтервалів часу від початку до завершення обслуговування вимоги оброблювальним пристроєм, відповідно. Самі функції моделювання випадкових послідовностей, розподілених за різними законами, визначені у файлі rand.cpp, текст якого підключається до тексту моделі процесу за допомогою директиви препроцесора "# include" в першому рядку тексту програмної реалізації моделі. Повний текст модуля rand.cpp наведений у додатку 1. Константа "Т" визначає тривалість періоду моделювання в одиницях дискретного часу моделювання. Константа "N" задає число обробних пристроїв. Константа "VACANCY" визначає спеціальне значення для елемента масиву ton [], що означає, що обробляє пристрій, зіставлене даному елементу масиву вільно. Оскільки масив ton [] призначений для зберігання моментів часу завершення обслуговування вимоги відповідним пристроєм, які можуть приймати лише невід'ємні значення, то в якості тако...