Автор работы: Пользователь скрыл имя, 01 Декабря 2013 в 22:39, курсовая работа
Лінійне програмування є одним з важливих розділів дослідження операцій і зводиться до оптимізації лінійної цільової функції на множині, яка описується лінійними рівняннями і нерівностями. Лінійне програмування є окремим випадком математичного програмування. Одночасно воно – основа декількох методів вирішення задач цілочисельного і нелінійного програмування.
Серед спеціальних задач на практиці найчастіше зустрічається так звана задача комівояжера і різні її модифікації та узагальнення.
ВСТУП 5
1 ОГЛЯД ТА ВАРІАНТНИЙ АНАЛІЗ СУЧАСНИХ МЕТОДІВ МАТЕМАТИЧНОГО ПРОГРАМУВАННЯ ДЛЯ ДОСЛІДЖЕННЯ ОПЕРАЦІЙ 7
1.1 Класифікація задач дослідження операцій (ДО) 7
1.2 Методи розв’язання задачі комівояжера 9
1.3 Вибір методу розв’язання транспортної задачі 13
1.4 Аналіз об’єкту дослідження 13
1.5 Вибір середовища програмування 14
2 РОЗРОБКА АЛГОРИТМІЧНОГО ЗАБЕЗПЕЧЕННЯ 15
3 ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ НА МОВІ UML 18
4 РОЗРОБКА ТЕСТІВ 24
5 РОЗРОБКА ДОКУМЕНТІВ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ 28
5.1 Інструкція програмісту 28
5.2 Інструкція користувачеві 28
ВИСНОВКИ 29
- int[][] A;
- TextBox[][] tbA;
- int _n;
- int _oldN;
- bool _alreadyExists;
+ CreatMatrix()
Клас розв'язку
- int[][] A;
- int[] column;
- int N;
- List<int> AnswerList;
+GreedyAlgorithm(int[][] matrix)
+List<int> Answer()
Рисунок 3.4 – UML-діаграма класів
UML-діаграма активності зображена на рисунку 3.5.
Введення умови
Побудова моделі
Розв`язок
Перевірка плану на оптимальність
[доповнення умови]
[розв`язок]
Перевірка умови
Модифікація умови
Рисунок 3.5 – UML-діаграма активності
Розв`язок задачі
Інтерфейс
Введення умови
Передача умови
Перевірка умови
Передача умови
Знаходження найменшого елемента
Побудова моделі
Передача даних
Підрахунок потенціалів
Передача даних
Перехід на наступну стрічку
Передача даних
Виведення
Перевірка кількості міст
Передача даних
Передача даних
UML-діаграма станів зображена на рисунку 3.6.
Рисунок 3.6 – UML-діаграма станів
UML-діаграма послідовностей зображена на рисунку 3.7.
Користувач
Інтерфейс
Розв`язок
Збереження
авторизація
запит
інформації
введення
інформації
передача
інформації
даних
передача
інтерфейс
виведення
Перевірка
передача даних
виведенния
умови
Рисунок 3.7 – UML-діаграма послідовностей
UML-діаграма розгортання зображена на рисунку 3.8.
Введення інформації
<<Інтерфейс>>
Виведення інформації
<<Розв`язок>>
Текстовий файл
Рисунок 3.8 – UML-діаграма розгортання
Всі діаграми виконані згідно з технічним завданням та дотриманням ГОСТів.
Для перевірки правильності роботи програми розв’яжемо дану програму вручну і порівняємо результати.
Занесемо дані задачі в матрицю відстаней (таблиця 4.1):
Таблиця 4.1- Матриця відстаней між містами
№ |
Міста |
Вінниця |
Київ |
Тернопіль |
Рівне |
Черкаси |
1 |
Вінниця |
- |
250 |
235 |
298 |
336 |
2 |
Київ |
250 |
- |
433 |
330 |
183 |
3 |
Тернопіль |
235 |
433 |
- |
151 |
571 |
4 |
Рівне |
298 |
330 |
151 |
- |
500 |
5 |
Черкаси |
336 |
183 |
571 |
500 |
- |
За початкове місто візьмемо місто 1 (Вінниця), а шлях спочатку рівен 0.
Знайдемо в стрічці яка відповідає місту 1 найменше число:
235 знаходиться на третій позиції в стрічці а отже найближче до Вінниці з наведених міст – Тернопіль. Тому місто 3 наступне в нашому маршруті.
Аналогічно знаходимо інші міста в маршруті (таблиця 4.2).
Таблиця 4.2 – Таблиця з відстанями маршруту.
№ |
Міста |
Вінниця |
Київ |
Тернопіль |
Рівне |
Черкаси |
1 |
Вінниця |
- |
250 |
235 |
298 |
336 |
2 |
Київ |
250 |
- |
433 |
330 |
183 |
3 |
Тернопіль |
235 |
433 |
- |
151 |
571 |
4 |
Рівне |
298 |
330 |
151 |
- |
500 |
5 |
Черкаси |
336 |
183 |
571 |
500 |
- |
З таблиці 4.2 можна зробити висновок що маршрут комівояжера буде пролягати наступним чином:
Вінниця –> Тернопіль –> Рівне –> Київ –> Черкаси –> Вінниця
Або якщо користуватися номерами міст:
1 –> 3–> 4 –> 2 –> 5 –> 1
Додавши всі шляхи між містами отримаємо оптимальний шлях 1235 км.
Розв'яжемо тепер цю задачу за допомогою програми.
Результати на рисунку 4.1.
Рисунок 4.1 – Результат роботи програми
Як видно з рисунків рішення задачі на ЕОМ повність співпадає з розв’язком задачі вручну. Це означає, що дана задача була розв’язана вірно та кінцевий шлях є оптимальним для даної умови. Тобто відстань яку потрібно проїхати комівояжеру при подорожі між даними містами становить 1235 кілометрів.
Для перевірки правильності роботи програми проведемо ще один тест
Таблиця 4.3 – Умова задачі
№ |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
1 |
- |
1 |
3 |
3 |
3 |
3 |
3 |
3 |
2 |
1 |
- |
3 |
3 |
3 |
3 |
3 |
1 |
3 |
3 |
3 |
- |
1 |
3 |
3 |
3 |
1 |
4 |
3 |
3 |
1 |
- |
3 |
1 |
3 |
3 |
5 |
3 |
3 |
3 |
3 |
- |
3 |
3 |
3 |
6 |
3 |
3 |
3 |
1 |
3 |
- |
1 |
3 |
7 |
3 |
3 |
3 |
3 |
3 |
1 |
- |
3 |
8 |
3 |
1 |
1 |
3 |
3 |
3 |
3 |
- |
Таблиця 4.4 – Розв’язок задачі
№ |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
1 |
- |
1 |
3 |
3 |
3 |
3 |
3 |
3 |
2 |
1 |
- |
3 |
3 |
3 |
3 |
3 |
1 |
3 |
3 |
3 |
- |
1 |
3 |
3 |
3 |
1 |
4 |
3 |
3 |
1 |
- |
3 |
1 |
3 |
3 |
5 |
3 |
3 |
3 |
3 |
- |
3 |
3 |
3 |
6 |
3 |
3 |
3 |
1 |
3 |
- |
1 |
3 |
7 |
3 |
3 |
3 |
3 |
3 |
1 |
- |
3 |
8 |
3 |
1 |
1 |
3 |
3 |
3 |
3 |
- |
Оптимальний шлях пролягатиме через:
1 –> 2 –> 8 –> 3 –> 4 –> 6 –> 7 –> 5 –> 1
S = 1 + 1 + 1 + 1 + 1 + 1 + 3 + 3 = 12
Програма після введення даних (таблиця 4.3) вивела наступні результати (рисунок 4.2)
Рисунок 4.2 – Програмні результати розв’язку задачі
Розв’язки задачі однакові.
Отже після проведених тестів можна сказати, що програма функціонує правильно, і дає правильний за алгоритмом розв’язок задачі комівояжера.
Розроблений комплекс програм призначений для розв'язання задачі комівояжера. Завданням програми є обчислення мінімального шляху між містами. Для експлуатації даної програми необхідно мати у програмному забезпеченні комп’ютера .NET Framework 4.0 який можна легко завантажити з офіційного сайту Microsoft.
Оскільки
дана програма не потребує ніяких особливих
здібностей та навичок, то вона може легко
використовуватися всіма
Для обрахування задачі комівояжера, запускаємо файл CourseWork.exe і поле зверху вікна ввести кількість міст, а потім у таблицю, що з'явиться ввести відстані між містами та натиснути кнопку щоб отримати рішення.
В роботі було наведено аналіз сучасних методів математичного програмування та дослідження операцій. Були розглянуті основні методи розв'язання задачі комівояжера та розроблена програма що розв'язує задачу за методом найближчого сусіда.
Для програми були розроблені UML- діаграми та блок-схема алгоритму, а також інструкція користувачу та програмісту.
В четвертому розділі проводиться тестування програмного продукту. Тестування пройдено. Результати роботи програми співпадають з результатами ручного розрахунку, приведеними у розділі 4.
Програма має простий інтерфейс тож користувачеві зручно його переглядати, а результати він отримує одразу.
Рішення задачі комівояжера у даній задачі було представлене на прикладі знаходження мінімального шляху при пересуванні між чотирма містами. Також задача комівояжера може бути використана при оптимізації прокладання комунікаційних магістралей, мінімізації часу передавання даних через мережу, та інших.
Информация о работе Математичне програмування та дослідження операцій