Симплекс-метод решения задач линейного программирования
Симплекс-метод является аналитическим методом решения задач линейного программирования. Пусть система ограничений задается системой линейных уравнений среди неотрицательных решений этой системы надо найти такие, которые максимизировали (минимизировали) линейную функцию
. Найдем ранг данной системы, пусть ранг равен
. Выразим переменные
через остальные переменные:
где
,
, …,
.
Переменные называются базисными, а остальные переменные называются свободными. Подставляя в целевую функцию
вместо базисных переменных их выражения через свободные переменные получим
. Пологая, что все свободные переменные равны нулю, найдем значения базисных переменных:
,
,….,
. Полученное решение
является допустимым – оно называется базисным. Для полученного базисного решения значение целевой функции
. От полученного базиса можно перейти к другому базису с таким расчетом, чтобы значение
не увеличивалось.
Рассмотрим пример: решить задачу линейного программирования
,
.
Перепишем систему линейных ограничений в виде , введя новые балансовые переменные
. Найдем ранги основной
и расширенной матрицы системы
. Ранги совпадают и равны двум, следовательно система совместна и две базисные переменные (например
) можно выразить через три свободные (
):
. Целевую функцию также выразим через свободные переменные
, тогда при
,
,
найдем значения базисных переменных
,
. Таким образом найдено допустимое решение системы
. При данном допустимом решении целевая функция
.
Выясним, можно ли увеличить значение ; увеличение
приведет к уменьшению целевой функции т.к. перед переменной
стоит знак минус, а увеличение
приведет к увеличению целевой функции. Поэтому увеличим
так, чтобы базисные переменные
не стали отрицательными, оставив
равными нулю. Из уравнения
следует, что
можно увеличить до двух, в результате получим новые значения переменных
,
,
,
,
или
.
Примем за свободные переменные и выразим через них
. Из уравнения
получим
. Подставим это выражение для
в уравнение
, получим
. Значение целевой функции при новом допустимом решении найдем подставив выражение для
в
, получим
, при новом допустимом решении
, т.е. оно увеличилось. Тогда
так как свободные переменные
входят в целевую функцию
с отрицательными знаками, дальнейшее увеличение
невозможно. Значит, решение
является оптимальным и
.
Симплексные таблицы
Пусть система ограничений приведена к единичному базису: , целевая функция приведена к виду
.
Представим эти данные в виде таблицы:
Базисные переменные | Свободные члены | ![]() | … | ![]() | … | ![]() | ![]() | … | ![]() | … | ![]() |
![]() | ![]() | … | … | ![]() | … | ![]() | … | ![]() | |||
… | … | … | … | … | … | … | … | … | … | … | … |
![]() | ![]() | … | … | ![]() | … | ![]() | … | ![]() | |||
… | … | … | … | … | … | … | … | … | … | … | … |
![]() | ![]() | … | … | ![]() | … | ![]() | … | ![]() | |||
![]() | ![]() | … | … | ![]() | … | ![]() | … | ![]() |
Выберем разрешающий столбец из условия:
и хотя бы один из элементов
. Затем выберем разрешающую
-ю строку из условия
для
. Произведем пересчет элементов разрешающей
-й строки по формуле
, где
. Элементы всех остальных строк вычисляем по формуле
, где
.
Если после проделанных действий:
1. найдется хотя бы одно отрицательное значение и в каждом столбце с таким значением окажется хотя бы один положительный элемент, то можно улучшить решение, проделав еще одну итерацию;
2. найдется хотя бы одно отрицательное значение , столбец которого не содержит положительных элементов, тогда целевая функция
не ограничена в области допустимых решений т.е.
;
3. все значения , тогда получено оптимальное решение.