
- •4.2. Симплекс-метод решения задач линейного программирования
- •1. Вычисление элементов новой ведущей строки.
- •Общая формулировка алгоритма решения задач линейного программирования симплекс- методом [7]
- •Еще один алгоритм решения задач лп методом симплекс-таблиц (предложенный е. С. Вентцель) [1]
- •Вырожденность
- •Альтернативные оптимальные решения
- •Неограниченные решения
- •Отсутствие допустимых решений
- •Заключение
- •Упражнения
Общая формулировка алгоритма решения задач линейного программирования симплекс- методом [7]
Привести задачу ЛП к стандартной форме, причем целевую функцию желательно минимизировать.
Определить m базисных и n – m небазисных переменных. Выразить m базисных переменных через m небазисных переменных в каждом уравнении (ограничении) и в целевой функции.
Если в уравнениях (ограничениях) не все свободные члены bi не отрицательны, то найти начальное допустимое базисное решение путем замены базисных переменных на не базисные переменные. Менять местами базисные и небазисные переменные следует до тех пор, пока свободные члены во всех уравнениях не станут не отрицательными.
Выразить целевую функцию через небазисные переменные.
Если все коэффициенты перед этими переменными положительны, то оптимальное решение найдено.
Иначе нужно заменить небазисную переменную с самым большим по модулю отрицательным коэффициентом в целевой функции на одну из базисных переменных. Именно на такую переменную, которая выражена через данную небазисную переменную со знаком минус.
Если таких базисных переменных нет, то целевая функция не ограничена снизу и оптимального решения не существует.
Если таких базисных переменных несколько, то заменять небазисную переменную нужно на ту базисную переменную, которая раньше остальных базисных переменных обратится в 0 при увеличении данной небазисной переменной. Отношение свободного члена уравнения к коэффициенту перед заменяемой небазисной переменной должно быть по модулю минимально.
Выразить целевую функцию и новые базисные переменные в уравнениях через новые небазисные переменные.
Если минимум целевой функции еще не найден, то повторить пункты 5 7.
Алгоритм решения задач ЛП методом симплекс-таблиц [8]
Систему уравнений-ограничений привести к единичному базису (начальному допустимому базисному решению), в котором
каждое уравнение содержит по одной такой (базисной) переменной с коэффициентом "+1", которая отсутствует во всех остальных уравнениях,
и при этом константы в правой части каждого уравнения не отрицательны.
Преобразовать целевую функцию W() в функцию только от небазисных переменных и приравнять ее нулю путем вычитания из W() всех ci i ( i не входят в базис, т.е. не являются базисными): W() – cm+1 m+1 – … – cn n = 0.
Построить симплекс - таблицу:
Базисные переменные |
1 |
… |
i |
… |
m |
m+1 |
… |
j |
… |
n |
Свободные члены |
Симплекс-разность |
0 |
… |
0 |
… |
0 |
– cm+1 |
… |
|
… |
– cn |
0 |
1 |
1 |
… |
0 |
… |
0 |
a1 m+1 |
… |
a1 j |
… |
a1n |
b1 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
i |
0 |
… |
1 |
… |
0 |
ai m+1 |
… |
aij |
… |
ain |
bi |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
m |
0 |
… |
0 |
… |
1 |
am m+1 |
… |
amj |
… |
amn |
bm |
Выбрать ведущий (направляющий) столбец, в котором симплекс-разность является самым большим по модулю отрицательным числом (если максимизируем целевую функцию) или положительным числом (если минимизируем целевую функцию).
Выбрать ведущую (разрешающую) строку, которая
имеет в ведущем столбце положительный элемент,
причем отношение свободного члена в этой строке к этому элементу должно быть минимальным.
Пересчитать элементы ведущей (разрешающей) строки, заменив базисную переменную i в крайней левой ячейке строки на небазисную переменную j в самой верхней ячейке ведущего (направляющего) столбца по следующему правилу: каждый элемент ведущей строки разделить на элемент, стоящий на пересечении ведущей (разрешающей) строки и ведущего (направляющего) столбца. В результате элемент на пересечении ведущей строки и ведущего столбца должен быть равен 1.
Вычислить элементы каждой из остальных строк по следующему правилу: из каждого элемента строки l вычесть соответствующий пересчитанный элемент ведущей строки, умноженный на элемент строки l, находящийся в направляющем столбце, т. е. в результате в каждой пересчитываемой строке должен получиться 0 на пересечении с направляющим столбцом.
Если все симплекс - разности станут не отрицательными при поиске максимума целевой функции или станут не положительными при поиске минимума целевой функции, то решение задачи найдено. Оптимальное значение W() находится на пересечении строки «симплекс - разность» и столбца «свободные члены», а значения базисных переменных, дающих оптимальное значение целевой функции, находятся в остальных ячейках столбца «свободные члены». Не базисные переменные считаются равными 0.
В противном случае следует проверить: имеются ли в столбце с отрицательной симплекс – разностью (при максимизации) или с положительной симплекс – разностью (при минимизации) положительные элементы. Если да, выполнить новую итерацию в соответствии с пунктами 48. Если нет, то в области допустимых решений целевая функция W() не ограничена. В этом случае max W() , min W() – .