Контрольная работа: Программная реализация симплекс-метода
Все элементы в ведущем столбце равны 0, тогда как сам ведущий элемент равен 1.
6.Получаем (k + 1) крайнюю точку . Полагая k = k + 1, перестраиваем симплекс-таблицу и переходим к пункту 2.
7.Конец решения.
3. Проектирование интерфейса
Разработанное приложение имеет простой однооконный интерфейс с набором всех необходимых инструментов для работы с программой.
Вверху окна стандартно располагается строка меню (JMenu), содержащая подменю (JSubMenu) Файл, Режим работы, Справка. В подменю Файл доступны следующие пункты меню (JMenuItem): Открыть файл, Выход. В подменю Режим работы с помощью Группы радиокнопок (JRadioButtonGroup) осуществляется взаимоисключающий выбор одного из двух режимов работы: автоматический, режим обучения. Из подменю Справка доступен вызов окна «О программе» (SimplexAboutBox).
Под строкой меню располагается панель инструментов, дублирующая функции, доступные из строки меню, но предоставляющая более удобное использование и быстрый доступ к ним пользователю. Она содержит кнопку (JButton) «Загрузить файл», а также список (JComboBox) для выбора режима работы.
Далее располагаются панели (JPanel), предоставляющие информацию о решаемой задаче, а именно:
·Панель параметров. Отображает количество свободных и базисных переменных и количество ограничений с помощью JLabel.
·Панель «Целевая функция» отображает вид целевой функции с помощью группы надписей (JLabel) и текстовых полей (JTextField).
·Панель «Решение» отображает вектор решения на текущем шаге выполнения задачи (для автоматического режима – оптимальное решение).
В центральной части окна расположена таблица (JTable), отображающая симплекс-таблицу на текущем шаге, и набор кнопок (JButton) для работы с таблицей:
В автоматическом режиме:
·Кнопка «решить». Осуществляет решение загруженной задачи или выдает сообщение о существующей ошибке (неверный входной файл, функция не ограничена на множестве допустимых решений).
В режиме обучения:
·«выбрать ведущий столбец». Вычисляет ведущий столбец и сравнивает результат с выбором пользователя. При несовпадении результатов выдает сообщение об ошибке «Ведущий столбец выбран неверно». Также вычисляет и заполняет вспомогательный столбец «Отношение», необходимый для выбора ведущей строки.
·«выбрать ведущую строку». Находит ведущую строку и сравнивает результат с выбором пользователя. При несовпадении результатов выдает сообщение об ошибке «Ведущая строка выбрана неверно».
·«перестроить симплексную таблицу». Осуществляет один шаг метода Гаусса для замены базисной переменной.
Внизу окна расположено поле для вывода многострочного текста (JTextArea), в котором отображается вспомогательная информация о текущем состоянии выполнения программы, а также о правилах выбора ведущих столбца и строки.
Рис. 1. Главное окно разработанного приложения.
Скриншоты интерфейса разработанного приложения при разных вариантах работы программы представлены в Приложении 1.
4. Структура программного модуля
В рамках поставленной задачи был разработан программный модуль, осуществляющий решение задачи линейного программирования на основе начального допустимого базисного решения.
Входными данными является текстовый файл, содержащий начальное допустимое базисное решение (на входные данные накладываются следующие ограничения: максимальное количество свободных переменных – 5, базисных – 8).
Выходными данными является полученный вектор решения, а также сообщения о состоянии выполнения программы.
Разработанный программный модуль предоставляет пользователю возможность выбора одного из двух режимов работы:
·автоматического,
·режима обучения.