Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Алгоритм імітаційного моделювання СМО

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

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

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

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

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

2. Об'ява та ініціалізація змінних:
п - кількість каналів

m - кількість місць в черзі tm - час моделювання j - поточна позиція на аркуші kl - кількість зайнятих каналів к2 - кількість зайнятих місць в черзі z - кількість відкинутих заявок ul - інтервал вхідного потоку и2 - інтервал вихідного потоку иЗ - інтервал пріоритетного потоку

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

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

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

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

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

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

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

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

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

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

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

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

fGaussl,fGauss2

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

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

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

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

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

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

 

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

 

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

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

16.3 Сортування каналу по часу виконання
16.4Перехіднап.11

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

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

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

П.ЗПерехід нап.Н

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

18.1 Звільнити перше місце в черзі 18.2Перехід нап.11

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

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

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

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

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

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

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

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

23.1 Поставити заявку в чергу з поточним часом 23.2Сортування черги (виклик підпрограми "Сортування черги ") 23.3 Реєстрація зайнятості черги 23.4Перехід на п.11

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

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

 

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

часу

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

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

- частота попадань інтервалів часу появи заявок в ці інтервали часу
31. Розрахунок діаграм вхідного потоку (Діаграма № 1)

 

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

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

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

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

31.5Додавання одиниці до відповідного стовпчика діаграми
31 .бПерехід на п. 31.3

 

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

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

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

на 10

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

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

частин

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

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

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

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

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

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

33. Кінець

 

Підпрограма "Моделювання вхідного потоку"

Початок

Вибір типу вхідного потоку:

Гаус

Експоненціальний (Пуассон)

Ерланг

Рівномірний Якщо (1), то формуємо вхідний потік:

3.1 формуємо оператором RND 2 випадкові величини (ksil, ksi2).

3.2 отримуємо 2 випадкові величини(\^аіі55Іп1, Vgaussin2) за
формулою

Vgaussinl=1.5^(2*0.434294*Log(l/ksil))*cos(ksi2*6.292184) Vgaussinl=1.5V(2*0.434294*Log(l/ksil))*sin(ksi2*6.292184)

3.3 Перевірка: яке звернення до функції (п.3.2). Якщо непарне, то
йде запит двох випадкових величин п.3.2 - Vgaussinl, Vgaussin2 і видати
на виході 1-е (Vgaussinl). Якщо парне, то видати 2-ге - Vgaussin2 і
встановити ознаку, що наступне значення буде непарне.

4. Якщо (2), то формуємо вхідний потік випадкових чисел за
розподілом Пуассона за формулою:

Vexp=-(Matnbda)*Log(l- RND())

5. Якщо (3), то формуємо вхідний потік випадкових чисел за
розподілом Ерланга:

{Програма дозволяє обирати варіант формули — за проф. Соболем А. М. або за проф. Четверухіним Б.М.)

Формування потоку за методикою проф.Соболя A.M.:

5.1 Цикл від 1 до nsito (nsito- параметр Ерланга). Якщо кінець
циклу, то п.5.5

5.2 Формування випадкових величин (vrand) за допомогою
оператора RND

5.3 Розрахунок добутку випадкових величин, які були сформовані в
п.5.2

5.4 Повернення до п.5.1

5.5 Формування інтервалів випадкових подій за формулою:
vErlang=-( I /(Lambda*nsito))*Log(vrand)

Формування потоку за методикою проф. Четверухіна Б.М.:

5.6 Цикл від 1 до nsito (nsito- параметр Ерланга). Якщо кінець
циклу, то п.5.9

5.7 Формування випадкових величин (vrand) за допомогою
оператора RND за формулою:

vrand=Log(l-RND())

5.8 Повернення до п.5.6

5.9 Формування інтервалів випадкових подій за формулою:
vv=-(( I /(Lambda*nsito)))* vrand)/SQR(nsito)
vErlang=(vv+l/(2*Lambda*nsito))*nsito)

6. Якщо (4), то формуємо вхідний потік випадкових чисел за
рівномірним розподілом за формулою:

uniform=RND()*(B-A)+A

7. Кінець

Підпрограма "Моделювання вихідного потоку"

1. Початок

2. Вибір типу вихідного потоку:

(1)Гаус

(2) Експоненціальний (Пуассон) (З)Ерланг (4) Рівномірний

3. Якщо(1), то формуємо вихідний потік:

3.1 формуємо оператором RND 2 випадкові величини (ksil, ksi2).

3.2 отримуємо 2 випадкові величини(\^ашзіп1, Vgaussin2) за
формулою

Vgaussinl=1.5V(2*0.434294*Log(l/ksil))*cos(ksi2*6.292184) Vgaussinl=1.5V(2*0.434294*Log(l/ksil))*sin(ksi2*6.292184)

3.3 Перевірка: яке звернення до функції (п.3.2). Якщо непарне, то
йде запит двох випадкових величин п.3.2 - Vgaussinl, Vgaussin2 і видати
на виході 1-е (Vgaussinl). Якщо парне, то видати 2-ге - Vgaussin2 і
встановити ознаку, що наступне значення буде непарне.

4. Якщо (2), то формуємо вихідний потік випадкових чисел за
розподілом Пуассона за формулою:

Vexp=-(Mambda)*Log(l- RND())

5. Якщо (3), то формуємо вихідний потік випадкових чисел за
розподілом Ерланга за формулою:

(Програма дозволяє обирати варіант формули — за проф. Соболем А. М. та за проф. Четверухіним Б.М.) за проф. Соболем A.M.:

5.1 Цикл від 1 до nsito (nsito- параметр Ерланга). Якщо кінець
циклу, то п.5.5

5.2 Формування випадкових величин (vrand) за допомогою
оператора RND

5.3 Розрахунок добутку випадкових величин які були сформовані в
п.5.2

5.4 Повернення до п.5.1

5.5 Формування інтервалів випадкових подій за формулою:
vErlang=-(l/(Lambda*nsito))*Log(vrand)

за проф. Четверухіним Б.М.

5.6 Цикл від 1 до nsito (nsito- параметр Ерланга). Якщо кінець
циклу, то п.5.9

5.7 Формування випадкових величин (vrand) за допомогою
оператора RND за формулою:

vrand=Log(l-RND())

5.8 Повернення до п.5.6

5.9 Формування інтервалів випадкових подій за формулою:
vv=-(( I /(Lambda*nsito)))*vrand)/SQR(nsito)
vErlang=(w+l/(2*Lambda*nsito))*nsito)

6. Якщо (4), то формуємо вихідний потік випадкових чисел за
рівномірним розподілом за формулою:

uniform=RND()*(B-A)+A

7. Кінець

Підпрограма "Сортування каналів"

1. Початок

2. Цикл з кінця масиву мінус Ці - змінна циклу). Якщо кінець
циклу - перехід на п.7

3. цикл від 1 до і. Якщо кінець циклу перехід на п.6

4. якщо поточний час більше наступного часу то міняємо місцями
в обох стовпчиках масиву.

5. перехід на п.З

6. перехід на п.2

кінець.

Підпрограма " Сортування черги"

 

1. Початок

2. цикл з кінця масиву мінус 1. (іі - змінна масиву). Якщо кінець,
то перехід на п.7

3. цикл від 1 до іі. Якщо кінець, то перехід на п.6

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

5. перехід на п.З

6. перехід на п.2

7. Кінець.

Підпрограма "Перевірка зайнятості каналів"

1. Початок

2. Цикл від 1 до п (п - кількість каналів). Якщо кінець, то перехід
на п.6

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

4. зареєструвати час звільнення каналу.

5. перехід на п.2

кінець

Підпрограма "Перенесення заявкиз черги в канал"

1. Початок

2. цикл по черзі від 1 до m (m - кількість місць в черзі). Якщо
кінець циклу то п.6

3. якщо час постановки в чергу не дорівнює 0 то п.4, якщо
дорівнює 0 то нічого

4. визначити скільки часу буде обслужуватись заявка і
переноситься в канал

5. перехід на п.2

6. кінець.

Підпрограма " Побудова діаграми №1 розподілу часових інтервалів вхідного потоку"

v 1. початок

2. перевірка наявності аркуша "Діаграма №1". Якщо є, то
знищуємо.

Створюємо діаграму №1. Розміщення на новому аркуші.
(Будується по значенням аркушу "Результати" по таблиці вхідного потоку)

4. Задаємо властивості діаграми:

4.1 Без легенди

4.2 Має заголовок, який має назву "Вхідний потік"

4.3 Розмір шрифту 12

4.4 Шрифт "Sans serif

4.5 Діаграма має вісь значень(Ох) і вісь результатів(Оу)

4.6 Має допоміжні лінії сітки

4.7 Вісь Ох має назву "Інтервали часу"

4.8 Розмір шрифту 12

4.9 Шрифт "Sans serif'

4.10Вісь Оу має назву "Частота потраплянь"

4.11Розмір шрифту 12

4.12Шрифт "Sans serif

5. Кінець.

Підпрограма " Побудова діаграми №2




Переглядів: 469

<== попередня сторінка | наступна сторінка ==>
Імітаційне моделювання транспортних систем масового обслуговування | Розподілу часових інтервалів

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.029 сек.