на пункт 7.
Таким чином, провідний елемент. p>. Виконуємо один крок методу Гауса: виводимо змінну з індексом з числа базисних, а змінну з індексом вводимо в базис. Нові елементи провідного рядка знаходяться за формулою:
В
Нові значення елементів інших рядків матриці:
,
Всі елементи в провідному стовпці рівні 0, тоді як сам ведучий елемент дорівнює 1.
. Отримуємо (k + 1) крайню точку. Вважаючи k = k + 1, розбудовуємо симплекс-таблицю і переходимо до пункту 2. p>. Кінець рішення.
. Проектування інтерфейсу
Розроблене додаток має простий одновіконний інтерфейс з набором всіх необхідних інструментів для роботи з програмою.
Вгорі вікна стандартно розташовується рядок меню (JMenu), що містить підміню (JSubMenu) Файл, Режим роботи, Довідка. У підменю Файл доступні наступні пункти меню (JMenuItem): Відкрити файл, Вихід. У підменю Режим роботи за допомогою Групи радіокнопок (JRadioButton Group) здійснюється взаємовиключний вибір одного з двох режимів роботи: автоматичний, режим навчання. З підміню Довідка доступний виклик вікна В«Про програмуВ» (SimplexAboutBox). p align="justify"> Під рядком меню розташовується панель інструментів, дублююча функції, доступні з рядка меню, але надає більш зручне використання і швидкий доступ до них користувачеві. Вона містить кнопку (JButton) В«Завантажити файлВ», а також список (JComboBox) для вибору режиму роботи. p align="justify"> Далі розташовуються панелі (JPanel), що мають інформацію про розв'язуваної задачі, а саме:
В· Панель параметрів. Відображає кількість вільних і базисних змінних і кількість обмежень за допомогою JLabel.
В· Панель В«Цільова функціяВ» відображає вид цільової функції за допомогою групи написів (JLabel) і текстових полів (JTextField).
В· Панель «гшенняВ» відображає вектор рішення на поточному кроці виконання завдання (для автоматичного режиму - оптимальне рішення).
У центральній частині вікна розташована таблиця (JTable), що відображає симплекс-таблицю на поточному кроці, і набір кнопок (JButton) для роботи з таблицею:
В автоматичному режимі:
В· Кнопка В«вирішитиВ». Здійснює рішення завантаженої завдання або видає повідомлення про існуючу помилку (невірний вхідний файл, функція не обмежена на безлічі припустимих рішень).
У режимі навчання:
В· В«вибрати провідний стовпецьВ». Обчислює провідний стовпець і порівнює результат з вибором користувача. При розбіжності результатів видає повідомлення про помилку "Ведучий стовпець вибраний невірноВ». Також обчислює і заповнює допоміжний стовпець В«СтавленняВ», необхідний для вибору провідного рядка.
В· В«вибрати провідну рядокВ». Знаходить провідну рядок і порівнює результат з вибором користувача. При розбіжності результатів видає повідомлення про помилку "Провідна рядок обрана невірноВ».
В· В«перебудувати симплексну таблицюВ». Здійснює один крок методу Гаусса для заміни базисної змінної.
Внизу вікна розташовано поле для виведення многострочного тексту (JTextArea), в якому відображається допоміжна інформація про поточний стан виконання програми, а також про правила вибору провідних стовпчика і рядка.
В
Рис. 1. Головне вікно розробленого додатка. p align="justify"> Скріншоти інтерфейсу розробленого додатка при різних варіантах роботи програми представлені у Додатку 1.
. Структура програмного модуля
У рамках поставленого завдання був розроблений програмний модуль, що здійснює рішення задачі лінійного програмування на основі початкового допустимого базисного рішення.
Вхідними даними є текстовий файл, що містить початкове допустиме базисне рішення (на вхідні дані накладаються наступні обмеження: максимальна кількість вільних змінних - 5, базисних - 8).
Вихідними даними є отриманий вектор рішення, а також повідомлення про стан виконання програми.
Розроблений програмний модуль надає користувачеві можливість вибору одного з двох режимів роботи:
В· автоматичного,
В· режиму навчання.
В автоматичному режимі (Додаток 1, рис.2) рішення задачі здійснюється в одну дію без участі користувача. У режимі навчання (Додаток 1, рис.3) рішення виконується покроково із залученням учас...