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

Спеціалізовані програмні засоби імітаційного моделювання, як правило, мають власні вбудовані процедури генерування випадкових чисел із заданим законом розподілу. Як зазначалося вище, вихідними даними є випадкові числа, рівномірно розподілені в інтервалі (0, 1). Для їх генерування у GPSS World використовуються відповідні генератори. Звертаються до генератора без попереднього його оголошення за допомогою СЧА RNn, де n – номер генератора. Початкове число генератора випадкових чисел співпадає з номером n генератора. Наприклад, RN315 – генератор з номером 315 і запускається із початковим числом 315.

У процесі моделювання систем може виникнути необхідність досліджувати:

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

  • один або декілька варіантів моделі для різних потоків випадкових чисел.

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

У другому випадку GPSSW дозволяє змінювати початкові числа перших семи RN1... RN7 генераторів і формувати незалежні одну від іншої різні послідовності випадкових чисел. Для цього в GPSS World є команда RMULT наступного формату:

RMULT [A],[B],[C],[D],[E],[F],[G]

Операнд А задає початкове число для першого генератора випадкових чисел RN1. Аналогічно, іншими операндами задаються послідовності чисел для наступних генераторів, тобто: В – для RN2, С – для RN3, D – для RN4, Е – для RN5, F – для RN6, G –для RN7. СЧА, пов’язаний з даною командою, RN<номер генератора>, повертає ціле число з інтервалу від 0 до 999. При обчисленні випадкових функцій використовується випадкове число, вибиране з інтервалу від 0 до 0,999999 включно. Як правило, має бути заданий хоча б один операнд. Користувач може обрати будь-який генератор на сторінці Random Numbers (Випадкове число) журналу настроювань моделі (за замовчуванням – RN1).

Наприклад, командою

RMULT 15,,125,,518,

встановлюються початкові числа генераторів RN1, RN3, RN5. Решта значень залишається без змін.

У GPSS World псевдовипадкові числа генеруються за 32-бітовим мультиплікативним конгруентним алгоритмом (див. розд. 2.5). Алгоритм дозволяє отримати 231 – 1, тобто 2 147 483 647 псевдовипадкових чисел.

У GPSS World генератори випадкових чисел використовуються для оброблення одночасних подій, в блоках TRANSFER, що працюють в режимі статистичної передачі, в блоках GENERATE і ADVANCE.

Розглянемо методи знаходження випадкових чисел з різними імовірнісними розподілами за допомогою засобів GPSS World.

      1. Генерування випадкових чисел для дискретних рівномірних розподілів

Моделювання випадкових дискретних величин було розглянуто у розділі 2.3. У блоках GENERATE і ADVANCE обслуговування вимог, розподілених за рівномірним законом, задається за допомогою модифікатора-інтервалу. Наприклад:

GENERATE 500,30

ADVANCE 500,30

Також можна використовувати описаний у розділі 8.5 вбудований генератор дискретно-рівномірного розподілу DUniForm(n,min,max), де n – номер гене­ратора рівномірно розподілених випадкових чисел, min і max – мінімальне і максимальне значення, що генеруються. Тоді вище наведені блоки запи­шуть­ся у форматі:

GENERATE DUniForm(211,5000,9000)

ADVANCE DUniForm(211,5000,9000)

Використаємо обидва ці підходи для моделювання і порівняємо отримані результати.

GENERATE 500,30

QUEUE Cher1

SEIZE Kan

DEPART Cher1

ADVANCE 500,30

RELEASE Kan

TERMINATE

GENERATE 20000

TERMINATE 1

GENERATE (DUniForm(211,5000,9000))

QUEUE Cher1

SEIZE Kan

DEPART Cher1

ADVANCE (DUniForm(211,5000,9000))

RELEASE Kan

TERMINATE

GENERATE 20000

TERMINATE 1

Використовуючи модифікатор-інтервал, блок GENERATE за 10 000 прогонів згенерував 400 005 транзактів, з яких ОКП Саn було обслужено 399 981. Застосування вбудованого генератора DUniForm(211,5000,9000) дозволило згенерувати 399 926 транзактів, з яких обслужено 399 863.