и. Натискаємо кнопку В«вирішитиВ». p align="justify"> Вихід: У панелі В«РішенняВ» відображається вектор рішення. У таблицю виводиться симплекс-таблиця на останній ітерації виконання алгоритму. У полі підказки відображається інформація про те, що задача вирішена і отримане рішення оптимально. p align="justify"> (Додаток 1, рис. 2)
Тест № 2.
Вхід: Завантажуємо некоректний файл з початковим допустимим базисним рішенням data2.txt. p align="justify"> Вихід: Виводиться повідомлення В«Помилка вхідних данихВ». У полі підказки відображається додаткова інформація про обмеження на вхідні дані. p align="justify"> (Додаток 1, рис.4)
Тест № 3.
Вход1: Завантажуємо коректний файл з початковим допустимим базисним рішенням data5.txt, цільова функція не обмежена на безлічі припустимих рішень .. Вибираємо режим навчання. Виділяємо невірний провідний стовпець. Натискаємо кнопку В«вибрати провідний стовпецьВ». p align="justify"> Виход1: З'являється повідомлення "провідний стовпець вибраний невірноВ». У полі підказки відображається підказка з правилом вибору ведучого шпальти. p align="justify"> Вход2: Виділяємо вірний провідний стовпець. Натискаємо кнопку В«вибрати провідний стовпецьВ». p align="justify"> Виход2: У таблиці виводиться додатковий стовпець відносини. p align="justify"> Вход3: Виділяємо провідну рядок. Натискаємо кнопку В«вибрати провідну рядокВ». p align="justify"> Виход3: З'являється повідомлення "функція не обмежена на множині допустимих значеньВ». Рішення завдання припиняється. У полі підказки виводиться інформація про те, що подальше вирішення завдання неможливо, для вирішення нового завдання необхідно завантажити файл. p align="justify"> (Додаток 1, рис. 5)
Висновок
За підсумками даної роботи був розроблений програмний модуль, який реалізує рішення завдань лінійного програмування симплекс-методом на основі початкового допустимого базисного рішення.
Симплекс-метод є найбільш відомим і широко застосовуваним на практиці для вирішення загальної задачі лінійного програмування. Алгоритм методу простий у розумінні і легкий у реалізації, при програмуванні алгоритму ніяких складнощів принципового характеру не виникло. Однак, незважаючи на те, що симплекс-метод є досить ефективним алгоритмом, що показав гарні результати при вирішенні прикладних задач ЛП, він є алгоритмом з експоненціальною складністю. Причина цього полягає в комбінаторному характері симплекс-методу, послідовно перебирає вершини багатогранника допустимих рішень при пошуку оптимального рішення. Таким чином, даний метод ефективний на невеликому наборі вхідних даних, при збільшенні ж їх складність алгоритму буде зростати стрибкоподібно. p align="justify"> У рамках поставленого завдання були виконані всі вимоги, реалізовані всі функціональні складові. Інтерфейс розробленого програмного продукту інтуїтивно зрозумілий і легкий у використанні. Модульність програми надає можливості для його подальшого доопрацювання розширення та вбудовування в обчислювальні комплекси. p align="justify"> Список використаної літератури та програмних засобів
1. Ісенбаева Є.М. МЕТОДИЧНІ ВКАЗІВКИ до проведення практичних занять з курсу "Системний аналіз" на тему "Симплекс-метод розв'язання задачі лінійного програмування"/О.М. Ісенбаева. - Іжевськ: ІжГТУ, 1999. - 14с.
2.Електронние ресурс: Симплекс метод: програмна реалізація симплекс-методу на мові Java - <# "justify"> Додаток 1
Інтерфейс програми
В
Рис. 2. Автоматичний режим роботи програми
В
Рис. 3. Режим навчання
лінійний програмування симплекс метод
В
Рис. 4. Обробка події В«Помилка вхідних данихВ»
В
Рис. 5. Обробка події В«Цільова функція не обмежена на множині допустимих рішеньВ». p align="justify"> Додаток 2
Лістинг класу SimplexSolve
simplex;
javax.swing.JOptionPane; javax.swing.JTable;
class SimplexSolve {
boolean solved = false; boolean lim = false; int tempCInd = 0; int minRInd = 0; int minCInd = 1; float [] solution;
// вирішення завдання в автоматичному режимі
static float [] [] Solve (float [] [] matrix) {
M1: {
solved = true;
// перевіряємо рішення на оптимальність
for (int i = 0; i <= ReadFile.colCount; i + +) {
if (matrix [i] [0] <0)
solved = false;
}
//по...