Please use this identifier to cite or link to this item: https://er.chdtu.edu.ua/handle/ChSTU/8969
Title: Система для пошуку оптимального маршруту транспортних перевезень
Authors: Федоров, Євген Євгенович
Биченко, Олексій Юрійович
Issue Date: Jun-2022
Abstract: В роботі було поставлено та виконано такі завдання: - проведено аналітичний огляд та аналіз об'єкта комп'ютеризації ТОВ «Рамус». - досліджено та реалізовано алгоритм Дейкстри пошуку оптимального маршруту для підвищення ефективності перевезень; - здійснено реалізацію програмного комплексу для встановлення зв'язку між структурами та підрозділами; - проведено тестування реалізованого програмного комплексу.
URI: https://er.chdtu.edu.ua/handle/ChSTU/8969
Appears in Collections:174 Автоматизація, комп'ютерно-інтегровані технології та робототехніка (Автоматизація та комп'ютерно-інтегровані системи та компоненти)

Files in This Item:
File Description SizeFormat 
Б_174_2022_Биченко.pdf
  Restricted Access
1.35 MBAdobe PDFView/Open Request a copy


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.

Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ 
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ 
ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ І СИСТЕМ 
КАФЕДРА РОБОТОТЕХНІКИ ТА СПЕЦІАЛІЗОВАНИХ КОМП’ЮТЕРНИХ 
СИСТЕМ 
Пояснювальна записка 
до кваліфікаційної роботи 
освітнього ступеня «бакалавр» 
 на тему: Система для пошуку оптимального маршруту 
транспортних перевезень 
 
 
 
 
Виконав: студент  4  курсу, групи АКІТ-2099 
 спеціальності 151 – Автоматизація 
та комп’ютерно-інтегровані 
технології 
  
 Биченко О.Ю. 
 (прізвище та ініціали) 
Керівник Федоров Є.Є. 
 (прізвище та ініціали) 
Рецензент Пономар Л.Л. 
 (прізвище та ініціали) 
 
 
 
 
Черкаси 2022 року 
 
 
ЗМІСТ 
ЗМІСТ .................................................................................................................................................. 2 
вступ .................................................................................................................................................... 4 
1 АНАЛІТИЧНИЙ ОГЛЯД АНАЛОГІЧНИХ ПІДСИСТЕМ ........................................................ 6 
2 ТЕХНІЧНЕ ЗАВДАННЯ НА СТВОРЕННЯ СКС ВИЗНАЧЕННЯ ОПТИМАЛЬНОГО 
МАРШРУТУ ....................................................................................................................................... 9 
2.1 Призначення та мета створення СКС .............................................................. 9 
2.2 Характеристика об'єкта комп'ютеризації ...................................................... 11 
2.3 Вимоги до СКС загалом ................................................................................. 19 
2.4 Вимоги до функцій, що виконуються СКС .................................................. 21 
3 ФУНКЦІОНАЛЬНА СТРУКТУРА ............................................................................................. 22 
4 ІНФОРМАЦІЙНЕ ЗАБЕЗПЕЧЕННЯ .......................................................................................... 27 
4.1 Вибір засобу управління даними ................................................................... 27 
4.2 Реализація бази даних ..................................................................................... 27 
5 МАТЕМАТИЧНЕ ЗАБЕЗПЕЧЕННЯ .......................................................................................... 31 
5.1 Оптимізація маршруту .................................................................................... 31 
5.2 Схема програмної реалізації алгоритму Дейкстри ...................................... 37 
6 ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ................................................................................................. 39 
7 ТЕХНІЧНЕ ЗАБЕЗПЕЧЕННЯ...................................................................................................... 48 
7.1 Основні компоненти сервера ......................................................................... 48 
7.2 Основні компоненти робочої станції ............................................................ 56 
8 ТЕСТУВАННЯ СКС ..................................................................................................................... 58 
ВИСНОВКИ ...................................................................................................................................... 61 
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ........................................................................................ 62 
ДОДАТОК А  Структура таблиць інформаційної бази даних ..................................................... 64 
ДОДАТОК Б Список використовуваних програмних скорочень з описом технологій ............ 69 
ДОДАТОК В Програмна реалізація алгоритму дейкстри мовою PHP ....................................... 73 
ДОДАТОК Г Реалізація програмного забезпечення мовою PHP ................................................ 75 
 
Лист 
ЧДТУ. 222089.001 ПЗ 
3 
Змн. Лист № докум. Підпис Дата 
 
ВСТУП 
 
Транспорт є областю, що знаходиться на стику виробничої сфери та 
сфери послуг. Транспорт не створює жодних матеріальних цінностей, а 
забезпечує перевезення вантажів та пасажирів, що забезпечує зв'язки між 
підприємствами, областями та регіонами. Транспорт називають «кровоносною 
системою економіки», так як він є необхідною умовою функціонування 
господарства [1]. 
Транспорт поділяється на вантажний та пасажирський, залежно від того, 
які об'єкти перевозяться. Вантажний транспорт забезпечує виробничі зв'язки 
між підприємствами та доставку населенню продуктів споживання; основними 
показниками ефективності його роботи є вантажоперевезення (кількість 
перевезеного за рік вантажу в тонах) та вантажообіг (добуток обсягу 
перевезеного вантажу на відстань перевезень (т.км.)). 
Пасажирський транспорт забезпечує перевезення населення; його 
основними показниками є пасажироперевезення (кількість пасажирів, 
перевезених за рік) та пасажирообіг (добуток кількості пасажирів на відстань 
перевезень, що вимірюється в пасажирокилометрах). 
Вирізняють такі види транспорту: залізничний, автомобільний, 
трубопровідний, морський, річковий, авіаційний [2] 
Залежно від середовища переміщення їх групують у наземний, водний та 
повітряний транспорт. 
Кожен має свою специфіку. Для забезпечення роботи господарства країни 
всі види транспорту повинні бути взаємопов'язані, працювати злагоджено. 
Сукупність всіх видів транспорту, об'єднаних між собою транспортними 
мережами та вузлами, у яких здійснюється обмін вантажами та пасажирами, 
називається транспортною системою. 
Автомобільний транспорт здійснює перевезення різноманітних вантажів 
та пасажирів переважно на короткі та середні відстані. За кількістю 
Лист 
ЧДТУ. 222089.001 ПЗ 
4 
Змн. Лист № докум. Підпис Дата 
 
перевезених вантажів та пасажирів йому немає рівних серед усіх видів 
транспорту. 
Загальна довжина всіх автомобільних доріг України становить 169 тис. 
км., майже всі вони – з твердим покриттям. Переважання рівнинного рельєфу 
сприяє більш менш рівномірному розвитку автомобільної мережі на всій 
території України. 
Найважливіші автомагістралі: 
 -Київ – Житомир – Рівне – Львів – Ужгород; 
-Київ – Полтава – Харків; 
-Київ – Умань – Одеса; 
-Харків – Запоріжжя – Сімферополь. 
Автомагістралями називають шляхи, які забезпечують високу пропускну 
здатність та швидкість руху. Серед них виділяються автостради – дороги, що 
мають по кілька смуг в обох напрямках руху та не мають перетину з іншими 
дорогами на одному рівні. По довжині автострад Україна поступається 
багатьом європейським країнам [2]. 
Великими транспортними вузлами є Київ, Харків, Дніпро, Донецьк, 
Запоріжжя, Умань, Львів. Зростає роль автомобільного транспорту у 
перевезеннях на далекі відстані та у міжнародному сполученні. Основні 
"виходи" з України – автодороги з Ковеля, Львова, Ужгорода, Чернівців, Одеси, 
Ізмаїла, Маріуполя, Харкова, Сум, Глухова, Чернігова. 
Таким чином, метою розробки АСУ ТЗ є підвищення якості процесу 
вантажопасажирських перевезень через підвищення ефективності використання 
ресурсів — транспортних засобів (ТЗ), технічних засобів організації руху 
(ТЗОР). 
 
 
Лист 
ЧДТУ. 222089.001 ПЗ 
5 
Змн. Лист № докум. Підпис Дата 
 
1 АНАЛІТИЧНИЙ ОГЛЯД АНАЛОГІЧНИХ ПІДСИСТЕМ 
 
Багато фірм займаються розробкою та продажем спеціальних програм 
маршрутизації та калькуляції собівартості перевезень, оптимального 
завантаження транспортних засобів, постачання запасних частин. З їхньою 
допомогою можна виконувати розрахунки протяжності маршрутів, часу їх 
проходження, зупинок на прикордонних переходах та заправках. Вони також 
дозволяють оперативно оцінювати дорожні умови, витрату палива на маршруті 
та розробку докладної легенди проходження маршрутів для водіїв. 
Наприклад, пакет MS Auto-Route Express є електронним атласом з базою 
даних про населені пункти і дороги, що ідентифікує і територію Росії. Він 
призначений для планування автомобільних маршрутів із візуальним 
представленням результатів у вигляді схеми маршруту та легенди його 
проходження. Результати планування можуть бути виведені на друк та записані 
до файлу для подальшого використання. У легенді та на карті маршруту 
записуються номери доріг за прийнятою класифікацією, місця зупинок для 
відпочинку та заправки паливом, а також населені пункти, пройдена відстань та 
напрямок руху від кожного населеного пункту на трасі маршруту [3]. 
Система має розвинений, сучасний інтерфейс і має досить широкі 
можливості для налаштування. Є можливість редагування таких 
експлуатаційних характеристик, як швидкість руху на дорогах, питома витрата 
палива, добовий режим руху та тривалість простоїв у проміжних пунктах. 
Небажані напрямки руху або окремі автодороги можуть бути блоковані та 
виключені з розгляду під час планування маршруту. 
Современные системы, используемые в транспортных организациях: 
Сучасні системи, що використовуються в транспортних організаціях: 
Система Gonrand. Одним із завдань інформаційної системи Gonrand є 
збирання інформації про наявність вантажу. Перевізник дає заявку про вільні 
провізні можливості та напрямок перевезення. Інформація заноситься до бази 
даних. Інформація про вантажі надходить у систему безперервно. Система 
Лист 
ЧДТУ. 222089.001 ПЗ 
6 
Змн. Лист № докум. Підпис Дата 
 
дозволяє групувати вантажі за відправниками, одержувачами, кількістю місць і 
видає інформацію про відправлення, найменування вантажоодержувача, номер 
автомобіля, замовника, код департаменту та суму відправлень по 
департаментах. 
Система Videotrans призначена для інформаційного обслуговування 
підприємств транспорту, які можуть отримувати довідки та вводити 
інформацію про наявність у їхньому розпорядженні транспортних засобів або 
товару для доставки. 
Система СТС надає для експедиторів інформацію про наявність вантажів, 
типи автомобілів, маршрути найбільш раціонального руху, адреси 
транспортних фірм, що мають у наявності вільний рухомий склад, тощо. Для 
перевізників система надає таку інформацію: можливість завантаження 
вантажем, адреса відправника, місце та час завантаження, час прибуття з 
вантажем, адреса одержувача тощо [4]. 
Система BRS функціонує аналогічно до системи СТС. Відправник 
вантажу контактує не з перевізником, а з інформаційною системою. Фірма 
гарантує оплату перевізникам виконаного перевезення, якщо замовник не 
здійснив своєчасно оплату, що підвищує привабливість обслуговування, 
розширюючи цим охоплення ринку споживачів. 
Система Espace Cat повідомляє користувачеві параметри вантажів, що 
перевозяться, і схеми їх розміщення в кузові транспортного засобу, 
представляючи ці дані у вигляді тривимірних графіків. Система визначає 
параметри оптимальної упаковки. Маючи модульну структуру, вона досить 
легко пристосовується до вимог користувачів. 
Створення інтегрованих систем підтримки прийняття рішень під час 
управління розподілом товарів є актуальною проблемою. Такі інтегровані 
системи включають бази та банки даних, банки моделей, систему 
інформаційної підтримки та дозволяють проводити експертні та аналітичні 
оцінки при прийнятті рішень. 
Лист 
ЧДТУ. 222089.001 ПЗ 
7 
Змн. Лист № докум. Підпис Дата 
 
Система ISCIS є інтегрованою інформаційною системою, яка обслуговує 
логістичний канал. Час доставки повідомлень з будь-якої точки земної кулі в 
іншу обмежується лише тривалістю процесу переформатування даних, часом 
очікування початку обслуговування, а обробка повідомлень проводиться в 
режимі реального часу, що суттєво важливо для постачальників та споживачів, 
що працюють за системою Kanban, «точно в термін» та ін. 
Система GPS/ГЛОНАСС – автоматизована глобальна супутникова 
система, призначена для визначення широти та довготи місцезнаходження 
транспортного засобу (судна, літака, вантажного автомобіля тощо). Система 
пов'язана із штучними супутниками Землі. Кожен супутник безперервно 
передає в ефір сигнали часу та координати свого місцезнаходження. 
Транспортний засіб має бути оснащений спеціальним приймальним пристроєм, 
який приймає сигнали з трьох супутників одночасно, обробляє їх та виводить 
координати точки місцезнаходження на дисплей (похибка результатів не 
більше 3-15 м). 
Лист 
ЧДТУ. 222089.001 ПЗ 
8 
Змн. Лист № докум. Підпис Дата 
 
2 ТЕХНІЧНЕ ЗАВДАННЯ НА СТВОРЕННЯ СКС ВИЗНАЧЕННЯ 
ОПТИМАЛЬНОГО МАРШРУТУ 
 
Темпи розвитку та розширення сфери інформації нині дуже високі. 
Характерною рисою більшості процесів, у тому числі і транспортних, є 
постійне розширення та створення нових інформаційних зв'язків, які 
удосконалюються та набувають нових функцій завдяки застосуванню сучасної 
техніки та технології [5]. 
 Ефективність функціонування системи залежить від ефективності 
управління технологічними, організаційними та іншими процесами. Отже, 
найважливішим стає забезпечення безперервності керованих процесів у 
вузлових точках, де здійснюється проходження вантажів між мережами різних 
транспортних агентів і тим самим там, де здійснюється проходження 
інформації між різними мережами [6]. 
 
2.1 Призначення та мета створення СКС 
Важко уявити формування та організацію роботи ланцюгів доставки 
товарів без інтенсивного оперативного обміну інформацією між учасниками 
транспортного процесу, без можливостей швидкого реагування потреби ринку 
транспортних послуг. Сьогодні практично неможливо забезпечити необхідну 
споживачами якість обслуговування та ефективність транспортних операцій без 
застосування інформаційних систем та програмних комплексів для аналізу, 
планування та підтримки прийняття комерційних рішень. Більше того, саме 
завдяки розвитку інформаційних систем та технологій, що забезпечило 
можливість автоматизації типових операцій у транспортних процесах, логістика 
стала домінуючою формою організації руху товару на технологічно 
висококонкурентному ринку транспортних послуг [5]. 
Неможливо уявити розвиток логістики без застосування інформаційних 
технологій. Логістика допомагає у вантажоперевезеннях знайти оптимальний 
Лист 
ЧДТУ. 222089.001 ПЗ 
9 
Змн. Лист № докум. Підпис Дата 
 
шлях виконання замовлення, а також визначає напрямок, у якому має 
розвиватися транспортна компанія. Використання комп'ютерів, баз даних, і 
інтернету забезпечує логістикам виявлення загальної картини, швидкість 
реагування потреби ринку, і навіть складання складних ланцюгів перевезень 
вантажів, коли необхідно, наприклад, переправити вантаж декількома видами 
транспорту, і навіть у процесі навантаження організувати складування і 
зберігання вантажів. 
Застосовуючи останні досягнення комунікацій зв'язку, працівники 
транспортних компаній можуть постійно перебувати на зв'язку, як із 
замовниками, так і з усіма учасниками процесу, таким чином організуючи 
більш злагоджений процес транспортування вантажу. 
Таким чином, на основі всього вищесказаного можна зробити висновок, 
що інформаційні технології в системі вантажних перевезень відіграють все 
більшу роль, без подальшого розвитку в цьому напрямку удосконалення та 
підвищення якості послуг транспортних компаній просто неможливе, про це 
свідчить і досвід закордонних перевізників. 
СКС, що розробляється в дипломному проекті, призначена для 
підвищення ефективності перевезень, що здійснюються підприємством ТОВ 
«Рамус». 
Целью является специализированная компьютерная система для 
определения оптимального маршрута в условиях транспортного предприятия.  
Для досягнення поставленої мети необхідно вирішити такі завдання: 
- Провести аналіз об'єкта комп'ютеризації ТОВ «Рамус»; 
- розробити базу даних для визначення вибору рейсу та вибору водія; 
- дослідити та реалізувати алгоритм Дейкстри пошуку оптимального 
маршруту для підвищення ефективності перевезень; 
- здійснити реалізацію програмного комплексу; 
- для встановлення зв'язку між структурами та підрозділами об'єктів 
компанії розробити структуру комп'ютерної мережі; 
- Провести тестування реалізованого програмного комплексу; 
Лист 
ЧДТУ. 222089.001 ПЗ 
10 
Змн. Лист № докум. Підпис Дата 
 
- Провести оцінку ефективності. 
 
2.2 Характеристика об'єкта комп'ютеризації 
Опис структури та процесу функціонування об'єкта. 
Структура транспортного підприємства зображено  рисунку 2.1. 
 
Рисунок 2.1 - Структура транспортного підприємства. 
 
Така структура характеризується використанням формальних процедур та 
правил, жорсткою ієрархією влади в організації, централізацією прийняття 
рішень. Кожен виконавець підпорядковується лише одному керівнику. Всі 
вказівки та рішення щодо функцій управління виконавець отримує від 
безпосереднього керівника. Між виконавцем та функціональними підрозділами 
залишаються інформаційні зв'язки методичного та консультаційного характеру. 
Для того щоб рішення функціонального підрозділу стало директивним, воно 
має бути затверджено керівником. 
Лист 
ЧДТУ. 222089.001 ПЗ 
11 
Змн. Лист № докум. Підпис Дата 
 
Незважаючи на те, що, в принципі, всі керівники АТП виконують 
управлінські дії, не можна сказати, що вони займаються одним і тим же видом 
трудової діяльності. Окремим керівникам доводиться витрачати час на 
координування роботи інших керівників, які, своєю чергою, координують 
роботу співробітників нижчого рівня тощо. до рівня керівника, який координує 
дії неуправлінського персоналу – людей, які фізично виробляють продукцію 
або надають послуги. Таке вертикальне розгортання поділу праці та утворює 
рівні управління. 
У організаціях, що з багатьох частин, повинна здійснюватися певним 
чином координація їх діяльності. Саме вона є основою структури організації, 
яку зазвичай визначають як сукупність стійких зв'язків у організації. 
Взагалі, у будь-яких організаціях, зокрема й АТП, виділяють кілька типів 
зв'язків. Найчастіше аналізу піддаються такі пари зв'язків: вертикальні та 
горизонтальні; лінійні та функціональні [7]. 
Вертикальні зв'язки поєднують ієрархічні рівні в організації та її 
частинах. Вони формалізуються у процесі проектування організації, діють 
постійно і зображуються усім можливих схемах, відбиваючи розподіл 
повноважень чи вказуючи те, «хто є хто» в організаційної ієрархії. Дані зв'язку 
служать каналами передачі розпорядчої та звітної інформації, створюючи цим 
стабільність у створенні. У межах вертикальних зв'язків вирішуються проблеми 
влади, і впливу, тобто. реалізується «вертикальне завантаження» роботи. 
Зазвичай зростання організації супроводжується зростанням вертикальних 
зв'язків, отже за кількістю цих зв'язків можна будувати висновки про розмір 
організації. 
Горизонтальні зв'язки – це зв'язки між двома або рівними за становищем 
у ієрархії чи статусу частинами чи членами організації. Їх головне призначення 
– сприяти найефективнішому взаємодії елементів організації під час вирішення 
виникаючих з-поміж них проблем. Вони допомагають зміцнювати вертикальні 
зв'язки та роблять організацію в цілому більш стійкою при різних зовнішніх та 
внутрішніх змінах. 
Лист 
ЧДТУ. 222089.001 ПЗ 
12 
Змн. Лист № докум. Підпис Дата 
 
Горизонтальні зв'язки створюють низку важливих переваг. Вони 
економлять час та підвищують якість взаємодії. Горизонтальні зв'язки 
розвивають у керівників самостійність, ініціативність та мотивованість, 
послаблюють страх ризику. Тому особливий інтерес представляє аналіз 
практики та вивчення способів встановлення таких зв'язків. У випадку, коли 
горизонтальні зв'язки встановлюються на неформальній основі вищим 
керівником, вони зазвичай мають прив'язку до часу, події або людей [5]. 
Так, наприклад, директор може запропонувати головному економісту та 
начальнику відділу кадрів самостійно вирішувати питання встановлення 
окладів для працівників, оскільки він довіряє їм. Але, як тільки один з них 
залишить посаду з якихось причин, керівник швидше за все поверне це право 
собі назад і користуватиметься ним доти, доки інший співробітник не 
заслужить у нього довіри. 
Ще однією парою зв'язків, які встановлюються в організації, є лінійні та 
функціональні зв'язки. 
Лінійні зв'язку – це відносини, у яких начальник реалізує свої владні 
правничий та здійснює пряме керівництво підлеглими, тобто. зв'язки йдуть в 
організаційній ієрархії зверху донизу і виступають, як правило, у формі наказу, 
розпорядження, команди, вказівки. Природа функціональних зв'язків – дорадча, 
і з цих зв'язків реалізується інформаційне забезпечення координації [6]. 
Таким чином, зв'язки забезпечують цілісну роботу підприємства, 
об'єднують усі його ланки. 
Основою роботи підприємства є функціональні обов'язки підрозділів. 
Саме вони й становлять сукупну діяльність підприємства. 
Для нормального функціонування АТП необхідно, щоб його підрозділи 
працювали у потрібному графіку і відповідно до потреб ринку, тобто. повинні 
бути гнучкими, а також вчасно та в повному обсязі виконали свої функції. 
Наприклад, генеральний директор має право розпоряджатися коштами та 
майном підприємства, укладати договори, відкривати рахунки та 
розпоряджатися ними, видавати накази по підприємству, приймати та звільняти 
Лист 
ЧДТУ. 222089.001 ПЗ 
13 
Змн. Лист № докум. Підпис Дата 
 
працівників, застосовувати до них заходи заохочення та накладати стягнення. 
Разом з тим, генеральний директор відповідає за правильне та ефективне 
використання матеріальних та трудових ресурсів підприємства, покращення 
умов та охорону праці. Якщо говорити в цілому, то генеральний директор 
організує роботу колективу підприємства, а також несе повну відповідальність 
за стан підприємства та його діяльність. 
Експлуатаційна служба АТП займається, насамперед, науковою 
організацією транспортного процесу та ефективним використанням 
транспортних засобів. Вона шукає змогу найбільш раціонального здійснення 
перевезень з найменшими витратами. В цілому, на АТП служба експлуатації на 
основі всебічного вивчення потреб покликана забезпечувати повніше 
задоволення потреб замовників. 
Технічна служба АТП приділяє головну увагу питанням підтримки 
транспортних засобів у технічно справному стані та забезпечення розвитку 
виробничої бази, а також здійснює керівництво матеріально-технічним 
постачанням підприємства. 
Головними завданнями технічної служби підприємства є: 
- - Організація належного зберігання рухомого складу, що забезпечує 
високу технічну готовність його до роботи, своєчасність випуску 
автомобілів на лінію та прийом їх (гаражна служба); 
- - розробка та вирішення питань, пов'язаних із зміцненням виробничо-
технічної бази підприємства (головний інженер); 
- - оперативне планування всіх видів ТО та ремонту 
автомобілів та автомобільних шин, організація виконання цих робіт та 
контролю за їх якістю, проведення технічного обліку та звітності з 
рухомого складу, автомобільних шин та інших виробничих фондів 
(начальник ремонтної служби) [8]; 
- керівництво всією сукупністю робіт із забезпечення 
нормального матеріально-технічного постачання підприємства, 
організації зберігання, видачі та обліку палива, запасних частин та 
Лист 
ЧДТУ. 222089.001 ПЗ 
14 
Змн. Лист № докум. Підпис Дата 
 
інших матеріальних ресурсів, розробка та здійснення заходів щодо 
раціональнішого їх використання (відділ постачання); 
- розробка та проведення організаційно-технічних заходів щодо 
вдосконалення процесів виробництва, впровадження нової техніки, охорони 
праці та попередження аварійності. 
Виходячи з вищезазначених завдань, технічна служба має право 
контролювати технічний стан рухомого складу, знімати його з експлуатації, 
планувати та проводити профілактичні та ремонтні роботи, притягувати до 
матеріальної відповідальності за неправильну експлуатацію рухомого складу, 
будівель, споруд, обладнання тощо, а також лімітувати витрати ПММ [5,8]. 
Важливе місце у господарському керівництві та покращенні якісних 
показників роботи підприємства відводиться економічній службі. На основі 
систематичного аналізу роботи підприємства, автоколон та інших підрозділів та 
виходячи з об'ємних показників перевезень, їх ресурсного забезпечення, 
економічна служба визначає шляхи, якими повинні розроблятися технічні та 
організаційні заходи, спрямовані на підвищення технічної готовності рухомого 
складу та вдосконалення експлуатаційної та комерційної діяльності АТП. 
До складу економічної служби зазвичай належить бухгалтерія. Цей відділ 
на чолі з головним бухгалтером проводить облік наявності коштів, виділених у 
розпорядження АТП, їх збереження та рівня використання, організує виконання 
фінансового плану, перевіряє фінансовий стан підприємства, проводить велику 
оперативну роботу з організації розрахунків з клієнтурою, постачальниками та 
фінансовими органами, організує первинний облік витрачання матеріальних 
ресурсів та грошових коштів. Головний бухгалтер несе відповідальність за 
доцільність та законність витрачання коштів, та дотримання фінансової 
дисципліни. 
Таким чином, оптимальна організаційна структура АТП є однією з умов 
ефективної діяльності. У цьому, важливо враховувати, що у всіх рівнях 
управління керівники виконують як суто управлінські, а й виконавчі функції. 
Однак із підвищенням рівня керівництва питома вага виконавських функцій 
Лист 
ЧДТУ. 222089.001 ПЗ 
15 
Змн. Лист № докум. Підпис Дата 
 
знижується. Це означає, що керівник будь-якого рівня управління певний 
відсоток часу витрачає прийняття управлінських рішень і певний – прийняття 
рішень за фахом. 
З підвищенням рівня управління питома вага завдань за фахом падає, а з 
менеджменту зростає. Звідси керівники підприємства повинні мати високі 
професійні навички. Для працівників апарату управління процес праці є 
виконання сукупності функцій, до основних у тому числі слід віднести 
планування, організацію, координацію, контроль, облік, аналіз, регулювання. 
Вони наділені певними правами, насамперед, у частині заохочення і покарання 
працівників, що у підпорядкуванні. За їх уявленням вирішуються питання 
найму та звільнення співробітників. Але навіть за правильно організованої 
системи управління, жодне АТП не зможе здійснювати свою діяльність, без 
провідної для таких підприємств професії – водій. Тому однією з 
найважливіших завдань АТП є правильна організація праці водіїв, оскільки від 
роботи багато в чому залежить виконання плану перевезень, отже, задоволення 
потреб замовників, й у результаті ефективність функціонування підприємства. 
Розглянемо існуючі інформаційні системи та її недоліки [8]. 
Традиційно ефективність інформаційного забезпечення процесів у 
логістичній системі пов'язувалася із застосуванням інформаційно-пошукових 
систем (ІПС). Проте практика експлуатації таких систем на ТОВ «Рамус» 
показала їхню недостатню ефективність. Це зумовлено тим, що функції ІПС 
обмежені, як випливає з їхньої назви, пошуком інформації, тоді як суть 
діяльності в ринкових умовах становить вибір та прийняття рішень з 
урахуванням інтересів усіх учасників доставки. Справді, ІПС не інформує 
споживача про предмет запиту тому, що якось змінює його знання з цього 
предмета.  
Вона інформує його лише про наявність (або відсутність) 
документів, що стосуються його запиту, і про те, де ці документи можна 
знайти. Аналіз показав недостатній рівень розвитку технічних та 
Лист 
ЧДТУ. 222089.001 ПЗ 
16 
Змн. Лист № докум. Підпис Дата 
 
програмних засобів, призначених для прийому, обробки та передачі 
інформації.  
Необхідні для автоматизації виробничих процесів у підприємстві 
програмні продукти, представлені на сучасному ринку програмного 
забезпечення, можна об'єднати у три групи: 
- програми та програмні комплекси обліково-бухгалтерської орієнтації; 
- cистеми комплексної автоматизації роботи підприємства; 
- спеціальні програмні продукти для транспортно-логістичних та 
експедиторських компаній. 
Великі транспортні та товаророзподільні компанії сьогодні орієнтуються 
застосування складних інтегрованих інформаційних систем. На розробці 
спеціалізуються окремі фірми. Стійкість економічного становища, стабільність 
і єдина технологія розрахунків роблять ці програмні продукти тиражируемыми, 
що значно знижує їхня вартість. Існують фірми, що розробляють та спеціальне 
програмне забезпечення для управління транспортними компаніями. На жаль, 
використовувати сьогодні в нашій країні ці програми здебільшого важко через 
несумісність технологій обліку та розрахунків [10,11]. 
На вітчизняному ринку є розробки, подібні до американських 
бухгалтерських систем для малих і середніх підприємств (наприклад, 
«Турбобухгалтер», «Інфобухгалтер», «1С Бухгалтерія» та ін.), однак вони 
дозволяють виконувати лише частину операцій типового характеру, їх повну 
адаптацію до нинішніх умовам роботи ТЛК є досить складною. 
Сучасні інформаційні технології, такі, як системи підтримки прийняття рішень, 
експертні системи та інші, забезпечують можливість для ефективного аналізу 
техніко-економічних проектів, моделювання процесів, підготовки та подання 
результатів для подальшого прийняття рішень. Застосування сучасних 
інформаційних технологій на ТОВ «Рамус» дозволяє підвищити ефективність 
доставки вантажів за рахунок можливості швидкого доступу до інформації про 
суб'єктів (покупець, перевізник, термінал) та об'єктів (товари, послуги) 
доставки. 
Лист 
ЧДТУ. 222089.001 ПЗ 
17 
Змн. Лист № докум. Підпис Дата 
 
Проведемо обґрунтування необхідності удосконалення інформаційної 
системи. 
Останнім часом кількість товарів у місцях, де здійснюється перекидання 
вантажів з одного виду транспорту на інший, постійно збільшується, а для того, 
щоб робота була максимально ефективною, не було заторів, довгих очікувань, 
потрібно наочно представляти яку кількість вантажу, коли прибуде на станцію, 
коли він буде розвантажений, і скільки часу зберігатиметься. Людина не завжди 
може впоратися з цим обсягом роботи та аналізом інформації, тому 
застосування спеціальних програм та комп'ютерів просто необхідне. 
Комп'ютеризація та єдині бази даних на транспортному підприємстві 
забезпечують злагоджену роботу різних структур: логістики, експедиторів, 
прогнозистів, водіїв, відділу кадрів, диспетчерів з максимальною швидкістю 
реагувати на запити один одного. Так, наприклад, якщо попит на послуги 
транспортної компанії значно зростає, і водіїв не вистачає для найбільш 
ефективного та моментального виконання замовлень, то відділ кадрів та 
керівництво може ухвалити рішення про набір нових співробітників, те саме 
стосується і скорочення [12,16]. 
Загальна база даних організується таким чином, щоб будь-який працівник 
мав до неї доступ і міг вносити поправки, а керівник транспортної компанії 
бачив, як відбувається робота на місцях, наскільки вона ефективна, який 
прибуток приносить, що потрібно змінити. 
Інформаційні технології мають численні функції, проте їх суть зводитись 
до того, щоб забезпечувати в режимі постійного часу моніторинг та діагностику 
процесів управління, повідомляти про можливі критичні моменти, проводити 
аналіз роботи різних відділів та їх взаємодії, а також проводити розрахунок 
необхідних дій. 
Інформатизація вантажних перевезень у зарубіжних державах виходить 
на принципово новий рівень у порівнянні з нашою країною. Там дедалі частіше 
використовуються складні інтегровані інформаційні системи, які дозволяють 
Лист 
ЧДТУ. 222089.001 ПЗ 
18 
Змн. Лист № докум. Підпис Дата 
 
організувати комплексний контроль за всією структурою транспортної 
компанії. 
У Німеччині та Бельгії поширене застосування технологій 
диференційованого економічного обліку роботи транспортних засобів з 
аналізом продуктивності, рентабельності та управління використанням шляхом 
ремонту, списання та комбінування маршрутів [11,15]. 
Індивідуальні міні комп'ютери встановлюються сьогодні на кожному 
автомобілі, що дозволяє постійно контролювати їхнє місцезнаходження, стан 
водіїв, дотримання ними режиму роботи та відпочинку та багато іншого. 
Застосовуються подібні системи і в усіх країнах ЄС, такі бортові машини 
дозволяють також відмовитись від дорожніх документів, звівши процес 
організації перевезення до мінімуму. 
За допомогою сучасних технологій закордонні транспортні компанії 
заощаджують великі кошти на паливі, вибирають найкоротші шляхи 
проходження, пропонують шляхи об'їзду пробок, ремонтних робіт.  
 
2.3 Вимоги до СКС загалом 
Процес комп'ютеризації відбувається поетапно: 
- Початковий етап пов'язані з накопиченням досвіду використання 
комп'ютерних систем і автоматизацією бухгалтерських розрахунків на 
позадачном уровне; 
- Контрольний етап характеризується стабілізацією парку комп'ютерних 
систем, визначенням сфер їх застосування, інформаційним пошуком в Інтернеті 
та організацією локальних мереж у підприємстві; 
- Інтеграційний етап характеризується використанням мережевих рішень 
різного рівня, децентралізацією управління за допомогою комп'ютерних систем 
та новою організаційною основою підприємств, що базується на широкому 
застосуванні інформаційних технологій в управлінні, застосуванням складних 
корпоративних інформаційних систем, інтегрованих в Інтернет. 
Лист 
ЧДТУ. 222089.001 ПЗ 
19 
Змн. Лист № докум. Підпис Дата 
 
На початковому етапі всі зусилля спрямовуються автоматизацію простих 
рутинних операцій обліку, фінансових розрахунків. Як правило, 
автоматизуються завдання матеріально-технічного постачання, бухгалтерського 
обліку, нарахування зарплати та подібні до них. Головною метою автоматизації 
цьому етапі є скорочення персоналу підприємства. Причому більшість із цих 
завдань не вимагає високої швидкості обробки даних та обороту інформації та 
може успішно вирішуватися централізовано спеціалізованими 
обчислювальними центрами. 
Основними рисами другого етапу є повна технічна визначеність щодо 
обчислювальних систем та становлення локальних мереж комп'ютерних систем 
для підприємств. У цей час починає змінюватися цільова спрямованість 
інформаційних технологій - на передній план висувається концепція 
«інформація керівника». Домінуючими цих двох етапах є звані інформаційно-
довідкові системи. 
На третьому етапі відбувається структурна зміна на підприємствах, у 
яких виникають власні інформаційні служби з децентралізованою системою 
підготовки та обробки інформації. Для цього етапу характерно створення 
корпоративних мереж, підключення підприємств до єдиної глобальної 
інформаційної системи країни, активне використання технологій електронного 
документообігу, організація логістичних центрів, що надають користувачам на 
комерційній основі доступ до віддалених баз даних та додатків для 
автоматизації всіх розрахункових та пошукових операцій, а також наявність 
відповідно кваліфікованого персоналу [16,19]. 
На цьому етапі широко використовуються багатофункціональні 
інтегровані інформаційно-обчислювальні системи на нижчому та середньому 
рівнях управління та спеціалізовані експертні системи та системи 
інтелектуального аналізу даних для складання прогнозів та пошуку 
оптимальних рішень на верхньому рівні. У цілому нині інформаційні технології 
стають нової єдиної організаційної основою підприємств, а концепція 
управління інформаційними ресурсами – домінуючою. 
Лист 
ЧДТУ. 222089.001 ПЗ 
20 
Змн. Лист № докум. Підпис Дата 
 
2.4 Вимоги до функцій, що виконуються СКС 
- До функцій СКС висуваються такі вимоги: 
- Зручний інтерфейс, інтуїтивно зрозумілий користувачеві з будь-яким 
рівнем володіння комп'ютером; 
- Конфіденційність інформації всередині системи; 
- Протоколювання дій користувачів; 
- Облік та аналіз усіх фінансових операцій з надання транспортних послуг; 
- Зберігання всіх відомостей та документів діловодства; 
- Друк заявки на фірмовому бланку на підставі шаблону; 
- Розвантаження рахунків, рахунків-фактур, актів виконаних робіт, актів 
звіряння взаєморозрахунків; 
- Деталізації надання транспортних послуг (звіт для клієнта, звіт для 
виконавця); 
- Вивантаження зведених звітів, що настроюються (розбивка по тижнях, 
місяцях); 
- Впровадження програми не вимагає спеціаліста - установка повністю 
автоматизована; 
- Оперативні рішення транспортних завдань. 
 
Лист 
ЧДТУ. 222089.001 ПЗ 
21 
Змн. Лист № докум. Підпис Дата 
 
3 ФУНКЦІОНАЛЬНА СТРУКТУРА 
 
Автоматизовані функції, що виконуються підсистемою, поділяються на 
дві групи, перша група відповідає за вибір оптимального маршруту. До першої 
групи належить розрахунок найкоротшого маршруту, або маршруту, який буде 
витрачено мінімальну кількість часу, також розраховується витрачений час і 
суму витрат. Друга група виконує автоматичний вибір водія та транспортного 
для здійснення перевезення, вибір здійснюється з бази даних, за такими 
критеріями як: 
категорія прав водія; 
- проходження медичного огляду; 
- кількість здійснених на місяць рейсів; 
- Наявність водія на робочому місці. 
Реалізація функції знаходження оптимального маршруту здійснюється за 
допомогою алгоритму Дейкстри (рис.3.1). 
Визначення витраченого часу та суми витрат відбувається після 
заповнення користувачем необхідних полів уведення. 
Лист 
ЧДТУ. 222089.001 ПЗ 
22 
Змн. Лист № докум. Підпис Дата 
 
 
Рисунок 3.1 - Схема реалізації алгоритму Дейкстри 
 
Витрачений час визначається із розрахунку середньої швидкості руху 
автомобіля (3.1), а витрати вираховуються після вказівки ціни палива (3.2). 
 
S
Tз = ,                                                       (3.1) 
V
 
де  Тз – витрачений час, 
Лист 
ЧДТУ. 222089.001 ПЗ 
23 
Змн. Лист № докум. Підпис Дата 
 
S – відстань між пунктами, 
V – середняя швидкість руху автомобіля. 
 
F
К = * P*S ,                                                 (3.2) 
100
 
где K – сума витрат, 
F – витрати топлива автомобіля (л./100км.), 
P – середня ціна топлива за 1 літр, 
S – відстань між пунктами маршрута. 
Пошук персоналу здійснюється серед баз даних засобами MS Access чи 
PhpMyAdmin. Дані про водіїв попередньо мають бути занесені до бази. 
Приклад бази даних міститься в додатку А. 
На рисунку 3.2. зображено функціональну схему чорного ящика 
програмного комплексу, що розробляється. Вхідними параметрами є 
інформація про водіїв, дані з дорожніх листів та схема автомобільних доріг. 
Вихідним параметром буде оптимальний маршрут перевезення. 
Лист 
ЧДТУ. 222089.001 ПЗ 
24 
Змн. Лист № докум. Підпис Дата 
 
 
Рисунок 3.2 - Функціональна схема чорної скриньки 
  
На рисунку 3.3. зображено діаграму прийому замовлення на перевезення, 
що здійснюється в умовах автотранспортного підприємства 
Лист 
ЧДТУ. 222089.001 ПЗ 
25 
Змн. Лист № докум. Підпис Дата 
 
 
Рисунок 3.3 -  Діаграма прийому замовлення на перевезення 
Лист 
ЧДТУ. 222089.001 ПЗ 
26 
Змн. Лист № докум. Підпис Дата 
 
4 ІНФОРМАЦІЙНЕ ЗАБЕЗПЕЧЕННЯ 
 
4.1 Вибір засобу управління даними 
Існує велика кількість інструментальних засобів для розробки бази даних. 
MySQL – це реляційна система управління базами даних. Тобто дані у її базах 
зберігаються як логічно пов'язаних між собою таблиць, доступ яких 
здійснюється з допомогою мови запитів SQL. MySQL – вільно поширена 
система, тобто. платити за її застосування не потрібно. Крім того, це досить 
швидка, надійна і, головне, проста у використанні СУБД, що цілком підходить 
для не надто глобальних проектів. 
Працювати з MySQL можна у текстовому режимі, а й у графічному. Існує 
дуже популярний візуальний інтерфейс, написаний на PHP для роботи з цією 
СУБД. Називається він PhpMyAdmin. Цей інтерфейс дозволяє значно спростити 
роботу з базами даних MySQL. 
Гнучкість СУБД MySQL забезпечується підтримкою великої кількості 
типів таблиць: користувачі можуть вибрати як таблиці типу MyISAM, що 
підтримують повнотекстовий пошук, і таблиці InnoDB, підтримують транзакції 
лише на рівні окремих записів. Понад те, СУБД MySQL постачається зі 
спеціальним типом таблиць EXAMPLE, демонструючим принципи створення 
нових типів таблиць. Завдяки відкритій архітектурі та GPL-ліцензування, в 
СУБД MySQL постійно з'являються нові типи таблиць. 
Таким чином як засіб моделювання структури даних обрана СУБД 
MySQL, що дозволяє проектувати і створювати реляційні бази даних, а також 
реалізувати логіку зв'язку даних за допомогою процедур, що зберігаються. 
4.2 Реализація бази даних 
Відповідно до поставленого завдання в СУБД MySQL розроблено 
реляційну базу даних DISTANCE_SKS, що містить такі таблиці (таблиця 4.1). 
На рисунку 4.1 представлено схему даних розробленої БД 
Лист 
ЧДТУ. 222089.001 ПЗ 
27 
Змн. Лист № докум. Підпис Дата 
 
Таблиця 4.1 - Список розроблених таблиць БД DISTANCE_SQL 
Розмір Струк
Назва таблиці Опис 
запису тура 
Водії 54 А.1 Дані водіїв даного АТП 
Водії_відс 14 А.2 Водії відсутні 
Водії_гот 30 А.3 Список водіїв готових виконати 
перевезення вантажу 
Вантажі 34 А.4 Відомості про якість та кількість 
перевезених вантажів / пасажирів 
Звичайні_вантажі 29 А.5 Відомості про вантажі, безпечні для 
транспортування 
Небезпечні_ванта 39 А.6 Відомості про небезпечні вантажі, їх 
жі маркування 
Пасажири 24 А.7 Відомості про пасажирів, що 
перевозяться 
Міста 25 А.8 Довідник міст, у яких може 
здійснюватися перевезення вантажів 
та пасажирів 
Дороги 87 А.9 Відомості про стан дорожнього 
покриття на шляху перевезення 
Дорожні_листи 34 А.10 Інформація про зміст дорожнього 
листа, що видається на АТП перед 
перевезенням вантажу 
Трансп_кошти 24 А.11 Відомості про транспортні засоби, 
наявні на АТП. 
 
Кожен атрибут перелічених таблиць має низку властивостей. 
Найважливіші з них: Розміри, маркування небезпеки вантажів та результат 
медичного огляду водія. Зазначені таблиці реалізовані для кожного відношення 
Лист 
ЧДТУ. 222089.001 ПЗ 
28 
Змн. Лист № докум. Підпис Дата 
 
індивідуально та містять комплексну характеристику кожного його атрибуту. 
Важливою характеристикою фізичної організації БД є зв'язок між 
таблицями. Будь-який зв'язок між відносинами забезпечує цілісність даних. Це 
означає, що система автоматично веде перевірку на відповідність даних 
індексам та ключам, введеним у модель даних. Також ведеться контроль за 
каскадним оновленням пов'язаних полів та видаленням пов'язаних записів, що 
додатково забезпечує цілісність та коректність даних та виключає їх 
суперечність. 
 
 
 
 
Рисунок 4.1 -   MS Access діаграма БД DISTANCE_SKS 
Представлені в таблиці 4.2 характеристики зв'язків між таблицями БД 
випливають із розробленої попередньому розділі інформаційної моделі даних. 
Кожний зв'язок у моделі (див. MS Access-діаграму на рисунку 4.1) відповідає 
фізичному зв'язку, вказаному в таблиці 4.2. 
Лист 
ЧДТУ. 222089.001 ПЗ 
29 
Змн. Лист № докум. Підпис Дата 
 
Таблиця 4.2 -  Взаємозв'язок між таблицями БД BASE_SKS 
Батьківська таблиця Дочірня таблиця Тип 
зв'яз 
ім'я індекс Ім'я індекс 
ку 
Водії Прізвище Водії_відс Прізвище 1 : 1 
Водії Прізвище Водії_гот Прізвище 1 : 1 
Дороги Макс_доп_довжин Небезпечні_вантажі Довжина 
1 : М 
а 
Дороги Макс_доп_ширина Небезпечні_вантажі Ширина 1 : М 
Дороги Макс_доп_висота Небезпечні_вантажі Висота 1 : М 
Дороги Макс_доп_довжин Звичайні_вантажі Довжина 
1 : М 
а 
Дороги Макс_доп_ширина Звичайні_вантажі Ширина 1 : М 
Дороги Макс_доп_висота Звичайні_вантажі Висота 1 : М 
Дорожні_лист Пункт_відправлен Міста Назва 
1 : М 
и ня 
Дорожні_ ІН Водії_гот ІН 
1 : М 
листи 
Дорожні_ ІН Трансп_кошти ІН 
1 : М 
листи 
Дорожні_ Вантаж_пас Вантаж Вантаж_пас 
1 : 1 
листи 
Вантаж ІН Звичайні_вантажі ІН 1 : М 
Вантаж ІН Небезпечні_вантажі ІН 1 : М 
 
Спроектована база даних повинна бути фізично розміщена на жорсткому 
диску персонального комп'ютера, що використовується. БД спроектована 
відповідно до критерію нормалізації, дані розміщуватимуться на диску 
відносно раціонально. 
Лист 
ЧДТУ. 222089.001 ПЗ 
30 
Змн. Лист № докум. Підпис Дата 
 
5 МАТЕМАТИЧНЕ ЗАБЕЗПЕЧЕННЯ 
 
5.1 Оптимізація маршруту 
Для підвищення ефективності перевезень необхідно зробити оптимізацію 
маршруту 
- Існує кілька алгоритмів пошуку найкоротших шляхів. Серед них 
найвідомішими є такі алгоритми: 
- - пошук завширшки (пошук найкоротшої відстані від однієї 
вершини до решти, визначення кількості компонент зв'язності, 
визначення дводольності графа); 
- - пошук у глибину (визначення кількості компонент зв'язності, 
побудова дерева пошуку у глибину, пошук точок зчленування та 
мостів, визначення дводольності графа); 
- алгоритм Дейкстри (пошук найкоротшої відстані від однієї вершини до 
решти); 
- алгоритм Форда-Беллмана (пошук найкоротшої відстані від однієї 
вершини до решти); 
- алгоритм Флойда (пошук найкоротшої відстані між кожною парою 
вершин); 
- алгоритм Йена (алгоритм пошуку k найкоротших шляхів у графі). 
Для знаходження оптимального маршруту між двома точками ми 
використовуватимемо алгоритм Дейкстри, який вирішує задачу про найкоротші 
шляхи з однієї вершини орієнтованого графа G = (V, E) з вихідною вершиною s, 
в якому ваги всіх ребер невід'ємні ((u, v) ≥ 0 всім (u, v)E). 
Формальне пояснення. У процесі роботи алгоритму Дейкстри 
підтримується безліч S V, що складається з вершин v, котрим δ(s, v) вже 
знайдено. Алгоритм вибирає вершину u V\S з найменшим d[u], додає u до 
множини S і здійснює релаксацію всіх ребер, що виходять з u, після чого цикл 
повторюється. Вершини, що не лежать в S зберігаються в черзі Q з 
Лист 
ЧДТУ. 222089.001 ПЗ 
31 
Змн. Лист № докум. Підпис Дата 
 
пріоритетами, що визначаються значеннями функції d. Передбачається, що 
граф заданий за допомогою списків суміжних вершин. 
Неформальне пояснення. Кожній вершині з V зіставимо мітку - відома 
мінімальна відстань від цієї вершини до a. Алгоритм працює покроково - на 
кожному кроці він "відвідує" одну вершину і намагається зменшувати мітки. 
Робота алгоритму завершується коли всі вершини відвідані. 
Ініціалізація. Мітка самої вершини a належить рівною 0, мітки інших 
вершин - нескінченності. Це відбиває те, що відстані від a до інших вершин 
поки що невідомі. Усі вершини графа позначаються як невідвідані. 
Крок алгоритму. Якщо всі відвідані вершини, алгоритм завершується. В 
іншому випадку з ще не відвіданих вершин вибирається вершина u, що має 
мінімальну мітку. Ми розглядаємо різні маршрути, в яких u є передостаннім 
пунктом. Вершини, з'єднані з вершиною і ребрами, назвемо сусідами цієї 
вершини. Для кожного сусіда розглянемо нову довжину шляху, що дорівнює 
сумі поточної мітки u та довжини ребра, що з'єднує u з цим сусідом. Якщо 
отримана довжина менша від мітки сусіда, замінимо мітку цією довжиною. 
Розглянувши всіх сусідів, помітимо вершину і як відвідану і повторимо крок 
Розглянемо роботу алгоритму з прикладу графа, показаного рисунку. 
Потрібно знайти відстані від 1-ї вершини до решти (рис 5.1 а). 
Гуртками позначені вершини, лініями – шляхи між ними (ребра графа). У 
гуртках позначено номери вершин, над ребрами позначено їхню «ціну» — 
довжину колії. Поруч із кожною вершиною червоним позначено мітку — 
довжину найкоротшого шляху до цієї вершини з вершини 1 (рис. 5.1 б). 
Перший крок. Розглянемо крок алгоритму Дейкстри нашого прикладу. 
Мінімальну мітку має вершина 1 (рис 5.1). Її сусідами є вершини 2, 3 та 6. 
Лист 
ЧДТУ. 222089.001 ПЗ 
32 
Змн. Лист № докум. Підпис Дата 
 
а)  б) 
в)                   г) 
д)   е) 
ж)   з) 
и)   к) 
Рисунок 5.1 -  Графи, що показують роботу алгоритму Дейкстри. 
Лист 
ЧДТУ. 222089.001 ПЗ 
33 
Змн. Лист № докум. Підпис Дата 
 
Перший по черзі сусід вершини 1 - вершина 2, тому що довжина колії до 
неї мінімальна. Довжина шляху в неї через вершину 1 дорівнює найкоротшій 
відстані до вершини 1 + довжина ребра, що йде з 1 в 2, тобто 0 + 7 = 7. Це 
менше поточної мітки вершини 2, тому нова мітка 2-ї вершини дорівнює 7 (рис. 
5.1 г). 
Аналогічну операцію проробляємо з двома іншими сусідами 1-ї вершини 
- 3-ї та 6-ї (рис 5.1 д). Усі сусіди вершини 1 перевірені. Поточне мінімальне 
відстань до вершини 1 вважається остаточним і перегляду не підлягає (те, що 
це дійсно так, вперше довів Дейкстра). Викреслимо її з графа, щоб відзначити, 
що ця вершина відвідана (рис. 5.1 е). 
Другий крок. Крок алгоритму повторюється. Знову знаходимо «найближчу» з 
невідвіданих вершин. Це вершина 2 із міткою 7 (рис 5.1 ж). 
Знову намагаємося зменшити мітки сусідів обраної вершини, намагаючись 
пройти у них через 2-у. Сусідами вершини 2 є 1, 3, 4. 
Перший (по порядку) сусід вершини 2 - вершина 1. Але вона вже відвідана, 
тому з 1-ою вершиною нічого не робимо. 
Наступний сусід вершини 2 — вершини 4 і 3. Якщо йти в неї через 2-у, то 
довжина такого шляху буде найкоротша відстань до 2 + відстань між 
вершинами 2 і 4 = 7 + 15 = 22. Оскільки 22<∞, встановлюємо мітку вершини 4 
рівної 22 (рис 5.1и). 
Ще один сусід вершини 2 - вершина 3. Якщо йти в неї через 2, то довжина 
такого шляху буде = 7 + 10 = 17. Але поточна позначка третьої вершини 
дорівнює 9<17, тому позначка не змінюється (рис 5.1 к). 
Усі сусіди вершини 2 переглянуті, заморожуємо відстань до неї та 
помічаємо її як відвідану. 
Третій крок. Повторюємо крок алгоритму, вибравши вершину 3. 
Подальші кроки. Повторюємо крок алгоритму для вершин, що 
залишилися (Це будуть по порядку 6, 4 і 5). 
Лист 
ЧДТУ. 222089.001 ПЗ 
34 
Змн. Лист № докум. Підпис Дата 
 
Завершення виконання алгоритму. Алгоритм закінчує роботу, коли 
викреслено всі вершини. Результат його роботи: найкоротший шлях від 
вершини 1 до 2-ї становить 7, до 3-ї - 9, до 4-ї - 20, до 5-ї - 20, до 6-ї - 11. 
Оскільки алгоритм Дейкстри щоразу вибирає обробки вершини з 
найменшою оцінкою найкоротшого шляху, можна сказати, що він належить до 
жадібним алгоритмам. 
У процесі роботи алгоритму послідовно відзначаються розглянуті 
вершини графа. Причому вершина, позначена останньою (на даний момент) 
розташована ближче до вихідної вершини, ніж усі непомічені, але далі, ніж усі 
помічені. 
Спочатку позначається вихідна вершина; наступною, очевидно, буде 
позначено вершину, найближчу до вихідної, і суміжну з нею. 
Нехай на якомусь кроці вже помічено кілька вершин. Відомі найкоротші 
шляхи, що ведуть з вихідної вершини до помічених. Для кожної з непомічених 
вершин виконаємо наступне: 
Розглянемо всі дуги, що ведуть із помічених вершин в одну непомічену. 
Кожна така дуга є останньою дугою на шляху з вихідної вершини до цієї 
непоміченої. 
Виберемо з цих шляхів найкоротший. А потім виберемо серед них 
найкоротший до всіх непомічених вершин і позначимо вершину, до якої він 
веде. Алгоритм завершиться, коли будуть помічені всі досяжні вершини. 
Внаслідок роботи алгоритму Дейкстри будується Дерево найкоротших 
шляхів. 
На рисунку 5.2 зображено схему алгоритму та структури програми. 
Реалізація алгоритму Дейкстри мовою програмування PHP розташована у 
додатку В. 
Лист 
ЧДТУ. 222089.001 ПЗ 
35 
Змн. Лист № докум. Підпис Дата 
 
 
Рисунок 5.2 -  Блок-схема алгоритму та структури програми. 
Програма виводить мінімальний шлях між двома вказаними вершинами у 
графі та його довжину. 
Лист 
ЧДТУ. 222089.001 ПЗ 
36 
Змн. Лист № докум. Підпис Дата 
 
При запуску програми на екран виводиться запит про введення ваги ребер 
досліджуваного графа. Дані, введені користувачем, відображаються у вигляді 
матриці суміжності, в якій існуючі ребра позначаються нулями. Після 
зазначеним ребрам надається значення 65535, яке приймається за 
нескінченність. 
p align="justify"> Наступним етапом виконання програми є запит про 
введення номерів вершин, між якими необхідно дізнатися шлях. Якщо 
початкова та кінцева вершини збігаються, відображається відповідне 
повідомлення та робота програми завершується. 
Інакше виконується безпосередньо алгоритм Дейкстри, схема якого 
наведено на рис. 5.1. 
Результатом програми є виведення на екран вершин, якими проходить 
мінімальний шлях, і навіть виведення довжини маршруту. Якщо шляху між 
заданими точками немає – виводиться відповідне повідомлення. 
 
5.2 Схема програмної реалізації алгоритму Дейкстри 
Алгоритм використовує три масиви з N (рівне числу вершин мережі) 
чисел кожен. Перший масив S містить мітки з двома значеннями: 0 (вершина 
ще не розглянута) та 1 (вершина вже розглянута); другий масив B містить 
відстані - поточні найкоротші відстані від та до відповідної вершини; третій 
масив містить номери вершин - k-й елемент С [k] є номер передостанньої 
вершини на поточному найкоротшому шляху з Vi в Vk. Матриця відстаней 
A[i,k] задає довжини дуги A[i,k]; якщо такої дуги немає, то A[i,k] присвоюється 
велике число Б, що дорівнює "машинної нескінченності". 
 
1. (Ініціалізація). У циклі від 1 до N заповнити нулями масив S; заповнити 
числом i масив C; 
 перенести i-й рядок матриці A масив B, S[i]:=1; C[i]:=0 (i - номер 
стартової вершини); 
Лист 
ЧДТУ. 222089.001 ПЗ 
37 
Змн. Лист № докум. Підпис Дата 
 
2. (загальний крок). Hайти мінімум серед невідзначених (тобто тих k, 
котрим S[k]=0); нехай мінімум досягається на індексі j, тобто 
B[j]<=B[k] 
Потім виконуються такі операції: 
 S[j]:=1; 
 если B[k] > B[j]+A[j,k], то (B[k]:=B[j]+A[j,k]; C[k]:=j) 
(Умова означає, що шлях Vi ... Vk довший, ніж шлях Vi...Vj Vk). 
(Якщо всі S[k] відзначено, що довжина шляху від Vi до Vk дорівнює B[k]. 
Тепер треба) перерахувати вершини, що входять у найкоротший шлях). 
3. (Видача відповіді). (Шлях від Vi до Vk видається у зворотному порядку 
наступною процедурою:) 
3.1. z:=C[k]; 
3.2. Видати z; 
3.3. z:=C[z]. Якщо z = О, то кінець інакше перейти до 3.2. 
Для виконання алгоритму потрібно N раз переглянути масив B із N 
елементів, тобто алгоритм Дейкстри має квадратичну складність: 
O(n2). 
Реалізація алгоритму Дейкстри мовою PHP здійснено у додатку С. 
 
 
 
 
 
Лист 
ЧДТУ. 222089.001 ПЗ 
38 
Змн. Лист № докум. Підпис Дата 
 
6 ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ 
 
Програмне забезпечення – це сукупність програм системи обробки 
інформації та програмних документів, необхідні експлуатації цих програм. 
Також - сукупність програм, процедур та правил, а також документації, що 
належать до функціонування системи обробки даних. 
Програмне забезпечення є одним із видів забезпечення обчислювальної 
системи, поряд з технічним (апаратним), математичним, інформаційним, 
лінгвістичним, організаційним та методичним забезпеченням 
Програмне забезпечення прийнято за призначенням поділяти на 
системне, прикладне та інструментальне, а за способом поширення та 
використання на невільне/закрите, відкрите та вільне. Вільне програмне 
забезпечення може поширюватися, встановлюватися та використовуватись на 
будь-яких комп'ютерах вдома, в офісах, школах, вузах, а також комерційних та 
державних установах без обмежень. 
Програмна реалізація системи передбачає використання таких засобів як:PHP; 
- MySQL; 
- Ms Access; 
- Apache. 
PHP - Hypertext Preprocessor - скриптовый язык программирования 
общего назначения, интенсивно применяемый для разработки веб-приложений. 
В настоящее время поддерживается подавляющим большинством хостинг-
провайдеров и является одним из лидеров среди языков программирования, 
применяющихся для создания динамических веб-сайтов. 
Язык и его интерпретатор разрабатываются группой энтузиастов в рамках 
проекта с открытым кодом. Проект распространяется под собственной 
лицензией, несовместимой с GNU GPL. 
В області програмування для Мережі PHP - одна з популярних скриптових мов 
(поряд з JSP, Perl та мовами, що використовуються в ASP.NET) завдяки своїй 
Лист 
ЧДТУ. 222089.001 ПЗ 
39 
Змн. Лист № докум. Підпис Дата 
 
простоті, швидкості виконання, багатої функціональності, 
кросплатформенності та поширенню вихідних кодів на основі ліцензії PHP. 
Популярність у сфері побудови веб-сайтів визначається наявністю великого 
набору вбудованих засобів для розробки веб-додатків. Основні з них: 
- автоматичне вилучення POST та GET-параметрів, а також змінних 
оточення веб-сервера в певні масиви; 
- взаємодія з великою кількістю різних систем управління базами даних 
(MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL 
Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape та Apache Derby, Informix, 
Ovrimos SQL, Lotus Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres 
II, SESAM, Firebird/InterBase, Paradox File Access, MaxDB, Інтерфейс PDO); 
- автоматизоване надсилання HTTP заголовків; 
- робота з HTTP авторизацією; 
- робота з cookies та сесіями; 
- робота з локальними та віддаленими файлами, сокетами. 
- обробка файлів, що завантажуються на сервер; 
- робота з XForms. 
В даний час PHP використовується сотнями тисяч розробників. Згідно з 
рейтингом Tiobe, що базується на даних пошукових систем, у грудні 2009 року 
PHP знаходиться на 3 місці серед мов програмування (поступаючись Java і C), 
піднявшись за рік на дві позиції. До найбільших сайтів, що використовують 
PHP, відносяться Facebook, ВКонтакте, Wikipedia та ін. 
Входить до LAMP – поширений набір програмного забезпечення для 
створення веб-сайтів (Linux, Apache, MySQL, PHP). Хоча PHP і не дуже 
поширений у цій якості, його можна використовувати і для створення GUI-
програм. Для створення кросплатформових додатків служать пакети PHP-GTK і 
PHP-Qt, що є обгортками для відповідних популярних бібліотек віджетів. 
Для тих, кого цікавить програмування з використанням Windows API, 
існує дві альтернативи. По-перше, це open source пакет WinBinder. Його ядро є 
написане на C розширення php - php_winbinder.dll. До складу WinBlinder 
Лист 
ЧДТУ. 222089.001 ПЗ 
40 
Змн. Лист № докум. Підпис Дата 
 
включено також візуальний редактор форм (див. скріншот) написаний з 
використанням самого WinBlinder. Але, по суті, WinBlinder є простою 
обгорткою до WinAPI і програмування з його використання досить 
низькорівневе. 
Другою альтернативою є інтегроване середовище Devel Studio, 
орієнтоване, перш за все, на програмістів-початківців. DevelStudio - це багате 
на можливості середовище програмування php, орієнтоване створення програм 
за допомогою мови PHP. Вам надаються майстер зручного налагодження, 
візуальний редактор форм інтерфейсу, майстри для складання програм, гнучкий 
редактор коду з розумним підсвічуванням та автодоповненням, а також 
можливість без програмування створювати дії для програми. 
Можливості. Середовище php вміє перевіряти вихідники проекту на 
синтаксичні помилки, може запускати проекти як налагодження змінних. А 
найголовніше, вміє створювати автономні EXE файли програми, які не 
вимагають .NET фреймворку та подібних речей. 
Ключові можливості: 
- - компіляція проекту на exe файл; 
- - Підтримка мови програмування PHP 5; 
- - багатий режим налагодження та перевірки на помилки; 
- - розумна кодогенерація, режим "без програмування"; 
- - можливість працювати з усіма розширеннями PHP, такими як curl, 
mysql, sockets тощо; 
- компонентна система, близько 60 компонентів, серед них GUI 
компоненти, а також компоненти для роботи з інтернетом, мультимовністю, 
потоками, даними, діалогами тощо; 
- Зручна система скінізації створюваних програм, тобто. можливість 
поставити своє оформлення програмі. Понад 60 скінів; 
- вбудований PHP редактор коду, з розумним підсвічуванням та 
автодоповненням. 
Лист 
ЧДТУ. 222089.001 ПЗ 
41 
Змн. Лист № докум. Підпис Дата 
 
Різні частини DevelStudio розповсюджуються під різними ліцензіями. 
Інтерфейс до графічних та системних можливостей Windows є рядом модулів 
розширення PHP, і є пропрієтарним ПЗ, що розповсюджується у вигляді 
скомпілованих DLL на умовах freeware. (Автори планують також випуск 
платної Pro версії DevelStudio, в якій набір таких, базових бібліотек буде 
ширшим). 
Поверх цих розширень існує відкрита бібліотека компонентів, яка, разом 
з IDE, також написаному на PHP, поширюється на умовах GPL. Разом вони 
утворюють середовище візуального програмування з Delphi-подібною 
архітектурою. Програміст може розширювати DevelStudio власними, 
написаними на PHP компонентами, які, можливо, будуть використовувати 
функціонал написаних ним або кимось іншим, додаткових бінарних розширень 
PHP. DevelStudio включає засоби упаковки та встановлення таких пакетів. 
Для роботи DevelStudio додатків необхідний також soulEngine.exe - міні-
сервер, що запускає веб-програми (використовує php5ts.dll версії 5.2). Він 
також написаний на PHP і ліцензується на умовах BSDL. 
Для програмування під Windows можна використовувати Phalanger — 
реалізацію PHP для платформи .NET. Результатом компіляції PHP коду в 
Phalanger може бути будь-яка .NET-додаток, будь то серверна ASP.NET або 
десктопна Windows Forms / Windows Presentation Foundation (WPF) 
MySQL – вільна система управління базами даних (СУБД). MySQL є 
власністю компанії Oracle Corporation, що отримала її разом із поглиненою Sun 
Microsystems, що здійснює розробку та підтримку програми. Розповсюджується 
під GNU General Public License або під власною комерційною ліцензією. Крім 
цього розробники створюють функціональність на замовлення ліцензійних 
користувачів, саме завдяки такому замовленню майже в ранніх версіях з'явився 
механізм реплікації. 
MySQL є рішенням для малих та середніх програм. Входить до складу 
серверів WAMP, LAMP та в портативні зборки серверів Денвер, XAMPP. 
Зазвичай MySQL використовується як сервер, до якого звертаються локальні 
Лист 
ЧДТУ. 222089.001 ПЗ 
42 
Змн. Лист № докум. Підпис Дата 
 
або віддалені клієнти, проте дистрибутив входить бібліотека внутрішнього 
сервера, що дозволяє включати MySQL в автономні програми. 
Гнучкість СУБД MySQL забезпечується підтримкою великої кількості 
типів таблиць: користувачі можуть вибрати як таблиці типу MyISAM, що 
підтримують повнотекстовий пошук, і таблиці InnoDB, підтримують транзакції 
лише на рівні окремих записів. 
Понад те, СУБД MySQL постачається зі спеціальним типом таблиць 
EXAMPLE, демонструючим принципи створення нових типів таблиць. Завдяки 
відкритій архітектурі та GPL-ліцензування, в СУБД MySQL постійно 
з'являються нові типи таблиць. 
MySQL має API для мов Delphi, C, C++, Ейфель, Java, Лисп, Perl, PHP, Python, 
Ruby, Smalltalk та Tcl, бібліотеки для мов платформи .NET, а також забезпечує 
підтримку для ODBC за допомогою ODBC-драйвера MyODBC. 
Максимальні розміри таблиць:MySQL 3.22 : до 4 Гб; 
MySQL 3.23+ : До 8 мильионів терабайт. (2 ^ 63). 
Розмір таблиці обмежений її типом. Загалом тип MyISAM обмежений 
граничним розміром файлу у файловій системі операційної системи. 
Наприклад, у NTFS цей розмір теоретично може бути до 32 ексабайт. У разі 
InnoDB одна таблиця може зберігатися у кількох файлах, які мають єдиний 
табличний простір. Розмір останнього може сягати 64 терабайт. 
Apache HTTP-сервер – вільний веб-сервер. Apache є кросплатформним 
програмним забезпеченням, підтримує операційні системи Linux, BSD, Mac OS, 
Microsoft Windows, Novell NetWare, BeOS. 
Основними перевагами Apache є надійність і гнучкість конфігурації. Він 
дозволяє підключати зовнішні модулі для надання даних, використовувати 
СУБД для автентифікації користувачів, модифікувати повідомлення про 
помилки тощо. Підтримує IPv6. 
Сервер був написаний на початку 1995 року і вважається, що його ім'я 
перегукується з жартівливою назвою "a patchy" (англ. "латочка"), тому що він 
усував помилки популярного тоді сервера Всесвітньої павутини NCSA HTTPd 
Лист 
ЧДТУ. 222089.001 ПЗ 
43 
Змн. Лист № докум. Підпис Дата 
 
1.3. Надалі з версії 2.х сервер був переписаний заново і тепер не містить коду 
NCSA, але ім'я залишилося. На даний момент технологія ведеться у гілці 2.2, а 
у версіях 1.3 і 2.0 виробляються лише виправлення помилок безпеки. 
Веб-сервер Apache розробляється і підтримується відкритою спільнотою 
розробників під егідою Apache Software Foundation і включений до багатьох 
програмних продуктів, серед яких СУБД Oracle та IBM WebSphere. 
З квітня 1996 року і до теперішнього часу є найпопулярнішим HTTP-
сервером в Інтернеті. За статистикою Netcraft, у серпні 2007 року він працював 
на 51% всіх веб-серверів[3], у травні 2009 року - на 46%.[4]. За даними Netcraft 
на січень 2011 року, понад 160 млн. сайтів обслуговуються веб-сервером 
Apache, що становить 59% від загальної кількості веб-сайтів.[5] 
Ядро Apache включає основні функціональні можливості, такі як обробка 
конфігураційних файлів, протокол HTTP і система завантаження модулів. Ядро 
(на відміну від модулів) повністю розробляється Apache Software Foundation без 
участі сторонніх програмістів. 
Теоретично, ядро apache може функціонувати у чистому вигляді, без 
використання модулів. Проте функціональність такого рішення вкрай 
обмежена. 
Ядро Apache повністю написане мовою програмування C. 
Система конфігурації Apache базується на конфігураційних текстових файлах. 
Має три умовні рівні конфігурації: 
- конфигурация сервера (httpd.conf); 
- конфігурація віртуального хоста (httpd.conf з версії 2.2 extra/httpd-
vhosts.conf); 
- Конфігурація рівня директорії (. htaccess); 
- має власну мову конфігураційних файлів, що базується на блоках 
директив. Майже всі параметри ядра може бути змінено через конфігураційні 
файли, до управління MPM. Більшість модулів має власні параметри; 
- частина модулів використовує у роботі конфігураційні файли 
операційної системи (наприклад, /etc/passwd і /etc/hosts). 
Лист 
ЧДТУ. 222089.001 ПЗ 
44 
Змн. Лист № докум. Підпис Дата 
 
Крім того, параметри можуть бути задані через ключі командного рядка. 
Apache HTTP Server підтримує модульність. Існує понад 500 модулів, які 
виконують різні функції. Частина розробляється командою Apache Software 
Foundation, але основна кількість - окремими open source-розробниками. 
Модулі можуть бути включені до складу сервера в момент компіляції, так 
і завантажені динамічно, через директиви конфігураційного файлу. 
У модулях реалізуються такі речі, як: 
- Підтримка мов програмування; 
- Додавання функціоналу; 
- Виправлення помилок або модифікація основних функцій; 
- Посилення безпеки. 
Частина веб-програм, наприклад панелі керування ISPmanager та 
VDSmanager реалізовані у вигляді модуля Apache. Apache має вбудований 
механізм віртуальних хостів. Він дозволяє повноцінно обслуговувати на одній 
IP-адресі безліч сайтів (доменних імен), відображаючи для кожного власний 
вміст. 
Для кожного віртуального хоста можна вказати власні налаштування ядра 
та модулів, обмежити доступ до всього сайту або окремих файлів. Деякі MPM, 
наприклад Apache-ITK, дозволяють запускати процес httpd для кожного 
віртуального хоста з окремими ідентифікаторами uid і guid. Також існують 
модулі, що дозволяють враховувати та обмежувати ресурси сервера (CPU, 
RAM, трафік) для кожного віртуального хоста. 
Існує безліч модулів, що додають до Apache підтримку різних мов 
програмування та систем розробки. 
До них відносяться: 
- PHP (mod_php); 
- Python (mod python, mod wsgi); 
- Ruby (apache-ruby); 
- Perl (mod perl); 
- ASP (apache-asp). 
Лист 
ЧДТУ. 222089.001 ПЗ 
45 
Змн. Лист № докум. Підпис Дата 
 
- Крім того, Apache підтримує механізми CGI і FastCGI, що дозволяє 
виконувати програми практично на всіх мовах програмування, у 
тому числі C, C++, ssh, Java. 
- Apache має різні механізми забезпечення безпеки та розмежування 
доступу до даних. Основними є: 
- обмеження доступу до певних директорій чи файлів; 
- механізм авторизації користувачів для доступу до директорії за 
методом HTTP-авторизації (mod_auth_basic) та digest-авторизації 
(mod_auth_digest); 
- обмеження доступу до певних директорій або всьому серверу, що 
базується на IP-адресах користувачів; 
- заборона доступу до певних типів файлів для всіх або частини 
користувачів, наприклад, заборона доступу до конфігураційних файлів та 
файлів баз даних. 
Існують модулі, що реалізують авторизацію через СУБД чи PAM. У 
деяких MPM-модулях є можливість запуску кожного процесу Apache 
використовуючи різні uid та gid з відповідними цим користувачам та групам 
користувачів. Також існує механізм suexec, який використовується для запуску 
скриптів та CGI-додатків з правами та ідентифікаційними даними користувача. 
Для реалізації шифрування даних, що передаються між клієнтом та 
сервером, використовується механізм SSL, реалізований через бібліотеку 
OpenSSL. Для автентифікації веб-сервера використовуються сертифікати X.509. 
Існують зовнішні засоби безпеки, наприклад mod_security. 
Починаючи з версії 2.0, з'явилася можливість визначення сервером локалі 
користувача (набір параметрів, що включає набір символів, мову користувача, 
країну, часовий пояс, а також інші налаштування, які користувач очікує бачити 
в інтерфейсі користувача.). 
Повідомлення про помилки та події, надсилані браузеру, тепер 
представлені кількома мовами і використовують технологію SSI. 
Лист 
ЧДТУ. 222089.001 ПЗ 
46 
Змн. Лист № докум. Підпис Дата 
 
Також можна реалізувати засобами сервера відображення різних сторінок 
користувачів з різними локалями. Apache підтримує безліч кодувань, у тому 
числі Unicode, що дозволяє використовувати сторінки, створені в будь-яких 
кодуваннях та мовами. 
Лист 
ЧДТУ. 222089.001 ПЗ 
47 
Змн. Лист № докум. Підпис Дата 
 
7 ТЕХНІЧНЕ ЗАБЕЗПЕЧЕННЯ 
 
Для реалізації комплексу необхідно здійснити вибір технічного 
забезпечення, розглянути весь комплекс питань технічного забезпечення СКС, 
за винятком апаратних компонентів, які безпосередньо використовуються для 
організації комп'ютерної мережі. 
 
7.1 Основні компоненти сервера 
Центральний процесор (ЦП, або центральний процесорний пристрій - 
ЦПУ; англ. central processing unit, скорочено - CPU, дослівно - центральний 
обробний пристрій) - електронний блок або мікросхема - виконавець машинних 
інструкцій (коду програм), головна частина апаратного забезпечення 
комп'ютера або програмованого логічного контролера. Іноді називають 
мікропроцесором чи просто процесором [9,18]. 
Найбільш популярні процесори сьогодні виробляють фірми Intel, AMD та 
IBM. Більшість процесорів, що використовуються в даний час, є сумісними 
Intel, тобто мають набір інструкцій та інтерфейси програмування, що 
використовуються в процесорах компанії Intel. 
Розглянемо лінійку серверних процесорів від найпопулярніших фірм 
виробників Intel та AMD. 
Компанія Intel у своїх процесорах для серверів пропонує високу 
енергоефективність та продуктивність додатків, що інтенсивно використовують 
дані. Багатоядерні серверні процесори Intel використовуються в різноманітних 
64-розрядних серверах, дозволяючи оптимізувати та масштабувати 
обчислювальні середовища та максимально підвищити ефективність 
використання серверів, надаючи при цьому необхідні ресурси для подальшого 
розвитку. 
Лінійка серверних процесорів від Intel: 
- Intel Xeon серии 5600; 
Лист 
ЧДТУ. 222089.001 ПЗ 
48 
Змн. Лист № докум. Підпис Дата 
 
- Intel Xeon серии 6500; 
- Intel Xeon серии 7500; 
- Intel Itanium серии 9000; 
- Intel Xeon серии 3000. 
Розглянемо їх у порядку. 
Intel Xeon серії 5600. 64-розрядні однопроцесорні та двопроцесорні 
сервери та робочі станції на базі багатоядерних процесорів розроблені для 
забезпечення передового рівня продуктивності та максимальної 
енергоефективності. Вони ідеально підходять для різноманітних інфраструктур, 
розподілених обчислювальних систем, обчислювальних систем високої 
щільності та високопродуктивних обчислювальних систем. 
Процесори Intel Xeon серії 5600 стали першими процесорами для серверів 
та робочих станцій, виготовленими за нормами 32 нм із застосуванням 
технології HKMG другого покоління. Це дозволило підвищити швидкодію та 
знизити енергоспоживання транзисторів. У серію Intel Xeon 5600 входять 
шестиядерні моделі, які за продуктивністю перевершують 45-нанометрові 
моделі серії Intel Xeon 5500 на 60%. Повний список процесорів на базі Intel 
Xeon 5600 зі своїми основними характеристиками та середньою ціною 
представлений у додатку A. 
Intel Xeon серії 6500. Двопроцесорні сервери на базі 64-розрядних 
багатоядерних процесорів ідеально підходять для високопродуктивних 
обчислювальних систем та консолідації серверів з відомим робочим 
навантаженням. Вони спеціально розроблялися для рішень із високими 
вимогами до пам'яті. 
Основні відмінності: 
- - процесори для двопроцесорних серверів, що підтримують великий обсяг 
пам'яті; 
- інтелектуальна масштабована продуктивність, оптимізована для 
ефективної віртуалізації інформаційного центру; 
Лист 
ЧДТУ. 222089.001 ПЗ 
49 
Змн. Лист № докум. Підпис Дата 
 
- ідеально підходить для високопродуктивних обчислювальних систем та 
консолідації серверів з прогнозованим робочим навантаженням. 
Список процесорів на базі Intel Xeon 6500 з їх основними 
характеристиками і середньою ціною представлений в додатку Г. 
Intel Xeon серії 7500. Масштабувані сервери на базі від 2 до 256 багатоядерних 
64-розрядних процесорів розроблені для забезпечення максимальної 
продуктивності та найвищої надійності. Вони підтримують виняткову 
масштабованість та продуктивність для найбільш ресурсоємних додатків та 
проектів віртуалізації. 
- Основні відмінності: 
- нове покоління мікроархітектури Intel під кодовою назвою Nehalem 
забезпечує визначну масштабовану продуктивність; 
- інтелектуальна продуктивність та гнучкі функції віртуалізації, що 
автоматично адаптуються до різноманітних вимог віртуальних середовищ 
за допомогою вбудованих апаратних функцій; 
- засоби додаткового підвищення надійності для збереження цілісності 
даних та мінімізації часу простою, що забезпечують повну впевненість 
при виконанні ключових завдань, а також дозволяють досягти видатних 
проривів у галузі корпоративних обчислювальних систем. 
  Сервер із чотирма процесорами серії Xeon 7500 здатний підтримувати до 
1 Тб оперативної пам'яті, а лише в одну серверну систему може бути 
встановлено до 256 таких чіпів. Флагманом нової лінійки є модель X7560 із 
тактовою частотою 2,26 ГГц та 24 Мб кеш-пам'яті. 
Підтримка технології Turbo Boost дозволяє цьому CPU підвищувати 
частоту окремих ядер за рахунок деактивації інших. При цьому його TDP 
становить 130 ватів, тобто не перевищує показника висококласних чіпів Xeon 
попереднього покоління. 
Чіп X7560 може використовуватись у групах до восьми процесорів на 
одній материнській платі, а його вартість становить $3692. Інші ж моделі в 
лінійці восьмиядерних процесорів Xeon 7500 включають різні рішення - від 
Лист 
ЧДТУ. 222089.001 ПЗ 
50 
Змн. Лист № докум. Підпис Дата 
 
енергоефективного чіпа з TDP в 95 ват і частотою 1,86 ГГц, що коштує $3157, 
до стандартних процесорів з частотою 2 ГГц, підтримкою двох або 
восьмисокетних конфігурацій. $2729 відповідно. 
Intel Itanium серії 9000. Сервери на базі процесорів Itanium® 
забезпечують високу продуктивність, що масштабується, в середовищах UNIX і 
мейнфреймів, а також високу надійність для забезпечення роботи критично 
важливих додатків. Ці системи ідеально підходять для обробки найвищих 
навантажень, у тому числі для роботи з базами даних, системами бізнес-
аналітики та програмами для управління ресурсами підприємства. 
Процесори Intel® Itanium® серії 9300 забезпечують високу 
продуктивність, яка більш ніж удвічі перевищує продуктивність систем 
попереднього покоління, а також до шести разів більшу пропускну здатність 
пам'яті, до дев'яти разів більшу пропускну здатність внутрішньосистемних 
з'єднань і до восьми разів більший обсяг пам'яті . Також вони забезпечують 
видатну масштабованість та можуть використовуватися для створення 
високопродуктивних, гнучких та енергоефективних систем віртуалізації 
інформаційних центрів, консолідації та управління робочими завданнями. 
Основні відмінності: 
- великомасштабні бази даних, сховища даних, ERP, бізнес-інформація та 
аналітика даних; 
- Висока масштабованість для обробки найвищих навантажень; 
- Надійність світового рівня для безперервної роботи підприємств. 
Intel Xeon серії 3000. Належать до серії економічних серверів для малого 
бізнесу. Платформи на базі процесорів Intel Xeon серії 3000 дозволяють 
використовувати усі обчислювальні ресурси процесорів Intel Xeon. Ці 
процесори, побудовані на базі мікроархітектури Intel нового покоління під 
кодовою назвою Nehalem, забезпечують визначну продуктивність та 
енергоекономічність за доступної ціни. 
Сервери на базі процесорів Intel Xeon 3000 захищають критично важливу 
робочу інформацію та забезпечують необхідну продуктивність для підвищення 
Лист 
ЧДТУ. 222089.001 ПЗ 
51 
Змн. Лист № докум. Підпис Дата 
 
продуктивності роботи як окремих співробітників, так і компанії в цілому. Це 
робить їх ідеальним рішенням для малого та середнього бізнесу, яким 
необхідно прискорити розвиток при скороченні витрат на ІТ. 
Основні відмінності: 
- сервери, створені на базі інтелектуальних процесорів Intel Xeon, легко 
адаптуються до різноманітних робочих навантажень, забезпечуючи 
максимальну продуктивність, коли вона потрібна; 
- Високонадійні сервери на базі процесорів Intel Xeon захищають важливу 
бізнес-інформацію за допомогою функції коду корекції помилок та підтримки 
надмірності зберігання даних; 
- з урахуванням дедалі активнішого використання комп'ютерів, ресурсів 
мережі Інтернет і цифрових даних, все сервери з урахуванням процесорів Intel 
Xeon забезпечують високу продуктивність і достатній запас ресурсів 
підвищення продуктивності роботи співробітників з розвитку бізнесу. 
Список процесорів на базі Intel Xeon 3000 зі своєю середньою ціною 
представлений у додатку Г. 
Компанія AMD у своїх процесорах для серверних рішень пропонує нову 
серверну платформу Opteron 6000 Series. До складу цієї платформи входять 
процесори серії Opteron 6100 з 8 та 12 обчислювальними ядрами, відомі під 
кодовим найменуванням Magny-Cours. 
Чіпи Opteron 6100 створені за нормами 45 нм технології та оснащені 
чотирма каналами HyperTransport 3.0, а також інтегрованим контролером 
пам'яті з підтримкою чотириканальної пам'яті DDR3. Об'єм кеша третього рівня 
даних CPU може досягати 12 Мб. Повідомляється, що платформа AMD Opteron 
6000 вже використовується у своїх системах такими великими виробниками, як 
HP, Dell, Acer Group, Cray та SGI. 
Список основних процесорів, що надаються фірмою AMD для серверних 
рішень та їх специфікація, наведено в таблиці 7.1. 
Лист 
ЧДТУ. 222089.001 ПЗ 
52 
Змн. Лист № докум. Підпис Дата 
 
Таблиця 7.1 -  Короткий список серверних процесорів AMD 
Модель Специфікація Ціна, грн 
6176 SE 12 ядер 11000 
6174 12 ядер 9320 
6172 12 ядер 7912 
6168 12 ядер 5950 
6164 HE 12 ядер 5950 
6136 8 ядер 5950 
6134 8 ядер 4180 
6128 8 ядер 2128 
6128 HE 8 ядер 4180 
6124 HE 8 ядер 3640 
 
В реальних умовах роботи програми, навантаження на сервер буде 
невисоким, тому буде доцільно вибрати процесор початкового рівня. 
Виберемо для нашої серверної системи процесор Intel Xeon E5620, 2,40 
ГГц, 12 МБ, 80 Вт, 4/8. Вартість такого процесора коливається в районі 3000 
грн. 
Такий процесор відповідає всім сучасним вимогам і зможе в повному 
обсязі обробляти інформацію без будь-яких затримок при цьому дозволить 
заощадити витрачені гроші. 
Системна плата - це складна багатошарова друкована плата, де 
встановлюються основні компоненти персонального комп'ютера (центральний 
процесор, контролер ОЗУ і власне ОЗУ, завантажувальне ПЗУ, контролери 
базових інтерфейсів вводу-виводу). Як правило, системна плата містить роз'єми 
(слоти) для підключення додаткових контролерів, для яких зазвичай 
використовуються шини USB, PCI і PCI-Express. 
Лист 
ЧДТУ. 222089.001 ПЗ 
53 
Змн. Лист № докум. Підпис Дата 
 
Тип роз'єму вибраного нами процесора – LGA1366. І для створення 
робочого серверного комп'ютера знадобиться системна плата з відповідним 
гніздом LGA1336. 
LGA 1336 (або Socket-B) – виконаний за технологією Land Grid Array 
(LGA). Є роз'ємом з пружними або м'якими контактами, до яких за допомогою 
спеціального тримача із захопленням і важеля притискається процесор, що має 
контактні майданчики. Підтримує роботу з оновленим модулем стабілізатора 
напруги Voltage Regulator Module 11.1. Останній підтримує ряд нових функцій, 
таких як Power on Configuration (POC), Market Segment Identification (MSID) та 
Power State Indicator Input (PSI#). 
Вибрана нами материнська плата INTEL S5520HC допоможе суттєво 
підвищити швидкість роботи сервера та його продуктивність. Ця материнська 
плата підтримує сучасні моделі швидких і потужних процесорів, на ній 
можливе встановлення великого обсягу оперативної пам'яті, що, безсумнівно, 
позначиться на швидкості роботи комп'ютера. Також материнська плата INTEL 
S5520HC передбачає можливість підключення інших необхідних пристроїв за 
рахунок додаткових слотів на платі. Материнська плата INTEL S5520HC має 
такі технічні характеристики: 
- роз'єм для процесора – 2 x LGA 1366; 
- чіпсет – Intel 5520; 
- частота системної шини – залежить від CPU; 
- максимальний обсяг пам'яті (Гб) – залежить від CPU; 
- тип пам'яті – DDR III; слоти PCI; 
- слоти PCI-Express 1x; 
- слоти PCI-Express 16x; 
- звуковий контролер – ні; 
- інтегроване відео – є; 
- максимальна кількість USB роз'ємів - 8; 
- Форм-фактор - SSI EEB. 
Лист 
ЧДТУ. 222089.001 ПЗ 
54 
Змн. Лист № докум. Підпис Дата 
 
Інші компоненти здебільшого немає ніякої принципової різниці. Їхній 
вибір був здійснений на основі найвигідніших рішень, представлених сьогодні 
на українському ринку. Основними критеріями вибору були такі параметри як 
технічні характеристики, середня ціна, а також надання гарантійного 
обслуговування виробником. 
Основні компоненти, встановлені на системній платі: 
- центральний процесор; 
- північний міст; 
- південний міст; 
- оперативна пам'ять; 
- завантажувальне ПЗП. 
Найбільш відомими виробниками системних плат на російському ринку 
нині є фірми Asus, Gigabyte, MSI, Intel, Elitegroup, AsRock. Раніше великою 
популярністю користувалися плати фірм Abit та Epox. На сьогодні обидві 
фірми припинили випуск системних плат. З російських виробників системних 
плат можна згадати лише компанію Формоза, яка робила плати, 
використовуючи компоненти фірм Lucky Star та Albatron. З українців — 
корпорацію «Квазар-Мікро». 
Список всіх компонентів серверної станції та їх основні технічні 
характеристики наведено у таблиці 7.2. 
 
Таблиця 7.2 -  Компоненти серверної станції та їх специфікація. 
Корпус Chassis 1U Rackmount (глубина - 650mm) 
2.40-2.66GHz Intel® Xeon® E5620 Westmere-EP QuadCore 
Процесор CPU 1 
w/HyperThreading 5.86GT/s QPI, 12MB Smart cache 
Набір мікросхем Chipset Intel® 5520 Server chipset 
Встановлена 
DIMM 1 DIMM 2048MB DDR-III PC3-10600 ECC 
пам’ять CPU 1 
Встановлена 
DIMM 2 DIMM 2048MB DDR-III PC3-10600 ECC 
пам’ять CPU 1 
Інтегровані Мережевий Intel® 82576 Gigabit LAN Network Interface Controller w/VMDq 
пристрої адаптер support 
Лист 
ЧДТУ. 222089.001 ПЗ 
55 
Змн. Лист № докум. Підпис Дата 
 
Мережевий Intel® 82576 Gigabit LAN Network Interface Controller w/VMDq 
адаптер support 
Matrox® G200eW integrated Graphics 
Відеоадаптер 
Controller supported by the Winbond® WPCM450 
Intel® ICH10R 6-channel SATA-II 300 w/integrated chipset RAID 
Контролер SATA 
0/1/10/5(software) support 
COM 2 (1 internal, 1 rear) 
USB 2.0 8 (2 internal, 2 A-type internal, 4 rear) 
VGA 1 
Інтерфейси 
Keyboard PS/2 1 
Mouse PS/2 1 
LAN (RJ-45) 2 + 1 for remote management 
Дисковий кошик HotSwap 4 дискових відсіка HotSwap 3.5" SerialATA/SAS 
Периферійні 5.25" external 
DVD-ROM 8x/16x (slim) 
відсіки slim 
Джерело живлення Відмовостійке джерело з можливістю гарячої заміни 1+1 
PSU 
650Вт 
Система 
Middle FANs 6 x 40х56mm UltraHigh speed Dual rotor FANs with Speed control 
охолодження 
Віддалене IPMI® v2.0 Server Management + KVM-over-LAN and virtual 
Management 
управління media support w/dedicated LAN 
Операційна 
OS Ubuntu Server 
система 
 
 
7.2 Основні компоненти робочої станції 
Основні завдання, які має виконувати робоча станція, полягають у зборі 
інформації, обробці даних, обміні даними із сервером, роботі з документами. 
Для виконання цих завдань потрібно технічне рішення із застосуванням 
сучасних комп'ютерних компонентів. У той же час висока продуктивність 
робочої станції не така важлива, як продуктивність сервера, тому буде доцільно 
пожертвувати продуктивністю з метою економії фінансових коштів. 
 У цій випускній роботі бакалавра розглядається робоча станція, що 
максимально підходить для виконання поставлених завдань. 
Лист 
ЧДТУ. 222089.001 ПЗ 
56 
Змн. Лист № докум. Підпис Дата 
 
AMD Athlon II X2 240 (AM3, 2048Kb) BOX - 500 грн. 
Мат.оплата: GigaByte GA-MA785G-UD3H – 600 грн. 
Опер.пам'ять: Samsung DDR2 800 DIMM 2Gb - 300 грн. 
HDD: Seagate 250GB ST3250318AS – 350 грн. 
Привід Sony NEC Optiarc AD-5240S – 400 грн. 
Корпус із БП: INWIN c-серії 400-450W – 400 грн. 
Процесор AMD Athlon II X2 240 вигідно відрізняється від інших процесорів за 
доступну ціну, при цьому показує хороші результати в роботі. 
Процесор орієнтований на платформу Socket AM3, яка обернена сумісна з 
Socket AM2+. Тактова частота двоядерного процесора 2,8 ГГц, сумарний обсяг 
кеш-пам'яті 2 МБ. 
Материнська плата GIGABYTE GA-MA785GT-UD3H підтримує як все 
сучасне обладнання, так і не дуже сучасне з інтерфейсами COM і LPT, має 
сучасне інтегроване відеоядро, здатне виводити зображення по D-Sub, DVI і 
HDMI, має аудіокодек і широкі можливості розширення. 
Лист 
ЧДТУ. 222089.001 ПЗ 
57 
Змн. Лист № докум. Підпис Дата 
 
8 ТЕСТУВАННЯ СКС 
 
Введення даних здійснюється у вікні "Розрахунок відстаней:" (Рис 8.1). 
Існують варіанти вибору критерію пошуку, такі як найшвидший маршрут, у 
цьому випадку результатом буде маршрут, прокладений через швидкісні 
автомагістралі. Другий варіант – це найкоротший маршрут, у цьому випадку 
буде підібрано найкоротший маршрут через усі доступні дороги.. 
 
 
Рисунок 8.1 -  Розрахунок відстаней 
 
В області введення «Через міста:» можна вказати проміжні пункти, через 
які слід будувати маршрут. 
Також програма дозволяє вказати швидкість їзди для кожної категорії 
доріг, це дозволить розрахувати приблизний час. Вказавши витрати пального 
автомобіля та ціну палива, можна буде розрахувати приблизні витрати на 
маршрут. 
Лист 
ЧДТУ. 222089.001 ПЗ 
58 
Змн. Лист № докум. Підпис Дата 
 
 
В результаті роботи програма відображає оптимальний маршрут, 
проміжні пункти, відстань маршруту, відстань між проміжними пунктами, а 
також час, який необхідно витратити на маршрут (рис. 8.2). 
 
Рисунок 8.2 -  Розрахунок оптимального маршруту між пунктами 
 
На рисунку 8.3 показано можливість відображення маршруту на карті. На 
карту наноситься вибраний маршрут із відображенням усіх проміжних пунктів. 
Як вихідна картка була вибрана картка, яку надає Google. Основні переваги 
полягають у високій деталізації як великих міст, так і невеликих селищ. Існує 
можливість перемикання виду картки. При виборі типу відображення 
«Супутник», на карті буде показано детальну карту з відображенням всіх 
об'єктів місцевості. Вибір такої категорії карти дозволяє побачити стан доріг, 
рельєф місцевості та багато іншого. 
Лист 
ЧДТУ. 222089.001 ПЗ 
59 
Змн. Лист № докум. Підпис Дата 
 
 
Рисунок  8.3 -  Відображення маршрута на мапах Google Maps 
 
 
 
Лист 
ЧДТУ. 222089.001 ПЗ 
60 
Змн. Лист № докум. Підпис Дата 
 
ВИСНОВКИ 
 
У цій кваліфікаційній роботі бакалавра було виконано розробку СКС 
визначення оптимального маршруту за умов транспортного підприємства. 
В роботі було поставлено та виконано такі завдання: 
- проведено аналітичний огляд та аналіз об'єкта комп'ютеризації ТОВ 
«Рамус». 
- досліджено та реалізовано алгоритм Дейкстри пошуку оптимального 
маршруту для підвищення ефективності перевезень; 
- здійснено реалізацію програмного комплексу для встановлення зв'язку 
між структурами та підрозділами; 
- проведено тестування реалізованого програмного комплексу. 
На сьогоднішній день розробка та впровадження систем автоматизації є 
одним із найцікавіших та найважливіших завдань у галузі інформаційних 
технологій. Виникає потреба у використанні нових технологій передачі. 
Інтенсивне використання інформаційних технологій вже зараз є найсильнішим 
аргументом у конкурентній боротьбі, що розгорнулася на світовому ринку. 
Результати кваліфікаційній роботи бакалавра рекомендуються до 
розгляду при автоматизації виконуваних процесів в умовах автотранспортного 
підприємства. 
Лист 
ЧДТУ. 222089.001 ПЗ 
61 
Змн. Лист № докум. Підпис Дата 
 
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 
 
1. Engelbrecht, A. P. Computational intelligence: an introduction [Text] / A. P. 
Engelbrecht // Chichester, West Sussex : Wiley & Sons. – 2007. – P. 630. DOI: 
10.1002/9780470512517 
2. Fedorov, E. Method For Parametric Identification Of Gaussian Mixture Model 
Based On Clonal Selection Algorithm [Text] / V. Lukashenko, T. Utkina, A. 
Lukashenko, K. Rudakov // CEUR Workshop Proceedings. – 2019. – Vol. 
2353. – P. 41-55. http://ceur-ws.org/Vol-2353/paper4.pdf 
3. Glover, F. Handbook of metaheuristics [Text] / F. Glover, G. A. Kochenberger 
// Dordrecht : Kluwer Academic Publishers. – 2003. – P. 570. DOI: 
10.1007/B101874 
4. Kuchuk, N. Modeling of information interconnection in a computer control 
system of moving objects [Text] / N. Kuchuk, V. Merlak // Radioelectronic and 
computer systems. – 2021. – № 1. – P. 31-39. DOI: 10.32620/reks.2021.1.02 
5. Martí, R. Handbook of Heuristics [Text] / R. Martí, P. M. Pardalos, M. G. C. 
Resende // Charm : Springer. – 2018. – P. 1289. DOI: 10.1007/978-3-319-
07124-4 
6. Кравченко С. Фантастичне сьогодні. Нанотехнології: реалії та 
перспективи. «Chip комп'ютери і комунікації» / Кравченко С. - Україна, 
2018. - №7. - 20-23 с. 
7. Мікромеханіки для скануючої зондової мікроскопії та нанотехнологій - 
«Електронна промисловість», 2021. - №6. - 34-48 с. 
8. Поляков П. Ф. Міні-, мікро- і нанороботи. Відкриті інформаційні та 
комп'ютерні інтегровані технології: Зб. науч. праць. / Поляков П.Ф. та ін. 
- Харків: Нац. аерокосм. ун-т "ХАІ", 2019. - Вип. 35. – 104-114 с. 
9. Лисенко Г. Л. Мікро- та наносистемна техніка : підручник / Г. Л. Лисенко, 
О. В. Камінський. — Вінниця : ВНТУ, 2018. — 252 с.  
Лист 
ЧДТУ. 222089.001 ПЗ 
62 
Змн. Лист № докум. Підпис Дата 
 
10. Азаренков М. О. Наноматеріали і нанотехнології / М. О. Азаренков, В. М. 
Береснєв, О. Д. Погребняк та ін. — Харків : ХНУ імені В. Н. Каразіна, 
2019. — 324 с.  
11. Cholach, V. V. Robotics and Mechatronic Systems: Trends and Challenges / V. 
V. Cholach, O. M. Riabov // Journal of Nano- and Electronic Physics. – 2021. 
– Vol. 13, No. 4. DOI: 10.21272/jnep.13(4).04022  
12. Senturia, S. D. Microsystem Design / S. D. Senturia // Boston : Springer 
Science & Business Media. – 2013 (rep. 2019). – P. 689.  
13. Korotun, A. V. Introduction to Nanophysics and Nanotechnologies / A. V. 
Korotun // Zaporizhzhia : National University. – 2020. – 210 p. 
Лист 
ЧДТУ. 222089.001 ПЗ 
63 
Змн. Лист № докум. Підпис Дата 
 
ДОДАТОК А  
Структура таблиць інформаційної бази даних 
 
Таблиця А.1 – Структура таблиці Водії 
Розмір, Порожні 
Ім'я поля Тип даних Опис 
байт поля 
ІН Int 4 Ні ІН водія 
Прізвище Text 64 Ні Прізвище водія 
Ім'я Text 64 Ні Ім'я водія 
Вік Int 12 Ні Вік водія 
Серія паспорта Char 32 Ні Серія паспорта 
Сост_здоров'я Text 4 Ні Стан здоров'я 
рез_мед_огляду Char 8 так Результати мед. огляду 
Категорія Char 4 Ні Категорія прав водія 
Робочі дні Char 8 Ні Робочі дні водія 
 
Таблиця А.2 − Структура таблиці Водії_відс 
Розмір, Порожні 
Ім'я поля Тип даних Опис 
байт поля 
ІН int 4 Ні ІН водія 
Прізвище Text 64 Ні Прізвище водія 
Ім'я Text 64 Ні Ім'я водія 
Пункт_прибуття Text 48 Ні Пункт призначення 
Дата відправки Date/time 8 Ні Дата відправлення з АТП 
Дата прибуття Date/time 8 Ні Дата прибуття на АТП 
 
Лист 
ЧДТУ. 222089.001 ПЗ 
64 
Змн. Лист № докум. Підпис Дата 
 
Таблиця А.3 − Структура таблиці Водії_гот 
Розмір, Порожні 
Ім'я поля Тип даних Опис 
байт поля 
ІН int 4 Ні ІН водія 
Прізвище Text 64 Ні Прізвище водія 
Им'я Text 64 Ні Ім'я водія 
Рез_мед_осмотра Char 8 Ні Результати мед. огляду водія 
Таблиця А.5 – Структура таблиці Міста 
Розмір, Порожні 
Ім'я поля Тип даних Опис 
байт поля 
ІН int 4 Ні ІН Міста 
Назва Char 64 Ні Назва міста 
Населення int 64 Ні Населення міста 
Якість_дороги Char 32 Ні Якість дорожнього покриття 
Таблиця А.6 − Структура таблиці Дорожні_листи 
Розмір, Порожні 
Ім'я поля Тип даних Опис 
байт поля 
ІПН int 4 Ні ІН дорожнього листа 
Дата видачі Date/time 8 Ні Дата видачі дорожнього 
листа 
Дата відправки Date/time 8 Ні Дата відправки ТЗ з АТП 
Дата_повернення Date/time 8 Ні Дата повернення ТЗ до 
АТП 
Прізвище Char 64 Ні Прізвище водія 
Ім'я Char 64 Ні Ім'я водія 
Пункт відправки Char 64 Ні Пункт відправки 
Модель_ТС Char 32 Ні Модель транспортного 
засобу 
Номер_ТС Char 12 Ні Номер транспортного 
засобу 
Лист 
ЧДТУ. 222089.001 ПЗ 
65 
Змн. Лист № докум. Підпис Дата 
 
Таблиця А.7 - Структура таблиці Трансп_засоби 
Розмір, Порожні 
Ім'я поля Тип даних Опис 
байт поля 
ІН int 4 Ні ІН транспортного засобу 
Модель_ТС int 32 Ні Модель транспортного 
засобу 
Номер_ТС Varchar 12 Ні Номер транспортного 
засобу 
Вантажопідйомність int 12 Ні Вантажопідйомність ТЗ 
Витрати палива int 8 Ні Витрата палива на 100 
км. л. 
Дата_ЩО Date/time 8 Ні Дата часткового 
тех.огляду 
Дата_ПТО Date/time 8 Ні Дата повного тех.огляду 
Категорія Char 8 Ні Категорія автомобіля 
Таблиця А.8 – Структура таблиці Пасажири 
Розмір, Порожні 
Ім'я поля Тип даних Опис 
байт поля 
ІН int 4 Ні ІН пасажира 
Вікова категорія Char 12 Ні Вікова категорія 
пасажирів, що 
перевозяться 
 
Таблиця А.9 − Структура таблиці Небезпечні_вантажі 
Розмір, Порожні 
Ім'я поля Тип даних Опис 
байт поля 
ІН int 4 Ні ІН небезпечного вантажу 
Назва text 12 Ні Найменування небезпечного 
вантажу 
Вага Int 8 Ні Вага 
Лист 
ЧДТУ. 222089.001 ПЗ 
66 
Змн. Лист № докум. Підпис Дата 
 
Класифікація Varchar 64 Ні Класифікація 
Цінність Text 12 Да Цінність 
Довжина Char 12 Ні Габарити 
Ширина Char 12 Ні Габарити 
Высота Char 12 Ні Габарити 
 
Таблиця А.10 − Структура таблиці Звичайні_вантажі 
Розмір, Порожні 
Ім'я поля Тип даних Опис 
байт поля 
ІН int 4 Ні ІН вантажа 
Назва int 4 Ні Назва вантажа 
Вага Char 8 Ні Вага 
Класифікація Varchar 100 Ні Класифікація 
Цінність Text 16 Да Цінність 
Довжина Char   Габарити 
Ширина Char   Габарити 
Висота Char   Габарити 
 
Таблиця А.11 − Структура таблиці Дороги 
Розмір, Порожні 
Ім'я поля Тип даних Опис 
байт поля 
ІН int 4 Ні ІН Дороги 
Маркування int 4 Ні Маркування дороги 
Найменування int 4 Ні Найменування дороги 
Якість_дор_покриття Varchar 200 Ні Якість дорожнього 
покриття 
Кол_смужка Text 16 Ні Кількість смуг руху 
Макс_доп_довжина Int 4 Ні Максимальні габарити 
для переозування 
Лист 
ЧДТУ. 222089.001 ПЗ 
67 
Змн. Лист № докум. Підпис Дата 
 
Макс_доп_ширина Int   Максимальні габарити 
для переозування 
Макс_доп_висота Int   Максимальні габарити 
для перевезення 
 
Таблиця А.4 − Структура таблиці Вантаж 
Розмір, Порожні 
Ім'я поля Тип даних Опис 
байт поля 
ІН int 4 Ні ІН Груза 
Груз_пас Char 12 Ні Категорія груза що перевозиться 
Лист 
ЧДТУ. 222089.001 ПЗ 
68 
Змн. Лист № докум. Підпис Дата 
 
ДОДАТОК Б 
Список використовуваних програмних скорочень з описом 
технологій 
 
PHP - Hypertext Preprocessor — скриптова мова програмування загального 
призначення, що інтенсивно використовується для розробки веб-додатків. В 
даний час підтримується переважною більшістю хостинг-провайдерів і є одним 
з лідерів серед мов програмування, які застосовуються для створення 
динамічних веб-сайтів. 
JSP – JavaServer Pages – технологія, що дозволяє веб-розробникам легко 
створювати вміст, який має як статичні, так і динамічні компоненти. По суті, 
сторінка JSP є текстовим документом, що містить текст двох типів: статичні 
вихідні дані, які можуть бути оформлені в одному з текстових форматів HTML, 
SVG, WML або XML та JSP елементи, що конструюють динамічний вміст. Крім 
цього, можуть використовуватися бібліотеки JSP тегів, а також EL (Expression 
Language), для впровадження Java-коду в статичний вміст JSP-сторінок. 
GNU GPL - General Public License - ліцензія на вільне програмне 
забезпечення, створена в рамках проекту GNU в 1988 р. Її також скорочено 
називають GNU GPL або навіть просто GPL, якщо з контексту зрозуміло, що 
йдеться саме про цю ліцензію. Друга версія цієї ліцензії була випущена у 1991 
році, третя версія, після багаторічної роботи та тривалої дискусії – у 2007 році. 
GNU Lesser General Public License (LGPL) – це ослаблена версія GPL, 
призначена для деяких бібліотек програмного забезпечення. GNU Affero 
General Public License – це посилена версія GPL для програм, призначених для 
доступу до них через мережу. 
XForms - технологія веб-форм, яка заснована на архітектурі Model-View-
Controller, де дані подаються у вигляді XML. 
LAMP - акронім, що позначає набір (комплекс) серверного програмного 
забезпечення, що широко використовується у Всесвітній павутині. LAMP 
названий за першими літерами компонентів, що входять до його складу: 
Лист 
ЧДТУ. 222089.001 ПЗ 
69 
Змн. Лист № докум. Підпис Дата 
 
Linux – операційна система Linux; 
Apache – веб-сервер; 
MySQL - СУБД; 
PHP — мова програмування, яка використовується для створення веб-
програм. 
GTK (скорочення від GIMP Toolkit) - кроссплатформенна бібліотека 
елементів інтерфейсу. Поряд із Qt є однією з двох найбільш популярних на 
сьогоднішній день бібліотек для X Window System. 
PHP-Qt — крос-платформна бібліотека для розробки програмного 
забезпечення з графічним інтерфейсом мовою програмування PHP, заснована 
на крос-платформному інструментарії розробки програмного забезпечення Qt 
від компанії Trolltech. 
BSDL (англ. Boundary Scan Description Language) - це текстовий файл, 
написаний VHDL-подібною мовою опису для периферійного сканування, що 
містить інформацію про архітектуру регістрів периферійного сканування 
мікросхеми. Є частиною стандарту IEEE 1149.1. Ці файли зазвичай доступні 
для завантаження з сайтів виробників. Системи периферійного сканування 
використовують ці файли для доступу до JTAG-ланцюга електронної плати, а 
також автоматичної генерації тестових векторів для перевірки ланцюгів, 
пов'язаних з даною ІС. 
API - Інтерфейс програмування додатків (іноді інтерфейс прикладного 
програмування) - набір готових класів, процедур, функцій, структур та 
констант, що надаються програмою (бібліотекою, сервісом) для використання у 
зовнішніх програмних продуктах. Використовується програмістами для 
написання різноманітних програм. 
ODBC (англ. Open Database Connectivity) - це програмний інтерфейс (API) 
доступу до баз даних, розроблений фірмою Microsoft, у співпраці з Simba 
Technologies на основі специфікацій Call Level Interface (CLI), який розроблявся 
організаціями SQL Access Group, X/Open та Microsoft. Згодом CLI був 
стандартизований ISO ISO/IEC 9075-3:2003. Стандарт CLI покликаний 
Лист 
ЧДТУ. 222089.001 ПЗ 
70 
Змн. Лист № докум. Підпис Дата 
 
уніфікувати програмну взаємодію із СУБД, зробити її незалежною від 
постачальника СУБД та програмно-апаратної платформи. 
CGI (від англ. Common Gateway Interface - "загальний інтерфейс шлюзу") 
- стандарт інтерфейсу, що використовується для зв'язку зовнішньої програми з 
веб-сервером. Програму, яка працює за таким інтерфейсом спільно з веб-
сервером, прийнято називати шлюзом, хоча багато хто віддає перевагу назвам 
«скрипт» (сценарій) або «CGI-програма». 
FastCGI - клієнт-серверний протокол взаємодії веб-сервера та програми, 
подальший розвиток технології CGI. У порівнянні з CGI є більш продуктивним 
та безпечним. 
SSH (англ. Secure SHell — «безпечна оболонка») — мережевий протокол 
сеансового рівня, що дозволяє здійснювати віддалене керування операційною 
системою та тунелювання TCP-з'єднань (наприклад, передачі файлів). Схожий 
за функціональністю з протоколами Telnet і rlogin, але, на відміну від них, 
шифрує весь трафік, включаючи і паролі, що передаються. SSH припускає 
вибір різних алгоритмів шифрування. SSH-клієнти та SSH-сервери доступні для 
більшості мережевих операційних систем. 
PAM - Pluggable Authentication Modules (підключаються модулі 
аутентифікації) — Це набір бібліотек, що розділяються, які дозволяють 
інтегрувати різні низькорівневі методи аутентифікації у вигляді єдиного 
високорівневого API. Це дозволяє надати єдині механізми управління, 
вбудовування прикладних програм у процес аутентифікації. Є однією з частин 
стандартного механізму безпеки UNIX-систем. 
MPM - Мульти-процесные модулі, відповідальні з'єднання з мережевими 
портами комп'ютера, прийом запитів і координацію їх обробки дочірніми 
процесами. 
suEXEC - дозволяє користувачам запускати CGI та SSI додатків від імені 
іншого користувача. 
SSI (Server Side Includes – включення на стороні сервера) – нескладна 
мова для динамічного «складання» веб-сторінок на сервері з окремих складових 
Лист 
ЧДТУ. 222089.001 ПЗ 
71 
Змн. Лист № докум. Підпис Дата 
 
частин та видачі клієнту отриманого HTML-документа. Реалізовано у веб-
сервері Apache за допомогою модуля mod_include. Увімкнена в установках за 
промовчанням веб-сервера можливість дозволяє підключати HTML-файли, 
тому для використання інструкцій файл повинен закінчуватися розширенням 
.shtml, .stm або .shtm. 
Лист 
ЧДТУ. 222089.001 ПЗ 
72 
Змн. Лист № докум. Підпис Дата 
 
ДОДАТОК В 
Програмна реалізація алгоритму дейкстри мовою PHP 
function dej($array) { 
 // Розмірність масиву 
 $count = count($array); 
 for ($i = 0; $i < $count; $i++) { 
 $a[] = $i; 
 } 
 while(1) {  
 $index = 0; 
 for($i = 0; $i < $count; $i++) { 
 if ($a[$i+1] > $a[$i]) { 
 $index = $i+1; 
 } 
 } 
 if ($index == 0) {  
 break; 
 } 
 if ($a[$i-1] > $a[$i-2]) { 
 $index = $i-1; 
 } 
 $min = $a[$index]; 
 $in_min = $index; 
 for($j = $index; $j < $count; $j++) { 
 if (($a[$j] < $min) && ($a[$j] > $a[$index-1])) { 
 $min = $a[$j]; 
 $in_min = $j; 
 } 
Лист 
ЧДТУ. 222089.001 ПЗ 
73 
Змн. Лист № докум. Підпис Дата 
 
 } 
 $swap = $a[$in_min]; 
 $a[$in_min] = $a[$index-1]; 
 $a[$index-1] = $swap; 
 for ($i1 = $index, $i2 = $count-1; $i1 < $i2; $i1++, $i2--) { 
 $swap = $a[$i1]; 
 $a[$i1] = $a[$i2]; 
 $a[$i2] = $swap; 
 } 
 $str = ''; 
 for($k = 0; $k < $count; $k++) { 
 $i = $a[$k]; 
 $str .= $array[$i].' '; 
 } 
 $result[] = $str; 
 } 
 return $result; 
 } 
 // множина невідвіданих вершин 
 $array = array(); 
 $dej = dej($array); 
 
 print_r($dej); 
 ?>   
Лист 
ЧДТУ. 222089.001 ПЗ 
74 
Змн. Лист № докум. Підпис Дата 
 
 ДОДАТОК Г 
Реалізація програмного забезпечення мовою PHP 
 
<?php 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Program</title> 
<style> 
body { 
    text-align: center; 
    margin: 0px; padding: 0px; 
} 
body, td, th, input { 
    font-family: Verdana, Arial, Helvetica, sans-serif; 
    font-size: 11px; 
} 
h1 { 
    font-family: Arial, Helvetica, sans-serif; 
    font-size: 15px; 
    text-align: center; 
} 
.cityCell { 
    width: 60px; 
} 
.input { 
    background-color: #CCFFFF; 
    border: 1px solid #ccc; 
    padding: 1px; 
    margin: 1px; 
} 
#container { 
    margin: 0 auto 0 auto; padding: 10px; 
    width: 520px; 
    text-align: left; 
Лист 
ЧДТУ. 222089.001 ПЗ 
75 
Змн. Лист № докум. Підпис Дата 
 
    border-left: 2px solid #333; 
    border-right: 2px solid #333; 
    border-bottom: 2px solid #333; 
} 
form { 
    margin: 0px; padding: 0px; 
} 
.debug td { 
    padding: 0 2px 0 2px; 
} 
</style> 
</head> 
 
<body> 
<div id="container"> 
<h1>Genetic Algorithm : Определение оптимального маршрута</h1> 
<form method="post"> 
<table width="500" border="0" cellspacing="2" cellpadding="0" style='border: 
1px solid #999;' align="center"> 
  <tr> 
    <td><strong>Cities</strong></td> 
    <td align="center" class='cityCell'>Город A</td> 
    <td align="center" class='cityCell'>Город B</td> 
    <td align="center" class='cityCell'>Город C</td> 
    <td align="center" class='cityCell'>Город D</td> 
    <td align="center" class='cityCell'>Город E</td> 
    <td align="center" class='cityCell'>Город F</td> 
    <td align="center" class='cityCell'>Город G</td> 
  </tr> 
  <tr> 
    <td>Город</td> 
    <td bgcolor="#CC3333"><div align="center">0</div></td> 
    <td><div align="center"> 
      <input name="1_2" type="text" class="input" id="textfield" size="4" 
maxlength="4" val-ue="<?=$_POST['1_2']?>" /> 
    </div></td> 
    <td><div align="center"> 
      <input name="1_3" type="text" class="input" id="textfield2" size="4" 
maxlength="4" val-ue="<?=$_POST['1_3']?>" /> 
Лист 
ЧДТУ. 222089.001 ПЗ 
76 
Змн. Лист № докум. Підпис Дата 
 
    </div></td> 
    <td><div align="center"> 
      <input name="1_4" type="text" class="input" id="textfield3" size="4" 
maxlength="4" val-ue="<?=$_POST['1_4']?>" /> 
    </div></td> 
    <td><div align="center"> 
      <input name="1_5" type="text" class="input" id="textfield4" size="4" 
maxlength="4" val-ue="<?=$_POST['1_5']?>" /> 
    </div></td> 
    <td><div align="center"> 
      <input name="1_6" type="text" class="input" id="textfield5" size="4" 
maxlength="4" val-ue="<?=$_POST['1_6']?>" /> 
    </div></td> 
    <td><div align="center"> 
      <input name="1_7" type="text" class="input" id="textfield6" size="4" 
maxlength="4" val-ue="<?=$_POST['1_7']?>" /> 
    </div></td> 
  </tr> 
  <tr> 
    <td>Город B</td> 
    <td><div align="center"></div></td> 
    <td bgcolor="#CC3333"><div align="center">0</div></td> 
    <td><div align="center"> 
      <input name="2_3" type="text" class="input" id="textfield7" size="4" 
maxlength="4" val-ue="<?=$_POST['2_3']?>" /> 
    </div></td> 
    <td><div align="center"> 
      <input name="2_4" type="text" class="input" id="textfield8" size="4" 
maxlength="4" val-ue="<?=$_POST['2_4']?>" /> 
    </div></td> 
    <td><div align="center"> 
      <input name="2_5" type="text" class="input" id="textfield9" size="4" 
maxlength="4" val-ue="<?=$_POST['2_5']?>" /> 
    </div></td> 
    <td><div align="center"> 
      <input name="2_6" type="text" class="input" id="textfield10" size="4" 
maxlength="4" val-ue="<?=$_POST['2_6']?>" /> 
    </div></td> 
    <td><div align="center"> 
Лист 
ЧДТУ. 222089.001 ПЗ 
77 
Змн. Лист № докум. Підпис Дата 
 
      <input name="2_7" type="text" class="input" id="textfield11" size="4" 
maxlength="4" val-ue="<?=$_POST['2_7']?>" /> 
    </div></td> 
  </tr> 
  <tr> 
    <td>Город C</td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td bgcolor="#CC3333"><div align="center">0</div></td> 
    <td><div align="center"> 
      <input name="3_4" type="text" class="input" id="textfield12" size="4" 
maxlength="4" val-ue="<?=$_POST['3_4']?>" /> 
    </div></td> 
    <td><div align="center"> 
      <input name="3_5" type="text" class="input" id="textfield13" size="4" 
maxlength="4" val-ue="<?=$_POST['3_5']?>" /> 
    </div></td> 
    <td><div align="center"> 
      <input name="3_6" type="text" class="input" id="textfield14" size="4" 
maxlength="4" val-ue="<?=$_POST['3_6']?>" /> 
    </div></td> 
    <td><div align="center"> 
      <input name="3_7" type="text" class="input" id="textfield15" size="4" 
maxlength="4" val-ue="<?=$_POST['3_7']?>" /> 
    </div></td> 
  </tr> 
  <tr> 
    <td>Город D</td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td bgcolor="#CC3333"><div align="center">0</div></td> 
    <td><div align="center"> 
      <input name="4_5" type="text" class="input" id="textfield16" size="4" 
maxlength="4" val-ue="<?=$_POST['4_5']?>" /> 
    </div></td> 
    <td><div align="center"> 
      <input name="4_6" type="text" class="input" id="textfield17" size="4" 
maxlength="4" val-ue="<?=$_POST['4_6']?>" /> 
Лист 
ЧДТУ. 222089.001 ПЗ 
78 
Змн. Лист № докум. Підпис Дата 
 
    </div></td> 
    <td><div align="center"> 
      <input name="4_7" type="text" class="input" id="textfield18" size="4" 
maxlength="4" val-ue="<?=$_POST['4_7']?>" /> 
    </div></td> 
  </tr> 
  <tr> 
    <td>Город E</td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td bgcolor="#CC3333"><div align="center">0</div></td> 
    <td><div align="center"> 
      <input name="5_6" type="text" class="input" id="textfield19" size="4" 
maxlength="4" val-ue="<?=$_POST['5_6']?>" /> 
    </div></td> 
    <td><div align="center"> 
      <input name="5_7" type="text" class="input" id="textfield20" size="4" 
maxlength="4" val-ue="<?=$_POST['5_7']?>" /> 
    </div></td> 
  </tr> 
  <tr> 
    <td>Город F</td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td bgcolor="#CC3333"><div align="center">0</div></td> 
    <td><div align="center"> 
      <input name="6_7" type="text" class="input" id="textfield21" size="4" 
maxlength="4" val-ue="<?=$_POST['6_7']?>" /> 
    </div></td> 
  </tr> 
  <tr> 
    <td>Город G</td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
Лист 
ЧДТУ. 222089.001 ПЗ 
79 
Змн. Лист № докум. Підпис Дата 
 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td><div align="center"></div></td> 
    <td bgcolor="#CC3333"><div align="center">0</div></td> 
  </tr> 
</table> 
<br /> 
<br /> 
<table border="0" cellspacing="2" cellpadding="0" style='border: 1px solid #999;' 
align="center"> 
  <tr> 
    <td>Население</td> 
    <td align="right"><input name="population" type="text" class="input" 
id="population" val-ue="<?=$_POST['population']?>" size="5" 
maxlength="5" /></td> 
  </tr> 
  <tr> 
    <td>Поколение</td> 
    <td align="right"><input name="generations" type="text" class="input" 
id="textfield24" val-ue="<?=$_POST['generations']?>" size="5" 
maxlength="5" /></td> 
  </tr> 
  <tr> 
    <td>Предпочтение</td> 
    <td align="right"><input name="elitism" type="text" class="input" 
id="textfield25" val-ue="<?=$_POST['elitism']?>" size="5" 
maxlength="2" /></td> 
  </tr> 
  <tr> 
    <td colspan="2" align="center"><input type="submit" name="button" 
id="button" value="Calculate Shortest Route" /></td> 
  </tr> 
</table> 
</form> 
<?php 
if (!empty($_POST)) { 
    define('CITY_COUNT', 7); 
    $population = $_POST['population'] + 0; 
Лист 
ЧДТУ. 222089.001 ПЗ 
80 
Змн. Лист № докум. Підпис Дата 
 
    if ($population > 999) # Gotta protect my CPU... 
        $population = 999; 
         
    $generations = $_POST['generations'] + 0; 
    $elitism = $_POST['elitism'] + 0; 
    $names = array(); 
    $distances = array(); 
     
    $initialPopulation = array(); 
    $currentPopulation = array(); 
     
    for ($i = 1; $i <= CITY_COUNT; $i++) { 
        $names[$i] = $_POST['name'.$i]; 
    } 
     
    # Take user distance data and put it into a multidimensional array 
    for ($i = 1; $i <= CITY_COUNT; $i++) { 
        for ($j = 1; $j <= CITY_COUNT; $j++) { 
            if (isset($_POST[$i . '_' . $j])) 
                $distances[$i][$j] = $_POST[$i . '_' . $j]; 
            else if (isset($_POST[$j . '_' . $i])) 
                $distances[$i][$j] = $_POST[$j . '_' . $i]; 
            else 
                $distances[$i][$j] = 32767; 
        } 
    } 
     
        for($i = 0; $i < $population; $i++) { 
        $initialPopulation[$i] = pickRandom(); 
    } 
     
    for ($k = 1; $k <= $generations; $k++) { 
        echo "<div><strong>Generation $k</strong></div>\n"; 
        echo "<pre>"; 
        $i = 0; 
        $distanceSum = 0; 
        $biggest = 0; 
        foreach ($initialPopulation AS $entity) { 
            $currentPopulation[$i]['dna'] = $entity; 
Лист 
ЧДТУ. 222089.001 ПЗ 
81 
Змн. Лист № докум. Підпис Дата 
 
            $currentPopulation[$i]['rate'] = rate($entity, $distances); 
            $distanceSum += $currentPopulation[$i]['rate']; 
            if ($currentPopulation[$i]['rate'] > $biggest) 
                $biggest = $currentPopulation[$i]['rate']; 
            $i++; 
        } 
        $biggest += 1; 
        $chancesSum = 0; 
        for ($i = 0; $i < $population; $i++ ) { 
            $currentPopulation[$i]['metric'] = $biggest - $currentPopulation[$i]['rate']; 
            $chancesSum += $currentPopulation[$i]['metric']; 
        } 
        for ($i = 0; $i < $population; $i++ ) { 
            $currentPopulation[$i]['chances'] = $currentPopulation[$i]['metric'] / 
$chancesSum; 
        } 
        util::sort($currentPopulation, 'rate'); 
        $ceilSum = 0; 
        for ($i = 0; $i < $population; $i++ ) { 
            $currentPopulation[$i]['floor'] = $ceilSum; 
            $ceilSum += $currentPopulation[$i]['chances']; 
        } 
        debug($currentPopulation); 
        echo "</pre>\n"; 
        if (converging($initialPopulation)) 
            break; 
        #Breeding time 
        $initialPopulation = array(); 
        for ($j = 0; $j < $elitism; $j++) { 
            $initialPopulation[] = $currentPopulation[$j]['dna']; 
        } 
        for ($j = 0; $j < $population - $elitism; $j++) { 
            $rouletteMale = rand(0, 100) / 100; 
             
            for ($i = $population - 1; $i >= 0; $i--) { 
                if ($currentPopulation[$i]['floor'] < $rouletteMale) { 
                    $dad = $currentPopulation[$i]['dna']; 
                    break; 
                } 
Лист 
ЧДТУ. 222089.001 ПЗ 
82 
Змн. Лист № докум. Підпис Дата 
 
            } 
             
            $rouletteFemale = rand(0, 100) / 100; 
             
            for ($i = $population - 1; $i >= 0; $i--) { 
                if ($currentPopulation[$i]['floor'] < $rouletteFemale) { 
                    $mom = $currentPopulation[$i]['dna']; 
                    break; 
                } 
            } 
             
            $child = mate($mom, $dad); 
            $initialPopulation[] = $child; 
        } 
         
    } 
 
    echo "<div>Оптимальный маршрут: 
<strong>{$currentPopulation[0]['dna']}</strong> расстояние: 
<strong>".rate($currentPopulation[0]['dna'], $distances)."</strong> 
Конечный пункт<strong>$k</strong> generations.</div>\n"; 
} 
?> 
</div> 
</body> 
</html> 
<?php 
function converging($pop) { 
    $items = count(array_unique($pop)); 
    if ($items == 1) 
        return true; 
    else 
        return false; 
} 
function pickRandom() { 
    $choices = array('A', 'B', 'C', 'D', 'E', 'F', 'G'); 
    shuffle($choices); 
    return implode('',$choices); 
} 
Лист 
ЧДТУ. 222089.001 ПЗ 
83 
Змн. Лист № докум. Підпис Дата 
 
function rate($dna, $distances) { 
    $mileage = 0; 
    $letters = str_split($dna); 
    for ($i = 0; $i < CITY_COUNT - 1; $i++) { 
        $mileage += $distances[let2num($letters[$i])][let2num($letters[$i+1])]; 
    } 
    return $mileage; 
} 
function debug($ar) { 
    echo "<table class='debug'>"; 
    echo 
"<tr><th>&nbsp;</th><th>DNA</th><th>Fit</th><th>Roulette</th><
/tr>\n"; 
    foreach($ar as $element => $value) { 
        echo "<tr><td>" . leadingZero($element) . "</td><td>" . $value['dna'] . 
"</td><td>" . $value['rate'] . "</td><td>" . sprintf("%01.2f", 
$value['chances'] * 100) . "%</td></tr>\n"; 
    } 
    echo "</table>\n"; 
} 
function leadingZero($value) { 
    if ($value < 10) 
        $value = '00' . $value; 
    else if ($value < 100) 
        $value = '0' . $value; 
    return $value; 
} 
function mate($mommy, $daddy) { # VERY INEFFICIENT!  
       while (substr_count($baby, 'A') != 1 || substr_count($baby, 'B') != 1 || 
substr_count($baby, 'C') != 1 || substr_count($baby, 'D') != 1 || 
substr_count($baby, 'E') != 1 || substr_count($baby, 'F') != 1 || 
substr_count($baby, 'G') != 1) { 
      for($i = 0; $i < CITY_COUNT; $i++) { 
            $chosen = mt_rand(0,1); 
            if ($chosen) 
                $baby .= substr($mommy, $i, 1); 
            else 
                $baby .= substr($daddy, $i, 1); 
        } 
Лист 
ЧДТУ. 222089.001 ПЗ 
84 
Змн. Лист № докум. Підпис Дата 
 
    } 
    return $baby; 
} 
function let2num($char) { 
    if ($char == 'A') 
        return 1; 
    else if ($char == 'B') 
        return 2; 
    else if ($char == 'C') 
        return 3; 
    else if ($char == 'D') 
        return 4; 
    else if ($char == 'E') 
        return 5; 
    else if ($char == 'F') 
        return 6; 
    else if ($char == 'G') 
        return 7; 
    else 
        die("---"); 
} 
class util { 
    static private $sortfield = null; 
    static private $sortorder = 1; 
    static private function sort_callback(&$a, &$b) { 
        if($a[self::$sortfield] == $b[self::$sortfield]) return 0; 
        return ($a[self::$sortfield] < $b[self::$sortfield])? -self::$sortorder : 
self::$sortorder; 
    } 
    static function sort(&$v, $field, $asc=true) { 
        self::$sortfield = $field; 
        self::$sortorder = $asc? 1 : -1; 
        usort($v, array('util', 'sort_callback')); 
    } 
} 
?> 
 
Лист 
ЧДТУ. 222089.001 ПЗ 
85 
Змн. Лист № докум. Підпис Дата