Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи теорії систем і управління.doc
Скачиваний:
42
Добавлен:
29.02.2016
Размер:
2.49 Mб
Скачать

9.6 Алгоритм імітаційного моделювання смо

На основі приведених вище теоретичних положень магістром Національного транспортного університету М.А. Маляренко під науковим керівництвом д.т.н., проф. Б.М. Четверухіна була розроблена програма IMMODELING для визначення ймовірностей можливих станів СМО та показників ефективності роботи СМО в умовах впливу на неї вхідного потоку заявок, що мають довільний характер розподілу ймовірностей їх надходження в СМО, а також при довільному законі розподілу вихідного потоку обслуговувань в СМО із застосуванням внутрішньої мови системи Microsoft Office 97 VBA на базі програми Excel 97.

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

Програма побудована так, що на відповідних робочих аркушах Excel зберігаються вхідні данні, результати обчислень, графіки і форми для введення умов розрахунку і вхідних даних. Програма дозволяє моделювати процес формування інтервалів вхідного потоку випадкових подій, на основі псевдо випадкових величин, які формуються функцією РВП BASIC, роботу СМО по відпрацюванню зовнішніх впливів у вигляді вимог і в результаті отримувати вихідний потік інтервалів між сусідніми обслуженими вимогами. При цьому була передбачена можливість розглядати вимоги як рівноправні, так і пріоритетні. Нижче наведений алгоритм програми IMMODELING.

Основна програма:

  1. Початок програми.

  2. Об'ява та ініціалізація змінних:

n - кількість каналів

m - кількість місць в черзі

tm - час моделювання

j - поточна позиція на аркуші

kl - кількість зайнятих каналів

k2 - кількість зайнятих місць в черзі

z - кількість відкинутих заявок

ul - інтервал вхідного потоку

u2 - інтервал вихідного потоку

u3 - інтервал пріоритетного потоку

npriority - відношення між пріоритетними заявками і загальною кількістю заявок, %

ti - поточний час

t3 - час пріоритетної заявки

ty - сумарний час обслуговування

kу - кількість прийнятих заявок

chanals(10,2) - масив для обчислення роботи кантів

turn( 100,3) - масив для обчислення роботи черги

vTime - масив для реєстрування зайнятості каналів

vTimel - масив індикатор останнього зайнятого каналу

vTt - масив для реєстрування зайнятості черги

vTtl - масив індикатор останнього зайнятого місця в черзі

змінні для формування потоків Гауса:

fGaussl, fGauss2

vGaussinl, vGaussin2 - вхідний потік

vGaussoutl, vGaussout2 - вихідний потік

3. Підготовка робочого аркуша.

  1. Очищення робочого аркуша

  2. Заповнення текстової інформації (шапка таблиці результатів).

  3. Зчитування вихідних даних з аркуша "Вихідні дані"

  1. Ініціалізація масивів для організації роботи каналів

  2. Ініціалізація масивів для організації роботи черги

  3. Отримання першої заявки

  4. Занесення часу виконання заявки в перший канал

  5. Реєстрація зайнятого каналу

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

  1. Занесення в поточний лічильник часу надходження заявки

  2. Цикл по часу моделювання. Якщо цикл закінчився то п.25.

  3. Отримання наступної заявки. (виклик підпрограми "Моделювання вхідного потоку")

12.1 Реєстрація на робочому аркуші в колонці 1 і 2

  1. Перевірка: заявка пріоритетна чи ні.

  2. Якщо заявка пріоритетна то п. 15, якщо ні п. 19

  3. Перевірка стану системи

  4. Канал вільний

  1. Заявка надходить в канал (виклик підпрограми "Моделювання вихідного потоку").

  2. Реєстрація зайнятості каналу

16.3 Сортування каналу по часу виконання

16.4 Перехід на п.11

17. Канали зайняті. Вільна черга.

  1. Поставити в чергу з зсувом на перше місце

  2. Зареєструвати час зайнятості черги

17.3 Перехід на п.11

18. Черга зайнята

18.1 Звільнити перше місце в черзі

18.2Перехід на п. 11

  1. Перевірка зайнятості каналів (якщо час обслуговування скінчився, то канал звільняється) (Виклик підпрограми "Перевірка зайнятості каналів" )

  2. Якщо в черзі є заявка, то вона переноситься в канал (Виклик підпрограми " Перенесення заявки з черги в канал")

  3. Перевірка стану системи

  4. Є вільні канали

22.1 Наступна заявка з вхідного потоку надходить в канал 22.2Реєстрація зайнятості каналу.

22.3 Сортування каналів (виклик підпрограми "Сортування каналів")

22.4Перехід на п.11

23. Є місце в черзі

23.1 Поставити заявку в чергу з поточним часом

23.2 Сортування черги (виклик підпрограми "Сортування черги ")

23.3 Реєстрація зайнятості черги

23.4 Перехід на п. 11

  1. В черзі немає місця. Відкинути заявку. Перехід на п. 11

  2. Розрахунок параметрів вхідного потоку (обробка 1 і 2 колонок робочого аркуша)

25.1 Розрахунок середнього інтервалу (математичне очікування)

вхідного потоку

25.2 Розрахунок середньоквадратичного відхилення

  1. Розрахунок теоретичних значень параметрів вхідного потоку в залежності від типів вхідного потоку

  2. Розрахунок середнього часу перебування в черзі

  3. Розрахунок середньоквадратичного відхилення часу очікування в черзі

29. Розрахунок середньої довжини черги.

30. Вивід результатів моделювання на аркуш "Результати":

  • Час моделювання

  • Прийняті до обслуговування заявки

  • Середній час обслуговування заявок

  • Середній час знаходження заявки в системі

  • Дисперсія часу знаходження заявки в системі

  • Середній час очікування на обслуговування

  • Дисперсія часу очікування на обслуговування

  • Середня довжина черги

- Імовірність відмови

  • Середня кількість зайнятих каналів Показники стану системи:

  • Час зайнятості 0 каналів (всі канали вільні)

  • Час зайнятості 1 каналу

  • Час зайнятості 2-х каналів

  • Час зайнятості п каналів

  • Імовірність зайнятості 0 каналів

  • Імовірність зайнятості 1 каналу

  • Імовірність зайнятості 2-х каналів

  • Імовірність зайнятості п каналів

  • Час зайнятості 0 місць в черзі (черга вільна)

  • Час зайнятості 1 місця в черзі

  • Час зайнятості 2-х місць в черзі

  • Час зайнятості m місць в черзі

  • Імовірність зайнятості 0 місць в черзі (черга вільна)

  • Імовірність зайнятості 1 місця в черзі

  • Імовірність зайнятості 2-х місць в черзі

- Імовірність зайнятості m місць в черзі Таблиця даних по вхідному потоку:

- інтервали часу появи заявок

- частота потраплянь інтервалів часу появи заявок в ці інтервали часу

Таблиця даних по вихідному потоку:

  • інтервали часу появи заявок

  • частота попадань інтервалів часу появи заявок в ці інтервали часу

31. Розрахунок діаграм вхідного потоку (Діаграма № 1)

  1. Пошук максимуму та мінімуму серед інтервалів

  2. Розбиття інтервалів між максимумом та мінімумом на 10 частин

  3. Цикл по вхідному потоку доки не закінчаться заявки. Якщо кінець то п. 31.7

  4. Перевірка інтервалів заявки на номер інтервалу

31.5 Додавання одиниці до відповідного стовпчика діаграми

31.6 Перехід на п. 31.3

  1. Занесення на аркуш "Результати" таблиці з розмірами інтервалу і кількістю потраплянь в ці інтервали.

  2. Побудова діаграми (виклик підпрограми "Побудова діаграми №1")

32. Розрахунок діаграм вихідного потоку (діаграма №2)

32.1 Пошук максимуму та мінімуму серед інтервалів

32.2 Розбиття інтервалів між максимумом та мінімумом на 10 частин

32.3 Цикл по вхідному потоку доки не закінчаться заявки. Якщо кінець то п. 32.7

32.4 Перевірка інтервалів заявки на номер інтервалу

32.5 Додавання одиниці до відповідного стовпчика діаграми

32.6 Перехід на п. 32.3

32.7 3анесення на аркуш "Результати" таблиці з розмірами інтервалу і кількістю потраплянь в ці інтервали.

32.8 Побудова гістограми (виклик підпрограми "Побудова діаграми №2")

33. Кінець