align="justify"> 3.1 Модельне час
За одиницю модельного часу приймемо 1 хв, щоб не зв'язувати себе малоймовірним припущенням, що всі події займають проміжки часу, кратні одній годині. Інтервал часу між штормами будемо генерувати так
(int) (get_exp (mu) * 60)
де mu = 1/48 = 0,021. Для генерації рівномірного роз-пределенія (для інтервалів між прибуттям танкерів, часу вантаження і циклу обігу) будемо використовувати функцію getuniform (), яка розігрує абсолютне значення відхилення від середнього, а потім з імовірністю 0,5 додає його до середнього або віднімає з нього. Цей спосіб дозволяє зменшити в два рази значення дільника при взятті залишку, а значить, знизити помилку, що виникає через те, що 32 768 не ділиться без остачі на цей дільник. br/>
3.2 Класи і об'єкти
Продовжуємо нарощувати арсенал прийомів, використовуваних для об'єктного представлення динамічних систем. Розглянемо особливості поставленого завдання:
В· Буксир має дві різні черги на обслуговування - на причалювання і на відчалювання. Заявки з черги на відчалювання обслуговуються тільки в тому випадку, якщо чергу на причалювання порожня.
В· Система поєднує в собі властивості як відкритої, так і замкнутою. Кількість заявок перших трьох типів є змінною необмеженої величиною, так як вони надходять із зовнішнього вхідного потоку і, будучи обслужених, залишають систему, після чого їх подальша доля не відстежується. Кількість же заявок додаткового, четвертого типу є постійним, кожна з них періодично повертається на обслуговування в систему, і за ними потрібно продовжувати стежити в проміжках між періодами обслуговування (подорож з Африки до Великобританії на розвантаження нафти і назад). У зв'язку з цим заявки перших трьох типів будемо називати неіменованого, а заявки четвертого типу - іменованими.
Три типи неіменованого заявок, зрозуміло, можна описати одним класом, так як вони різняться тільки значеннями своїх незмінних полів даних - частотою зустрічальності і часом обслуговування. Так як неіменовані заявки постійно перебувають під контролем деякого обслуговуючого пристрою - буксира або порту, - метод run () для них не потрібен, їх постоянка будуть В«вестиВ» інші об'єкти, а після виходу з порту вони як об'єкти перестають існувати. На противагу цьому іменовані заявки після виходу з порту пускаються В«в самостійне плаванняВ», продовжуючи існувати в якості повноправних об'єктів системи. У цей час вони самі повинні стежити за собою і зрештою зафіксувати момент наступного прибуття на навантаження. Дуже показова різниця між механізмами фіксації прибуття неіменованого і іменованих заявок. Неіменовані заявки надходять з випадкового вхідного потоку, тому час їх прибуття розігрується ...