Автор: Пользователь скрыл имя, 01 Ноября 2012 в 01:45, курсовая работа
У теперішній час математичне програмування належить до числа найбільш інтенсивно використовуваних дисциплін прикладної математики. Так звані задачі математичного програмування (які полягають у знаходженні в заданій області точок найбільшого чи найменшого значення деякої функції, залежної від великого числа змінних) виникають у найбільш різноманітних сферах людської діяльності. Вони є найбільш актуальні в економічних дослідженнях, у плануванні та організації виробництва.
Вступ………………………………………………………………………...……9
1. Теоретичні основи розробки програмного забезпечення автоматизованого дослідження операцій………………………………11
1.1 Завдання на розробку програмного забезпечення………………….…….11
1.2 Теоретичні основи методу…………..……………………..………………12
1.2.1 Загальні положення…………………….………………………………...12
1.2.2 Ознака оптимальності………………………………………………....…13
1.2.3 Метод послідовного поліпшення плану (І алгоритм)……..……….…..16
1.2.4 Загальні положення М-методу…………………………………………..19
1.2.5 Перший алгоритм М-методу………………………………………….....21
2. Розробка алгоритмічного та програмного забезпечення автоматизованого дослідження операцій…………………………….….……24
2.1 Алгоритмічне забезпечення автоматизованого дослідження операцій…………………………………………………………………...…….24
2.1.1Структура класів математичної моделі……………………………….…24
2.2 Програмне забезпечення автоматизованого дослідження операцій………………………………………………………..………………..27
2.2.1 Розробка головного меню…………………………………….……....…28
2.2.2 Опис екранних форм програмного продукту…….…………....…….…29
2.2.3 Опис використаних програмних засобів………………………..……....37
2.2.4 Відлагодження програмного забезпечення. Класифікація помилок…………………………………………………………………...….…40
2.2.5 Способи знаходження та усунення помилок…………………….…..…41
3 Використання розробленого програмного забезпечення для розв’язання задачі про оптимальну закупівлю обчислювальних засобів ІОЦ…………………………………………….…………………..….…..….….42
3.1 Постановка задачі дослідження операцій………..………………....…..42
3.1.1 Якісна постановка задачі дослідження…………………….………….43
3.1.2 Кількісна постановка задачі дослідження………………………….…44
3.1.3 Економічна інтерпретація задачі……………………………………...44
3.2 Формування вхідної інформації…………………………………………47
3.3 Описання процесу автоматизованого дослідження операції з використанням комп’ютеру…………………………………………….……48
3.4 Результати розрахунків з використанням ПО………………………...…49 3.4.1 Інтерпретація результатів розрахунків……………………………..….49
3.5 Дослідження області стійкості…………………………………..……….51
Висновок…………………………………………………………………….…53
Список джерел інформації…………………………………………...…….…55
Додаток А Алгоритм рішення ЗЛП М-методом(1 алгоритм)…………...…56
Додаток Б Діаграма класів……………………………………………….…..57
Додаток В Діаграма варіантів використання…………………………….…58
Додаток Г Структурно-функціональна схема операції…………………….59
ж) визначаються позиції базису на яких досягаються та знаходиться номер направляючого рядка r;
з) побудувати новий базис FS , вектори s,s шляхом заміни ASr на Ak Sk на k ,Sr на k ;
и) обчислити елементи
таблиці, які відповідають
де i=, j= та перейти до виконання етапу етапу «г»;
к) здійснити аналіз
рішення М-задачі у
2. РОЗРОБКА АЛГОРИТМІЧНОГО ТА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ АВТОМАТИЗОВАНОГО ДОСЛІДЖЕННЯ ОПЕРАЦІЙ
2.1 Алгоритмічне забезпечення автоматизованого дослідження операцій
Для розробки програмного забезпечення спершу необхідно розробити алгоритмічне забезпечення. Для цього був узятий за основу перший алгоритм М-методу. Алгоритм представлений у вигляді логічної схеми (Додаток А)
Після цього за допомогою уніфікованої мови моделювання була розроблена діаграма класів (Додаток Б) математичної моделі з подальшим розгляданням основних функцій у вигляді діаграми варіантів використання (Додаток В).
2.1.1 Структура класів математичної моделі
class Terminating_algorithm (абстрактний клас, який описує множину кінцевих алгоритмів рішення ЗЛП)
Атрибут |
Математична интерпретація |
phase : int |
Фаза решення |
last_phase : int |
Остання фаза |
t_main : Task |
Умова основної ЗЛП |
L_opt : double |
Оптимальне значення цільової функції |
X_opt : vector<double> |
Оптимальний план |
Fs_opt : vector<int> |
Оптимальний базис |
Таблица 2.1 – Атрибути класу Terminating_algorithm
Атрибут |
Математична інтерпретація |
T_secondary : Task |
Умова допоміжної ЗЛП |
intersection : vector <int> |
Вектор пересічення початкового та оптимального базисів допоміжної ЗЛП |
Таблица 2.2 – Атрибуту класу Artificial_basis
Атрибут |
Математична інтерпретація | |
A_initial : vector<vector<double>> |
Початкова матриця умов | |
B_initial : vector <double> |
Початковий вектор обмежень | |
C_initial : vector <double> |
Початковий вектор коефіцієнтів цільової функції | |
sign : int |
Вектор знаків нерівності | |
Extremum : int |
Екстремум(max или min) | |
A : vector<vector<double>> |
Оптимальний базис | |
b : vector <double> |
Матриця умов | |
c : vector <double> |
Вектор обмежень | |
Fs : vector <int> |
Вектор коефіціентів цільової функції |
Таблица 2.3 – Атрибути класу Task
Атрибут |
Математична інтерпретація | |
m : Matrix |
Об’єкт для роботы з матрицями | |
RS : RoundingSet |
Об’єкт для роботы з округленням даних | |
X : vector<vector<double>> |
Матриця коефіцієнтів розкладання векторів умов за базисом Fs | |
C : vector <double> |
Вектор коефіцієнтів цільової функції | |
delta : vector <double> |
Вектор напрямків руху | |
Fs : vector <int> |
Вектор поточного базису | |
K : int |
Номер змінюємого вектора базису | |
R : int |
Номер вектора що змінює | |
epsilon : double |
Допустима похибка |
Таблица 2.4 – Атрибути класу Stable
class RoundingSet (клас, що призначений для округлення ланих)
class Matrix (клас, що призначено для роботи з матрицями)
2.2 Програмне забезпечення автоматизованого дослідження операцій
Наступним етапом після пояснення стратегії проведення оперерації та розробки алгоритмічного забезпечення стала розробка програмного забезпечення.
Програмне забезпечення розроблялося на алгоритмічній мові С++ у середовищі Borland C++Builder 6.0, що дозволило достатньо просто розробити якісний інтерактивний додаток зі зручним інтерфейсом користувача.
2.2.1Розробка головного меню
Перед тим, як перейти до програмування
необхідно спочатку з’ясувати, що саме
повинен виконувати розробляємий програмний
продукт. Операції, які дають можливість
виконувати розробляємий інтерактивний
продукт, завжди реалізуються у інтерфейс
користувача, а саме у головному
меню програми. Таким чином підчас
розробки головного меню програмного
продукту ми з’ясовуємо які функції
цей продукт повинен
У результаті головне меню складається з наступних пунктів:
1. Проект
1.1. Создать
1.2. Открыть
1.3. Сохранить
1.4. Сохранить как…
1.5. Выход
2. ЗЛП
2.1. Ввод
2.2. Редактирование
3. Решение
3.1. Решение
3.2. Пошаговое решение
4. Достоверность
4.1. Проверить
4.2. Подробности
5. Устойчивость
5.1. Исследовать
6. Отчет
6.1. Просмотр
6.2. Печать
7. Справка
7.1. Содержание
2.2.2 Опис екранних форм програмного продукту
Головна форма являє собою центр дослідження операцій. На ній розташовані області для умов ЗЛП (вхідні дані) та відповіді (вихідні дані). Також на ній розташоване головне меню за допомогою якого можна здійснити різноманітні дії, що необхідні для розв’язання ЗЛП
Рисунок 2.5 - Головна форма
За допомогою форми «Ввод данных ЗЛП» вводяться вхідні дані нової ЗЛП, а саме:
Рисунок 2.6 – Форма «Ввод данных ЗЛП»
За допомогою наступної форми можна редагувати умови поточної ЗЛП. Для цього необхідно вибрати вкладку, яка відповідає даним, що потребують корегування, вибрати номер елемента та ввести корегуючи значення.
Рисунок 2.7 - Форма для редагування даних
Наступна форма «Пошаговое решение» має три вкладки
Для допоміжної та основної ЗЛП ми можемо продивитися:
Рисунок 2.8 - Форма «Пошаговое решение» вкладка «Условия ЗЛП»
Рисунок 2.9 - Форма «Пошаговое решение» вкладка «Ітерації»
Рисунок 2.10 - Форма «Пошаговое решение» вкладка «Динамика изменения L»
За допомогою форми «Проверка допустимости» ми маємо змогу перевірити допустимість, опірність та оптимальність заданої ЗЛП.
Рисунок 2.11 – Перевірка допустимості
Рисунок 2.12 – Перевірка опірності
Рисунок 2.13 – Перевірка оптимальності
За допомогою цієї форми можна дослідити отримані результати на стійкість при зміненні двох компонент вектора обмежень. Для заданих номерів обмежень та границь змінення можна побудувати область стійкості, яка буде відображатися на формі графіку.
Рисунок 2.14 – Перевірка на стійкість
На цій формі представлена область стійкості, заштрихованим червоним кольором.
За допомогою форми «Настройка отчета» можна задавати, які дані відображати у генерованому звіті. Після збереження звіту він з’являється на екрані.
Рисунок 2.16 - Форма налаштування звіту
Рисунок 2.17 – Сгенерований звіт
Система об'єктно-орієнтованого програмування C++ Builder виробництва корпорації Borland призначена для операційних систем Windows 9x/Me і NT/2000/XP. Інтегроване середовище C++ Builder забезпечує швидкість візуальної розробки, продуктивність повторно використовуваних компонентів у комбінації з міццю язикових засобів C++, удосконаленими інструментами й різномасштабними засобами доступу до баз даних.
C++ Builder може бути використаний
скрізь, де потрібно доповнити
існуючі додатки розширеним
Замість окремого інструментарію, що оперує візуальними елементами керування, в C++ Builder інтегрована так звана Палітра компонентів, розділена картотечними вкладками на кілька функціональних груп. Функціональні можливості компонентів, що поставляються, можна досить просто модифікувати, а також розробляти компоненти, що володіють зовсім новою оригінальною поведінкою.
Система містить Бібліотеку з більше ніж 100 повторно використовуваних візуальних компонентів, які перетягаються мишею на форму й відразу стають елементами керування прототипу вашої програми. Крім відомих елементів керування Windows (кнопки, лінійки прокручування, поля редагування, прості й комбіновані списки і т.д.) Бібліотека містить нові компоненти підтримки діалогів, обслуговування баз даних і багато інші. А якщо стандартної бібліотеки вам усе-таки не вистачить, можна завжди створити власний компонент.
C++Builder підтримує основні принципи об'єктно-орієнтованого програмування - інкапсуляцію, поліморфізм і множинне спадкування, а також нововведені специфікації й ключові слова в стандарті мови C++.
При створенні інтерфейсу використовувалися наступні компоненти Візуальної Бібліотеки компонентів (VCL) :