"Модель зупинки маршрутного таксі"
1.Визначення проблеми
інтервал пасажир таксі зупинка
Даний приклад ілюструє принцип роботи вузла delet: перший увійшов в нього транзакт стає ніби візком, в яку збираються транзакти, що входять слідом.
Як тільки у вузлі набереться задану кількість транзактов, вони знищуються, а перший переходить у наступний вузол: візок їде, а предмети, зібрані в неї, перестають існувати як заявки на обслуговування в системі. Мається зупинка маршрутного таксі. З певними інтервалами часу на зупинку приходять пасажири і під'їжджають таксі. p align="justify"> Таксі їде, коли в нього сяде 10 пасажирів. Якщо прийшов пасажир не виявляє стоїть таксі, він встає в чергу на посадку. Якщо таксі під'їхало на порожню зупинку, воно чекає пасажирів. Якщо таксі під'їхало, а на зупинці вже коштує таксі, воно постає в чергу таксі. br/>
Таблиця. Параметри моделі
ПараметрСреднее значеніеІнтервал приходу пассажіров1 мінутаІнтервал приїзду таксі10 хвилин
2.Схема моделі
Схема даної моделі представлена ​​на малюнку 1.
В
Рис.1-схема моделі
Інтервал генерації транзактов, що імітують таксі, має нормальний розподіл, так як зупинку обслуговують таксі з одного парку, а не кількох. Використання в описі генератора 6 нормального закону розподілу інтервалу генерації означає, що час між приїздами таксі на зупинку частіше виявляється ближче до свого середнього значення і рідше - далі від нього (чим більше відхилення інтервалу від середнього, тим рідше це буває). p align="justify"> Вузли 2 і 7 імітують відповідно черзі пасажирів і таксі. Ключ 8 на початку роботи моделі знаходиться у відкритому стані (за замовчуванням), а ключ 3 закривається при приході в чергу 2 першого транзакта. Це робиться для того, щоб у вузол delet першим увійшов транзакт-таксі, а не пасажир (інакше пасажир стане В«візкомВ»). p align="justify"> Як тільки в delet увійде перший транзакт-таксі, ключ 8 закривається, а ключ 3 відкривається. Тепер виходять з генератора 6 транзакти-таксі стоять в черзі 7, а транзакти-пасажири заходять у вузол delet (йде заповнення таксі). Коли у вузлі накопичиться 10 транзактов-пасажирів, транзакт-таксі перейде в термінатор (заповнене таксі виїде). Ключ 8 відкривається, щоб у delet міг зайти наступний транзакт-таксі. Ключ 3 закривається, щоб транзакти-пасажири стояли в черзі 2 до приходу в delet транзакта-таксі. p align="justify"> Таким чином, в моделі ключі 3 і 8 завжди знаходяться в протилежних станах - якщо один відкритий, то інший закритий. Тим самим чергується доступ до вузла delet різних типів транзактов - таксі та пасажирів. br/>
. Текст моделі на мові С + +
Після опису всіх вузлів можна генерувати С + + файл. Далі створюється виконуваний файл за допомогою програми Microsoft Developer Studio. Текс моделі:
Таблиця
# include float Pas = 1.0; float Tax = 10.0; float Mod_time = 360.0; forward {modbeg ("маршр. таксі", 108, Mod_time, (long) time (NULL), none, 1, none, 4, 2); ag ("Пасажири", 107, none, expo, Pas, zero, zero, 101); ag ("Таксі", 108, none, norm, Tax, Tax/3, zero, 105); network (dummy, dummy) {top (101): t-> ft = 1; queue ("Пасажири", none, 102); place; top (102): if (addr [103] -> tn == 1) rels (102); else hold (102); key ("Є таксі?", 103); place; top (103): delet ("Посадка в таксі ", 1, 1, 0, 10, 104); rels (102); hold (106); place; top (104): term (" Таксі виїхало "); hold (102); rels (106) ; place; top (105): queue ("Таксі", none, 106); place; top (106): key ("Зупинка вільна?", 103); place; fault (123);} modend ( "resultat1.doc", 1, 12, page); return 0;}
4.Одержання результатів моделювання
* ---------------------------- *
| НАЗВА МОДЕЛІ: маршр. таксі |
| ЧАС МОДЕЛЮВАННЯ: 361.71 Лист: 1 |
| -------------------------- |
| | | | | | | 2 | | | | |
| No | Найменування | Тип | Точ-| Завантаж-| M [t] | C [t] | Лічильник | Кол. | Оcт. | Стан вузла |
| вузла | вузла | вузла | ка | ка (% =), | середнє | квадрат | входів | кан. | тр. | В цей момент |
| | | | | Шлях (км) час | коеф.вар. | і hold | | | |
| | | | | | | | | | | |
| 101 Пасажири queue - 0.18 27.74 369 1 січня відкрито |
...