Контрольная работа: Программная реализация симплекс-метода
В программе предусмотрена обработка следующих исключительных ситуаций:
·загружен некорректный входной файл (Приложение 1, рис.4);
·целевая функция не ограничена на множестве допустимых решений (Приложение 1, рис.5).
Также реализована система подсказок, предоставляющая пользователю более лёгкую работу с программным средством.
В качестве среды разработки была выбрана NetBeansIDE, являющаяся средой разработки приложений на языке Java.
Структура созданного программного модуля представляет собой совокупность следующих классов:
·SimplexApp – главный класс приложения, осуществляющий запуск приложения, создание и отображение главного окна приложения.
·SimplexView – класс главного окна приложения, инициализирует все компоненты интерфейса, осуществляет их настройку, а также обработку событий, вызванных пользователем.
·SimplexAboutBox– класс, инициализирующий окно «О программе».
·SimplexSolve – класс, реализующий выполнение симплекс-метода.
·ReadFile– класс для обработки входного файла.
·TableView – реализует вывод симплекс-таблицы.
·Help – реализует вывод подсказок о ходе выполнения решения и о работе программы.
Класс SimplexSolve содержит следующие методы:
staticvoidinitSolution(intvarCount) - создаёт вектор решения необходимой размерности.
staticfloat[][] Solve(float[][] matrix) - осуществляет решение задачи в автоматическом режиме. Получая на вход начальную симплекс-таблицу, возвращает преобразованную симплекс-таблицу с полученным решением.
staticbooleanuserChooseCol(float[][] matrix, JTabletableName)– выполняет выбор ведущего столбца и сравнивает полученный результат с выбором пользователя. Возвращает истину, если выбор был произведен верно, иначе ложь. В случае если результаты не совпали, выводит сообщение об ошибке.
staticbooleanuserChooseRow(float[][] matrix, JTabletableName) – проводит проверку ограниченности целевой функции на множестве допустимых решений, выполняет выбор ведущей строки и сравнивает полученный результат с выбором пользователя. Возвращает истину, если выбор был осуществлён верно, иначе ложь. В случае если результаты не совпали, сообщает пользователю об ошибке.
staticvoiduserBuildNewTable(float[][] matrix, JTabletableName)– перестраивает симплексную таблицу и обновляет вектор решения.
staticbooleancheckSolved(floatmatrix[][])– проверяет текущее решение на оптимальность. Возвращает истину, если решение оптимально, иначе ложь.
Класс ReadFile содержит следующие методы:
static float[][] read(String filename) throws IOException– осуществляетчтениевходногофайла. При отсутствии ошибок, возвращает начальную симплексную таблицу, иначе выдает сообщение об ошибке входных данных.
staticString[] doVarCol(), staticString[] doVarRow() – создают вспомогательные строку и столбец обозначения переменных для отображения симплекс-таблицы.
static int getVarCount() – возвращает количество свободных переменных.
static int getBvarCount() – возвращает количество базисных переменных.
static int getCondCount() – возвращает количество ограничений.
Класс TableViewсодержит следующие методы:
static void clearTable(JTable tableName) – очищаеттаблицу.
static void setNames (JTable tableName) – заполняетшапкутаблицы.