Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2-Konspekt_lektsiy_MS

.pdf
Скачиваний:
57
Добавлен:
14.04.2015
Размер:
1.91 Mб
Скачать

tп – момент початку обслуговування заявки;

no – кількість заявок, час очікування для яких перевищує задану величину;

τс– сумарний час очікування всіх заявок, що надійшли до системи;

τобi – час обслуговування заявки;

n – кількість обслугованих заявок.

 

Алгоритм

1.

Початок.

2.

Уведення вхідних даних: t * , ϕ , τоб, τ* .

3.Формування початкових умов: i:= 0; ti := 0; tз:=0; n:=0; no :=0; τс:=0.

4.Обчислення i:=i+1; генерація ϕi .

5.Формування ti :=ti 1+ϕi .

6.

Якщо ti tз, то τоч:= 0, tп := ti та перейти до п.9.

7.

Формування τоч:= tзti , tп :=tз.

8.

Якщо τо τ*о , то no := no + 1.

9.Обчислення τс:= τс+ τоч.

10.Генерація τобi .

11.Обчислення tз:=.tп + τобi .

12.Якщо tз< t* , то n:= n + 1 та перейти до п.4.

13.

Обчислення

 

о := τс/ n;

 

 

p

:= no / n.

τ

 

 

14.

Видача результатів: n,

τ

о ,

p

.

15.

Кінець.

 

 

 

 

 

 

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

7.3 Особливості побудови моделювальних алгоритмів багатоканальних і

110

багатофазних СМО

У багатоканальній СМО потік заявок, що надходять у систему, обслуговується m ідентичними каналами (рис. 7.2). Вибір каналу, що обслуговуватиме чергову заявку, може здійснюватися у такій системі за різними правилами: перший, що звільнився; за жеребкуванням; за мінімальним коефіцієнтом завантаження тощо. Моделювальний алгоритм багатоканальної СМО відрізнятиметься від розглянутого вище наявністю процедури визначення каналу, який обслуговуватиме чергову заявку.

К1

Н

И К2

Кт

Рисунок 7.2 – Структурна схема багатоканальної СМО

Нехай в системі, що моделюється, реалізується правило вибору за мінімальним часом звільнення каналу після обслуговування попередньої заявки. Тоді в попередньому алгоритмі потрібно додати такі деталі. На кроці 3 (формування початкових умов) замість tз:=0 вставити t3k := 0 , k = 1,m , що відповідатиме нульовим початковим умовам (всі m каналів на початку моделювання вільні). На всіх кроках, де зустрічається tз, замість нього

використовувати t3k* , де t3k* – час звільнення першого з каналів, що визначається шляхом розв’язання після пункту 5 задачі пошуку мінімального

елемента масиву: k* = arg min tk , де

t k – час звільнення k -го каналу.

 

3

3

 

1km

 

 

Моделювальні алгоритми багатофазних СМО, що будуються за блочним

принципом, складаються з алгоритмів, що описують роботу окремих

фаз

(зокрема, окремих каналів).

 

 

При побудові моделювального алгоритму Q-схеми за "принципом

t " (з

детермінованим кроком) для побудови адекватної моделі необхідно визначити мінімальний інтервал часу між сусідніми подіями τi : τmin = min { τi } (у вхідних

111

потоках і потоках обслуговування) і прийняти, що крок моделювання t τmin . У моделювальних алгоритмах, побудованих за "принципом δz " (з випадковим кроком τi ), стани елементів Q-схеми проглядаються тільки в особливі моменти часу. Такі алгоритми можуть бути побудовані за:

синхронним або асинхронним; циклічним або ациклічним способами.

При синхронному способі побудови алгоритму один з елементів Q-схеми (И, Н або К) вибирається за ведучий і по ньому "синхронізується" весь процес моделювання. При асинхронному способі ведучий (синхронізуючий) елемент не використовується, а черговому кроку моделювання (моменту перегляду елементів Q-схеми) може відповідати будь-який особливий стан із всієї множини елементів (И, Н, К). При цьому перегляд елементів Q-схеми в особливі моменти часу здійснюється циклічно (всі елементи) або спорадично (тільки ті, які можуть у цьому випадку змінити свій стан – перегляд із прогнозуванням).

При цьому необхідно мати на увазі, що поява однієї заявки вхідного потоку в деякий момент часу tn може викликати зміну стану не більш ніж одного з елементів Q-схеми, а закінчення обслуговування заявки в деякому каналі (К) у момент часу tn може призвести до послідовної зміни станів декількох елементів (Н і К). Тобто матиме місце процес поширення зміни станів у напрямку, протилежному руху заявок у Q-схемі (рис. 7.1).

З урахуванням цього моделювальні алгоритми багатофазних СМО можуть бути побудовані як з прямою (фаза 1, фаза 2 і т.д.), так і зі зворотною (фаза n , фаза n 1 і т.д.) послідовністю фаз (рис. 7.3).

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

Контрольні запитання та завдання

1.За якими принципами можуть бути побудовані моделювальні алгоритми для дослідження СМО?

2.Яка модифікація подійного принципу використовується для моделювання СМО?

3.Як визначається час очікування заявки в черзі у моделювальному алгоритмі одноканальної СМО?

112

Початок

Введення

вхідних

даних

Встановлення початкових умов

 

 

 

tn t * ?

 

 

 

 

 

 

 

 

 

 

 

 

Обслуговування

 

Обробка

 

 

 

заявки на фазі 3

 

результатів

 

 

 

 

 

 

моделювання

 

 

 

 

 

 

Виведення

 

 

 

Перехід заявки з

 

 

 

 

фази 3 на фазу 2

 

результатів

 

 

 

 

 

 

моделювання

 

 

 

 

 

 

Перехід до

 

Обслуговування

 

 

наступного

 

 

Кінець

моменту часу tn

 

заявки на фазі 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Перехід заявки з

 

 

 

 

 

фази 2 на фазу 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обслуговування

 

 

 

 

 

заявки на фазі 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Надходження

 

 

 

 

 

заявки на вхід

 

 

 

 

 

системи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 7.3 – Узагальнена схема моделювального алгоритму трифазної СМО

4.Як визначається момент початку обслуговування заявки у моделювальному алгоритмі одноканальної СМО?

5.Опишіть процедуру визначення каналу, який обслуговуватиме чергову

заявку?

6.Якими способами можуть бути побудовані моделювальні алгоритми подійного принципу для СМО?

7.Дайте визначення синхронного й асинхронного способів побудови

113

моделювальних алгоритмів.

8.Дайте визначення циклічного й спорадичного способів побудови моделювальних алгоритмів.

9.Чим визначається доцільність побудови моделювальних алгоритмів багатофазних СМО зі зворотною послідовністю фаз?

10.Опишіть схему моделювального алгоритму трифазної СМО.

8 ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ МОДЕЛЮВАННЯ СИСТЕМ

8.1 Мови моделювання систем. Мови загального призначення та імітаційного моделювання

Важливим моментом у процесі моделювання є вдалий вибір мови або пакета програм моделювання. Серед основних вимог, які висуваються до мов програмування, є такі: зручність опису процесу, що моделюється; зручність введення вхідних даних, внесення змін до структури і параметрів моделі; ефективність засобів аналізу і відображення результатів моделювання. Для розв’язання задач моделювання використовують мови загального призначення (МЗП) і мови імітаційного моделювання (МІМ).

Прикладами МЗП, які найбільш широко використовувалися для програмування задач моделювання, є Fortran, Pascal, Delphі, C++. Основною перевагою МЗП вважається їх універсальність. Сьогодні МЗП використовуються здебільшого для створення пакетів програм моделювання.

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

Неперервні мови призначені для моделювання неперервних у часі процесів, що описуються диференціальними, різницевими або алгебраїчними рівняннями, які пов’язують вихідні змінні з вхідними. До мов цієї групи належать MIMIC, Dynamo.

Неперервно-дискретні мови призначені для опису об’єктів, у яких присутні як неперервні, так і дискретні процеси. Прикладами мов цієї групи є

GASP, ForSim.

Дискретні мови призначено для опису дискретних процесів. Їх характерною рисою є наявність засобів формування динамічних списків подій, які упорядковуються у часі. Сучасні дискретні мови орієнтовані на планування подій, перегляд видів діяльності та процесів. Прикладами мов цієї групи є

114

SIMSCRIPT, Simula, GPSS.

У багатьох неперервних і дискретних мовах сьогодні створюються додаткові можливості. Наприклад до складу мови GPSS World включено блок Integrate, що дозволяє проводити імітаційне моделювання неперервних процесів, а пакети неперервного моделювання Stella і Think мають убудовані елементи для дискретного моделювання.

8.2 Мова імітаційного моделювання GPSS

Мова імітаційного моделювання GPSS (General Purpose System Simulation) орієнтована на опис процесів функціонування дискретних об’єктів типу систем масового обслуговування (СМО, Q-схем).

Граматика операторів мови GPSS може бути подана у вигляді:

[<Номер рядка>] [<Мітка>] [Оператор] [<Операнд>,…, <Операнд>].

Перелік основних операторів мови GPSS та блоків для зображення їх на блок-діаграмах подано у табл. 8.1.

Створення та введення до моделі потоку транзактів (заявок) здійснюється за допомогою блока

GENERATE A, B, C, D, E,

де A, B, C, D, E – операнди блока, що записуються у відповідних полях. Початкове значення лічильника задається операндом A управляючої

команди

START A, B, C, D.

Коли значення лічильника завершень подій стане меншим або дорівнюючим нулю, моделювання припиниться і будуть видані результати моделювання. Якщо поле A блока TERMINATE залишити незаповненим, значення лічильника залишатиметься без змін. У полі В може вказуватися ознака відміни видачі результатів (NP). У полі C може задаватися кількість завершень, після яких виконуватиметься проміжна видача результатів. У полі D за допомогою символу "1" може задаватися ознака стандартної видачі інформації.

У моделі може бути декілька блоків TERMINATE, що впливають на один і той самий лічильник.

Таблиця 8.1 – Графічне зображення та функції основних операторів мови GPSS

115

Оператор

Позначення

 

Призначення

 

 

1

2

 

3

 

 

 

ADVANCE

A, B

Затримує

транзакт на

час A ± B ,

якщо

 

B = const

або на час

A × B ,

якщо

В

 

 

 

 

функція.

 

 

 

 

ASSEMBLE

A

Збирає А

транзактів одного

ансамблю,

 

пропускає в наступний блок перший із

 

 

 

 

них, решту – знищує.

 

 

 

ASSIGN

A ,B, C

Присвоює

параметру

А

транзакту

 

значення В, модифіковане параметром С.

 

 

DEPART

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Забезпечує звільнення місць у черзі A

 

 

 

 

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

(В – кількість місць).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ENTER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здійснює вхід транзакту у накопичувач А

 

 

 

 

В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А

із заняттям В одиниць пам’яті.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GATE (X)

 

 

 

 

X

 

 

 

 

 

 

 

 

 

Перевіряє умову знаходження логічного

 

 

 

 

 

 

 

 

A

 

 

{LS, LR}

 

 

 

 

 

 

 

 

 

ключа А у стані Х.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GATE (X)

 

 

 

 

X

 

 

 

 

 

A

Перевіряє умову знаходження пристрою

{I,NI,U,NU}

 

 

 

 

 

 

 

 

 

А у стані Х

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GATE (Х)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Перевіряє умову знаходження накопичу-

{SE,SF,SNE,SNF}

 

 

 

 

Х

 

 

 

 

А

вача А в стані Х.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GATHER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Збирає А транзактів одного ансамблю і

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пропускає їх одночасно у наступний

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

блок.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GENERATE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Генерує D транзактів із пріоритетом Е та

 

 

 

 

 

А, В

 

 

 

 

 

 

 

 

 

затримкою С через А одиниць часу,

 

 

 

 

 

 

С,D E

 

 

 

 

 

 

 

 

 

 

 

модифікованих В.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LEAVE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Звільняє місце у пам’яті А (В одиниць).

 

 

 

 

В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MATCH

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Синхронізує рух транзактів по блок-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Aдіаграмі спільно з блоком MATCH, який має мітку А.

116

Продовження табл. 8.1

1

2

 

 

 

 

 

 

 

3

PRINT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здійснює вивід статистики С у межах

 

 

 

 

 

 

 

 

A - B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

від А до В.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PRIORITY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Присвоює транзакту, що входить

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

значення пріоритету А.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

QUEUE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здійснює заняття місць у черзі А (В –

 

 

 

 

 

 

 

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

кількість місць).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RELEASE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Звільняє пристрій А.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SAVEVALUE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Зберігає значення А у комірці В.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А, В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SEIZE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А

Займає пристрій А.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SPLIT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Генерує А копій вхідного транзакту та

 

 

 

 

 

 

 

 

 

 

В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

відправляє їх за адресою В (основний

 

 

 

 

 

 

 

 

 

А

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

переходить до наступного блоку).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TABULATE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Табулює значення вхідних транзактів

 

 

 

 

 

 

 

В

 

 

 

 

 

 

 

 

 

 

 

 

А

у таблиці А

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TEST(Х)

 

 

 

 

 

 

А×В

 

 

 

 

Перевіряє відношення Х між А і В та

{E, NE, GE,

 

 

 

 

 

 

 

 

 

 

направляє транзакт у наступний блок

LE,G, L}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(при його виконанні) або за адресою С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(при невиконанні).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TERMINATE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Знищує А транзактів.

 

 

 

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TRANSFER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Змінює напрям руху транзакту згідно

{BOTH, ALL}

 

 

 

 

 

 

 

 

А

 

 

 

 

з режимом А.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Функції. Для опису залежностей, які мають місце в системах, що

117

моделюються, використовуються функції. Функція задається за допомогою рядка визначення функції та одного або більше рядків слідування. Рядок визначення функції має вигляд

< імя > FUNCTION A, B ,

де A – аргумент функції, який може бути будь-яким СЧА;

B – тип функції (C – безперервна, D – дискретна) і кількість пар "значення аргументу – значення функції".

Ім’я функції може бути числовим або символьним.

Безпосередньо після рядка визначення функції розташовуються рядки слідування функції. У рядках слідування задаються пари "значення аргументу Xi – значення функції Yi" у вигляді

X1, Y1/ X2, Y2/ ... / Xn,Yn .

Дискретна числова функція є ступінчастою. Вона змінюється тільки при тих значеннях аргументу, що задані в картах слідування. Значення дискретної функції обчислюється за таким правилом: для X X1 значення функції дорівнює Y1; для Xi-1 < X Xi значення функції дорівнює Yi; для X > Xn значення функції дорівнює Yn. Значення функції передається її СЧА – FN. Посиланням на функцію може бути: FNj, де j – числове ім’я функції або FN$<імя>, якщо ім’я функції задане символічно. При цьому припускається, що всі Yi – цілі числа. Наприклад,

5 FUNCTION P3, D4 2, 10/5, 17/6, 20/7, 26 .

Безперервну числову функцію, як і дискретну, задають парами точок. Значення безперервної функції, що знаходяться між точками Yi, Yi+1, інтерпретатор GPSS визначає шляхом лінійної інтерполяції. Значення Yi зберігаються в пам’яті ЕОМ у вигляді чисел з плаваючою точкою. Від кінцевого результату інтерполяції береться ціла частина і значення функції завжди подається цілим числом, за винятком таких випадків: не цілі значення може мати функція, що використовується у полі B блоків ADVANCE і GENERATE, а також у полі C блока ASSIGN.

Арифметичні змінні дозволяють виконувати обчислення за формулами, в 118

яких використовуються імена СЧА, матриць і т.д. Кожна арифметична змінна визначається рядком опису

<ім’я > VARIABLE < вираз >.

Уполі мітки записується ім’я змінної (числове або символьне). У полі операції вказується слово VARIABLE або FVARIABLE. Змінна VARIABLE використовується для обчислення за правилами цілочисельної арифметики, а FVARIABLE – за правилами арифметики з плаваючою точкою. Результат обчислень, що присвоюється змінній, завжди є цілим числом. У записах виразів використовують такі арифметичні оператори: "+" – додавання; "–" – віднімання; "*" – множення; "/" – ділення; "@" – ділення за модулем. Остання операція визначена тільки для оператора VARIABLE.

Звертанням до арифметичної змінної є або Vj – якщо вона була задана номером j, або V$< ім’я > – у випадку символічного задання.

Таблиці. Таблиці використовуються для одержання числових характеристик і гістограм СЧА. Опис таблиці слід виконувати за допомогою рядка TABLE

< ім’я > TABLE A, B, C, D,

де < ім’я > – числове або символьне ім’я таблиці;

A– аргумент таблиці (ім’я СЧА), значення якого табулюється;

B– перше граничне значення;

C– ширина проміжних інтервалів;

D– загальна кількість інтервалів таблиці, включаючи лівий.

Якщо транзакт входить у блок TABULATE A, де A – ім’я таблиці, то до цієї таблиці заноситься значення СЧА, що задане у полі A рядка TABLE

ABCD TABLE Q$QUEUE, 2, 4, 12

........................................

TABULATE ABCD.

У наведеному прикладі щоразу, коли транзакт входитиме у блок TABULATE ABCD, до таблиці з ім’ям ABCD заноситиметься значення довжини черги, що має ім’я QUEUE.

Використання засобів моделювання випадкових величин. У GPSS є вісім

119

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]