Тема роботи:
Методи управління модельним часом: моделювання з постійним кроком і по особливих станах.
Мета роботи:
Вивчити методи управління модельним часом. Ознайомитися і програмно реалізувати алгоритми управління модельним часом з постійним кроком і по особливих станах.
 
Управління модельним часом.
Приступаючи до вивчення механізмів управління модельним часом, доречно поговорити про те, яку роль взагалі грає час в імітаційному моделюванні. При знайомстві з імітаційним експериментом ми відзначали, що він є спостереженням за поведінкою системи протягом деякого проміжку часу. Звичайно, далеко не у всіх статистичних випробуваннях фактор часу відіграє провідну роль, а в деяких і взагалі може не розглядатися. Наприклад, завдання про обчислення площі круга: отриманий результат не залежав від того, наскільки довго ми «бомбили» квадрат випадковими точками (мова в даному випадку не йде про кількість цих точок).
Але значно більше таких завдань, в яких оцінка ефективності модельованої системи безпосередньо пов'язана з часовими характеристиками її функціонування. До них відносяться згадувані вже завдання з оцінкою продуктивності, деякі завдання з оцінкою надійності, якості розподілу ресурсів, а також всі завдання, пов'язані з дослідженням ефективності процесів обслуговування.
Характерною особливістю більшості практичних завдань є те, що швидкість протікання процесів, що розглядаються в них, значно нижча за швидкість реалізації модельного експерименту. Наприклад, якщо моделюється робота авторемонтної майстерні протягом тижня, навряд чи комусь прийде в голову відтворювати цей процес в моделі в такому ж масштабі часу.
З іншого боку, навіть ті імітаційні експерименти, в яких часові параметри роботи системи не враховуються, вимагають для своєї реалізації певних витрат часу роботи комп'ютера.
У зв'язку з цим при розробці практично будь-якої імітаційної моделі і плануванні проведення модельних експериментів необхідно співвідносити між собою три представлення часу:
реальний час, в якому відбувається функціонування імітованої системи;
модельний (або, як його ще називають, системний) час, в масштабі якого організовується робота моделі;
машинний час, що відображає витрати часу ЕОМ на проведення імітації.
За допомогою механізму модельного часу вирішуються наступні завдання:
відображається перехід модельованої системи з одного стану в інший;
проводиться синхронізація роботи компонент моделі;
змінюється масштаб часу «життя» (функціонування) досліджуваної системи;
проводиться управління ходом модельного експерименту.
моделюється квазіпаралельна реалізація подій в моделі;
Приставка «квазі» в даному випадку відображає послідовний характер обробки подій (процесів) в імітаційній моделі, які в реальній системі виникають (протікають) одночасно.
Необхідність рішення останньої задачі пов'язана з тим, що у розпорядженні дослідника знаходиться, як правило, однопроцесорна обчислювальна система, а модель може містити значно більше число одночасно працюючих підсистем. Тому дійсно паралельна (одночасна) реалізація всіх компонент моделі неможлива. Навіть якщо використовується так звана розподілена модель, що реалізовується на декількох вузлах обчислювальної мережі, зовсім необов'язково число вузлів співпадатиме з числом компонент моделі, що одночасно працюють. Трохи забігаючи вперед, слід зазначити, що реалізація квазіпаралельної роботи компонент моделі є достатньо складним технічним завданням.
Раніше були названі два методи реалізації механізму модельного часу - з постійним кроком і по особливих станах.
Вибір методу реалізації механізму модельного часу залежить від призначення моделі, її складності, характеру досліджуваних процесів, необхідної точності результатів і т.д.
При використанні методу постійного кроку відлік системного часу ведеться через фіксовані, вибрані дослідником інтервали часу. Події в моделі вважаються такими, що наступили у момент закінчення цього інтервалу. Похибка у вимірюванні часових характеристик системи в цьому випадку залежить від величини кроку моделювання Dt.
Метод постійного кроку більш доцільно використовувати, якщо:
події з'являються регулярно, їх розподіл в часі достатньо рівномірний;
число подій велике і моменти їх появи близькі;
неможливо заздалегідь визначити моменти появи подій.
Даний метод управління модельним часом досить просто реалізувати у тому випадку, коли умови появи подій всіх типів в моделі можна представити як функцію часу.
 
Приклад 1.
Нехай, наприклад, подія полягає в тому, що літак, який летить, перетинає деякий повітряний рубіж, відстань до якого рівна R. Якщо літак рухається по прямій з постійною швидкістю V, то можна обчислювати шлях, пройдений літаком, з інтервалом часу ?t: S=S+v*?t. Відповідно подія вважається такою, що наступила, якщо виконується умова S>R, а момент часу настання події приймається рівним n*?t, де n - номер кроку моделювання, на якому умова стала істинною.
У загальному вигляді алгоритм моделювання з постійним кроком представлений на рис. 1.1 (?t — поточне значення модельного часу, Тм — інтервал моделювання).

Рис. 1.1. Алгоритм моделювання з постійним кроком
 
Приклад 2.
З метою деякого «пожвавлення» приведеної вище схеми повернемося в приклад з літаком. Введемо в дану ситуацію ще одну подію, яка полягає в тому, що диспетчер, що спостерігає за літаком, вводить дані про нього в якусь систему управління. Процес введення полягає в наборі на клавіатурі певної текстової інформації. Відома довжина тексту (у символах) і середня швидкість введення одного символу. В ході модельного експерименту потрібно визначити, чи закінчить диспетчер введення тексту до перетину літаком заданого рубежу. Алгоритм управління модельним часом для даного прикладу показаний на рис. 1.2.

Рис. 1.2. Приклад моделювання з постійним кроком
 
Очевидно, що обидва процеси (політ літака і введення інформації) повинні бути «прив'язані» до єдиної осі модельного часу. Разом з тим кожен з них характеризується різною швидкістю, різним ступенем дискретності і т.д. В такій ситуації для різних значень кроку моделювання ?t експеримент може дати різні результати. Причому, якщо крок буде дуже великим, то результат, швидше за все, буде невірним: момент закінчення введення інформації завжди співпадатиме з моментом перетину літаком заданої межі. Така ситуація показана на рис. 1.3.

Рис. 1.3. Приклад прив'язки подій до осі модельного часу
 
Приведений приклад призначений звернути увагу на те, що вибір величини кроку моделювання є нелегким і дуже важливим. Універсальної методики вирішення цієї проблеми не існує, але у багатьох випадках можна використовувати один з наступних підходів:
приймати величину кроку рівною середній інтенсивності виникнення подій різних типів;
вибирати величину ?t рівною середньому інтервалу між найбільш частими (або найбільш важливими) подіями.
 
При моделюванні по особливих станах системний час кожного разу змінюється на величину, строго відповідну інтервалу часу до моменту настання чергової події. В цьому випадку події обробляються в порядку їх настання, а одночасно наступившими вважаються тільки ті, які є одночасними насправді.
Метод моделювання по особливих станах складніший в реалізації, оскільки для нього потрібна розробка спеціальної процедури планування подій (так званого календаря подій).
Моделювання по особливих станах доцільно використовувати, якщо:
події розподіляються в часі нерівномірно або інтервали між ними великі;
пред'являються підвищені вимоги до точності визначення взаємного положення подій в часі;
необхідно реалізувати квазіпаралельну обробку одночасних подій.
Додаткова перевага методу полягає в тому, що він дозволяє економити машинний час, особливо при моделюванні систем періодичної дії, в яких події тривалий час можуть не наступати.
Узагальнена схема алгоритму моделювання по особливих станах представлена на рис. 1.4. (tпов і - прогнозований момент настання i-тої події.)

Рис. 1.4. Алгоритм моделювання по особливих станах
 
Приклад 3.
Щоб краще «відчути різницю» у використанні двох методів управління модельним часом, повернемося ще раз до прикладу з літаком, що летить, і диспетчером.
Цього разу перед розробником моделі встає інша проблема: що розуміти під «особливими станами», які повинні впливати на зміну модельного часу? На практиці зазвичай замість станів розглядають події, що визначають зміну станів модельованого процесу. Для процесу введення інформації диспетчером такий перехід виконується досить просто: подія — це введення чергового символу; іншими словами, введення чергового символу «просуває» модельний час на відповідний інтервал. Все так просто тому, що процес введення є дискретним. А що робити з літаком, що безперервно летить? Тут можливі два варіанти: або пов'язати розрахунок нового положення літака з моментом введення чергового символу, або змінити в моделі представлення польоту з безперервного на дискретне (наприклад, розглядати переміщення не самого літака в повітрі, а його «образу» на екрані індикатора).
Алгоритм роботи моделі для першого варіанту приведений на рис. 1.5.

Рис. 1.5. Приклад роботи моделі по особливих станах
 
А як бути у тому випадку, коли і політ літака, і робота диспетчера схильні до впливу випадкових факторів? Ми відповімо на це питання для не дуже складного, але поширеного в практиці моделювання варіанту, коли дані процеси можуть бути описані за допомогою випадкових величин, розподілених по заданому закону.
Для літака такою величиною служитиме швидкість польоту, а для диспетчера - швидкість введення символів. В цьому випадку зміну модельного часу і розрахунок нового положення літака також можна пов'язати з введенням чергового символу. Логіка роботи такої моделі як і раніше відповідатиме алгоритму зображеному на рис. 1.6.
Відмінність полягає лише в тому, що прогноз часу введення чергового символу виконується на основі функції розподілу відповідної випадкової величини. Так, якщо швидкість введення символів підкоряється нормальному закону з параметрами m і d, чергове і-те значення модельного часу tMiвизначається таким чином:
tMi=tMi-1+norm(m,d),
У цьому виразі доданок norm(m,d) означає звернення до генератора випадкових чисел, розподілених по нормальному закону.
 
Підведемо підсумки викладеному в цьому розділі.
Вибір механізму зміни модельного часу визначає і технологію реалізації імітаційної моделі.
На вибір методу моделювання впливає цілий ряд факторів, проте визначальним є тип модельованої системи: для дискретних систем, події в яких розподілені в часі нерівномірно, зручнішою є зміна модельного часу по особливих станах.
Якщо в моделі повинні бути представлені компоненти реальної системи, робота яких вимірюється в різних одиницях часу, то вони повинні бути заздалегідь приведені до єдиного масштабу.
 
Завдання на лабораторну роботу.
Кожен студент отримує програмний код, в якому вже реалізовано обидва алгоритми управління модельним часом. Дослідити роботу наведеного програмного коду.
Для обох методів зміни модельного часу розробити алгоритм обслуговування викликів з явними втратами, задавши кількість обслуговуючих пристроїв.
Обчислити кількість втрачених викликів (у відсотках).
Знайти кількість обслуговуючих пристроїв, необхідну для обслуговування викликів з заданою ймовірністю втрат (наприклад, не більше 20%).
Порівняти обидва методи з точки зору точності отриманих результатів та часу виконання.
Контрольні запитання.