Программа предназначена для решения задачи линейного программирования (ЗЛП) симплекс-методом.
На вход подаются целевая функция и система ограничений в символьной форме.
Результатом работы является оптимальное решение (значения переменных и целевая функция).
-
Считывание входных данных
- Из файла
input.txtсчитываются:- тип задачи (
maxилиmin); - целевая функция;
- система ограничений.
- тип задачи (
- Из файла
-
Парсинг уравнений
- Каждое ограничение преобразуется в структуру вида
(массив коэффициентов, знак, правая часть). - Все переменные приводятся к единому списку.
- Каждое ограничение преобразуется в структуру вида
-
Приведение к канонической форме
- Для неравенств вводятся дополнительные (slack) и искусственные (artificial) переменные.
- Формируется матрица коэффициентов
A, вектор правых частейb, и вектор коэффициентов целевой функцииc.
-
Построение симплекс-таблицы
- Формируется исходная таблица с базисными и небазисными переменными.
- Выполняются симплекс-итерации до нахождения допустимого базиса.
-
Фаза I — поиск допустимого базисного решения
- Решается вспомогательная задача, минимизирующая сумму искусственных переменных.
- При успешном завершении формируется допустимый базис для исходной задачи.
-
Фаза II — поиск оптимального решения
- Подставляется исходная целевая функция.
- Выполняются симплекс-итерации до достижения оптимума.
- Определяются значения всех переменных и целевая функция
F*.
-
Вывод результатов
- Выводятся:
- значения переменных;
- оптимальное значение целевой функции;
- симплекс-таблицы по итерациям (для анализа работы алгоритма).
- Выводятся:
Для запуска программы необходимо загрузить файлы input.txt и main1.py в одну папку, а затем запустить main1.py.
Для наглядности и проверки, я добавил в программу вывод всех этапов решения.
В ходе работы он не нашёл правильное решение
При выполнении лабораторной работы было детально изучено функционирование симплекс-метода. Самостоятельная реализация всех его шагов, включая обработку ограничений и проверку граничных случаев, способствовала более глубокому пониманию алгоритма и развитию навыков работы с массивами и индексами.






