ті користувача на кожному кроці. Користувач здійснює вибір ведучого шпальти, потім провідною рядки, після чого симплекс таблиця перебудовується і ітерація повторюється. Побудова симплекс таблиць ведеться до тих пір, поки рішення не стане оптимальним або поки не буде отримано повідомлення про помилку. p align="justify"> У програмі передбачена обробка таких виняткових ситуацій:
В· завантажений некоректний вхідний файл (Додаток 1, рис.4);
В· цільова функція не обмежена на множині допустимих рішень (Додаток 1, мал. 5).
Також реалізована система підказок, що надає користувачеві більш легку роботу з програмним засобом.
В якості середовища розробки була обрана NetBeans IDE, що є середовищем розробки додатків мовою Java.
Структура створеного програмного модуля являє собою сукупність наступних класів:
В· SimplexApp - головний клас додатка, який здійснює запуск програми, створення і відображення головного вікна програми.
В· SimplexView - клас головного вікна програми, ініціалізує всі компоненти інтерфейсу, здійснює їх настройку, а також обробку подій, викликаних користувачем.
В· SimplexAboutBox - клас, не започатковано вікно В«Про програмуВ».
В· SimplexSolve - клас, який реалізує виконання симплекс-методу.
В· ReadFile - клас для обробки вхідного файлу.
В· TableView - реалізує висновок симплекс-таблиці.
В· Help - реалізує висновок підказок про хід виконання рішення і про роботу програми.
Клас SimplexSolve містить наступні методи:
static void initSolution (int varCount) - створює вектор рішення необхідної розмірності.
static float [] [] Solve (float [] [] matrix) - здійснює рішення задачі в автоматичному режимі. Отримуючи на вхід початкову симплекс-таблицю, повертає перетворену симплекс-таблицю з отриманим рішенням. p align="justify"> static boolean userChooseCol (float [] [] matrix, JTable tableName) - виконує вибір ведучого шпальти і порівнює отриманий результат з вибором користувача. Повертає істину, якщо вибір був зроблений вірно, інакше брехня. У разі якщо результати не співпали, виводить повідомлення про помилку. p align="justify"> static boolean userChooseRow (float [] [] matrix, JTable tableName) - проводить перевірку обмеженості цільової функції на безлічі припустимих рішень, виконує вибір ведучої рядки і порівнює отриманий результат з вибором користувача. Повертає істину, якщо вибір був здійснений вірно, інакше брехня. У разі якщо результати не співпали, повідомляє користувачеві про помилку. p align="justify"> static void userBuildNewTable (float [] [] matrix, JTable tableName) - перебудовує симплексну таблицю і оновлює вектор рішення.
static boolean checkSolved (float matrix [] []) - перевіряє поточне рішення на оптимальність. Повертає істину, якщо рішення оптимально, інакше брехня. p align="justify"> Клас ReadFile містить наступні методи:
static float [] [] read (String filename) throws IOException - здійснює читання вхідного файлу. За відсутності помилок, повертає початкову симплексну таблицю, інакше видає повідомлення про помилку вхідних даних. p align="justify"> static String [] doVarCol (), static String [] doVarRow () - створюють допоміжні рядок і стовпець позначення змінних для відображення симплекс-табліци.int getVarCount () - повертає кількість вільних переменних.int getBvarCount ( ) - повертає кількість базисних переменних.int getCondCount () - повертає кількість обмежень.
Клас TableView містить наступні методи:
static void clearTable (JTable tableName) - очищає табліцу.void setNames (JTable tableName) - заповнює шапку табліци.void fillTable (JTable tableName, float [] [] matrix) - заповнює симплекс табліцу.void fillProportion (JTable tableName, float [] proportion, int tempCInd) - заповнює допоміжний стовпець відносини (в навчальному режимі).
Клас Help містить метод
static String showHelp (int event) - здійснює висновок підказки в залежності від події, що сталася.
Лістинг класу SimplexSolve, що містить алгоритм симплекс-методу, приведе в Додатку 2.
. Тестування
Тест № 1. p align="justify"> Вхід: Завантажуємо коректний файл з початковим допустимим базисним рішенням data1.txt. Вибираємо автоматичний режим робот...