Смекни!
smekni.com

Симплексный метод решения ЗЛП (стр. 3 из 5)

Первый шаг.В составленной таблице сначала необходимо просмотреть столбец со свободными членами. Если в нем имеются отрицательные элементы, то необходимо осуществить переход ко второму шагу, если же нет, то к пятому.

Второй шаг.На втором шаге необходимо определиться, какую переменную исключить из базиса, а какую включить, для того, что бы произвести перерасчет симплекс-таблицы. Для этого просматриваем столбец со свободными членами и находим в нем отрицательный элемент. Строка с отрицательным элементом будет называться ведущей. В ней находим максимальный по модулю отрицательный элемент, соответствующий ему столбец - ведомый. Если же среди свободных членов есть отрицательные значения, а в соответствующей строке нет, то такая таблица не будет иметь решений. Переменная в ведущей строке, находящаяся в столбце свободных членов исключается из базиса, а переменная, соответствующая ведущему столбцу включается в базис. В Таб.2.1 приведен пример симплекс-таблицы.

Таблица 2.1 –Пример симплекс-таблицы

базисные переменные Свободные члены в ограничениях Небазисные переменные
x1 x2 ... xl ... xn
xn+1 b1 a11 a12 ... a1l ... a1n
xn+2 b2 a21 a22 ... a2l ... a2n
... ... ... ... ... ...
... ... ... ... ... ... ...
xn+r b2 ar1 ar2 ... arl ... arn
... ... ... ... ... ... ...
xn+m bm am1 am2 ... aml ... amn
F(x)max F0 -c1 -c2 ... -c1 ... -cn

Третий шаг. На третьем шаге пересчитываем всю симплекс-таблицу по специальным формулам.

Четвертый шаг.Если после перерасчета в столбце свободных членов остались отрицательные элементы, то переходим к первому шагу, если таких нет, то к пятому.

Пятый шаг.Если Вы дошли до пятого шага, значит нашли решение, которое допустимо. Однако, это не значит, что оно оптимально. Оптимальным оно будет только в том случае, если положительны все элементы в F-строке. Если же это не так, то необходимо улучшить решение, для чего находим для следующего перерасчета ведущие строку и столбец по следующему алгоритму. Первоначально, находим минимальное отрицательное число в строке F, исключая значение функции. Столбец с этим числом и будем ведущим. Для того, что бы найти ведущую строку, находим отношение соответствующего свободного члена и элемента из ведущего столбца, при условии, что они положительны. Минимальное отношение позволит определить ведущую строку. Вновь пересчитываем таблицу по формулам, т.е. переходим к шагу 3.

Шестой шаг.Если невозможно найти ведущую строку, так как нет положительных элементов в ведущем столбце, то функция в области допустимых решений задачи не ограничена сверху и Fmax->∞. Если в строке F и в столбце свободных членов все элементы положительные, то найдено оптимальное решение.

2.3 Решение задачи линейного программирования симплекс-методом

Идея симплекс-метода относительно проста. Пусть в задаче линейного программирования имеется п переменных и т независимых линейных ограничений, заданных в форме уравнений. Мы знаем, что оптимальное решение (если оно существует) достигается в одной из опорных точек (вершин ОДР), где по крайней мере k = n - m из переменных равны нулю. Выберем какие-то к переменных в качестве свободных и выразим через них остальные т базисных переменных. Пусть, например, в качестве свободных выбраны первые k = n - m переменныхx1, x2,…,xk

остальные m выражены через них(формула 2.1):


xk+1k+1.1x1k+1.2x2+ +αk+1.kxkk+1;

xk+2= αk+2.1x1k+2.2x2+ +αk+2.kxkk+2;(2.1)

……………………………………

xn= αn1x1n2x2+ +αnkxkn.

Предположим, что все свободные переменныеx1, x2,…,xkравны нулю.

При этом мы получим:

xk+1k+1;

xk+2k+2;

…….. (2.2)

Xnn

Это решение может быть допустимым или недопустимым. Оно допустимо, если все свободные членыβk+1, βk+2,…,βn(2.2)неотрицательны. Предположим, что это условие выполнено. Тогда мы получили опорное решение. Но является ли оно оптимальным? Чтобы проверить это, выразим целевую функцию Z через свободные переменныеx1, x2,…,xk.

Z=γ01x12x2+…+γkxk(2.3)

Очевидно, что приx1=x2=…=xk=0, Z=γ0. Проверим, может ли быть улучшено решение, т. е. получено уменьшение функции Z c увеличением каких-нибудь из переменныхx1, x2,…, xk(2.2) (уменьшать их мы не можем, так как все они равны нулю, а отрицательные значения переменных недопустимы). Если все коэффициентыγ12,…,γkв (2.3) положительны, то увеличение каких-либо из переменныхx1,x2,…,xk(2.2) не может уменьшить Z; следовательно, найденное опорное решение является оптимальным. Если же среди коэффициентовγ12,…,γkесть отрицательные, то, увеличивая некоторые из переменныхx1,x2,…,xk(те, коэффициенты при которых отрицательны), мы можем улучшить решение.

Пусть, например, коэффициентγ1в (2.3) отрицателен. Значит, есть смысл увеличитьx1, т. е. перейти от данного опорного решения к другому, где переменнаяx1не равна нулю, а вместо нее равна нулю какая-то другая. Однако увеличиватьx1следует с осторожностью, так чтобы не стали отрицательными другие переменныеxk+1, xk+2,…,xnвыраженные через свободные переменные, в частности черезx1формулами (2.2).

Например, если коэффициент приx1в соответствующемxjуравнении (2.2) отрицателен, то увеличениеx1может сделатьxjотрицательным. Наоборот, если среди уравнений (2.2) нет уравнения с отрицательным коэффициентом приx1то величинуx1можно увеличивать беспредельно, а, значит, линейная функция Z не ограничена снизу и оптимального решения ОЗ не существует.

Допустим, что это не так и что среди уравнений (2.2) есть такие, в которых коэффициент приx1отрицателен. Для переменных, стоящих в левых частях этих уравнений, увеличениеx1опасно — оно может сделать их отрицательными.

Возьмем одну из таких переменныхxlи посмотрим, до какой степени можно увеличитьx1, пока переменнаяxlне станет отрицательной. Выпишемl-eуравнение из системы (2.2):

xll1x1l2x2+…+αlkxkl (2.4)

Здесь свободный членβl≥0, а коэффициентαl1отрицателен.

Легко понять, что если мы оставимx2=x3=…=xk=0, тоxkможно увеличивать только до значения, равного–βll1,а при дальнейшем увеличенииx1переменнаяx1станет отрицательной.

Выберем ту из переменныхxk+1,xk+2,…,xn, которая раньше всех обратится в нуль при увеличении x1, т. е. ту, для которой величина–βll1 наименьшая. Пусть это будетxr. Тогда имеет смысл разрешить систему уравнений (2.2) относительно других базисных переменных, исключаяиз числа свободных переменныхx1и переводя вместо нее в группу свободных переменныхxr. Действительно, мы хотим перейти от опорного решения, задаваемого равенствамиx1=x2=…=xn=0 к опорному решению, в котором ужеx1≠0, аx2=…=xk=xr=0. Первое опорное решение мы получили, положив равными нулю все прежние свободные переменныеx1,x2,…,xkвторое мы получим, если обратим в нуль все новые свободные переменныеx2,x3,…,xk,xr.

Базисными переменными при этом будутxl,xk+1,xk+2,…,xr-1, xr-1,…,xr.

Предположим, что уравнения типа (2.2) для нового набора базисных и свободных переменных составлены. Тогда можно выразить через новые свободные переменные и линейную функцию Z.Если все коэффициенты при переменных в этой формуле положительны, то мы нашли оптимальное решение: оно получится, если все свободные переменные положить равными нулю. Если среди коэффициентов при переменных есть отрицательные, то процедура улучшения решения продолжается: система вновь разрешается относительно других базисных переменных, и так далее, пока не будет найдено оптимальное решение, обращающее функцию Z в минимум.

Пример 2. Пусть имеется задача линейного программирования с ограничениями-неравенствами:


-5x1-x2+2x3≤2;