Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭММ: Методичка Забуга С.И.doc
Скачиваний:
21
Добавлен:
12.11.2018
Размер:
2.28 Mб
Скачать

1.5. Симплексный метод решения задач линейного программирования

Этот метод является наиболее мощным и универсальным инструментом для решения большинства задач линейного программирования независимо от их размерности, он хорошо разработан теоретически и снабжен богатым программным обеспечением

Рассмотрим задачу ЛП в каноническом виде:

(1.5.1)

Установлено, что ограничения данной задачи задают в n-мерном пространстве выпуклую область L (в частном случае – многогранник), содержащую конечное число крайних точек. Каждая крайняя точка является допустимым базисным решением (ДБР) задачи и экстремум достигается именно в какой-то из крайних точек.

Симплекс-метод включает в себя:

– определение исходного ДБР;

– упорядоченный перебор крайних точек L, при котором на каждом шаге значение целевой функции приближается к минимальному. Этот перебор эквивалентен переходу от одного допустимого базисного решения к другому, которое доставляет целевой функции меньшее значение.

х1 х2

х0 L хопт

Рис. 1.5.1

Число шагов в методе конечно. Процесс продолжается до получения одного из результатов:

А) Найдено оптимальное решение;

В) Установлена неразрешимость задачи (L – пустое множество);

С) Установлена неограниченность целевой функции Z.

Теория симплекс-метода изложена практически в любом учебнике по линейному программированию, в частности в [2], здесь же мы предпочитаем остановиться на практической стороне вопроса.

АЛГОРИТМ СИМПЛЕКС-МЕТОДА.

  1. Приводим задачу к каноническому виду.

  1. Находим начальное ДБР (опорный план). Если в матрице системы ограничений уже есть m единичных столбцов (причем с единицами, стоящими в разных строках), то соответствующие xj принимаем за базисные переменные начального решения. Если единичных столбцов меньше, чем m, то в расширенной матрице системы методом Жордана – Гаусса выделяем нужное количество единичных столбцов, соблюдая при этом требование неотрицательности всех правых частей уравнений системы. Наконец, если такое преобразование затруднено или вообще невозможно, то применяем метод искусственного базиса (см. 1.6).

  2. Составляем начальную симплекс-таблицу. Это удобный инструмент для наглядного представления о текущем решении задачи и проверки его на оптимальность. В дальнейшем алгоритм будет состоять в серии преобразований симплекс-таблиц вплоть до получения оптимального решения или установления факта его отсутствия. Каждое преобразование предусматривает вывод одного базисного вектора из базиса и замену его на некий небазисный вектор. Формат симплекс-таблицы следующий:

Таблица 1.5.1.

c1 =

c2 =

:

ck =

:

cn =

i

Базис

А1

А2

:

Ак

:

Аn

1

AS1

CS1

b1

x11

x12

:

x1k

:

x1n

2

AS2

CS2

b2

x21

x22

:

x2k

:

x2n

:

:

:

:

:

:

:

:

:

:

:

:

:

:

:

:

:

:

:

:

:

:

m

ASm

CSm

bm

xm1

xm2

:

xmk

:

xmn

m +1

Z0

Z1C1

Z2C2

:

ZkCk

:

ZnCn

В первом столбце таблицы приводится нумерация строк от 1 до m, последняя строка с номером m+1 называется индексной строкой, или строкой оценок и играет важнейшую роль при проверке решения на оптимальность.

Во втором столбце выписываются векторы текущего базиса {AS!, AS2, …, ASm}, которым соответствуют единичные столбцы преобразованной матрицы системы ограничений, в том порядке, как идут сверху вниз единицы.

В третьем столбце стоят коэффициенты целевой функции при базисных переменных.

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

В последующих столбцах помещаются элементы преобразованной матрицы системы ограничений (они традиционно обозначаются xij, i = 1, …, m, j = 1…n), причем в самой первой строке стоит номер вектора-столбца (), а над ним – коэффициент cj целевой функции при соответствующей переменной.

Последний столбец (КΣ или контрольная сумма) служит для контроля вычислений. Эта проблема очень важна при работе по алгоритму симплекс- метода, так как, если допустить арифметическую ошибку в какой-либо стадии вычислений и сразу ее не исправить, то она способна очень существенно испортить все последующие результаты. В последнем столбце записываются суммы всех элементов соответствующей строки, начиная со столбца В. В дальнейшем этот столбец преобразовывается по тем же правилам, что и остальные столбцы симплекс-таблицы, причем суммы элементов новой строки также должны равняться элементам этого столбца, если, естественно, не было ошибки в вычислениях. В случае несоответствия следует проверить вычисления последнего шага.

Пример 1.5.1. Приведем пример применения алгоритма симплекс-метода к решению задачи (1.4.2), рассмотренной в п. 1.4. Для построения начальной симплекс-таблицы воспользуемся табл. 1.4.1, в которой матрица ограничений задачи приведена к единичному базису, содержащему m (4) единичных вектора.

Составляем начальную симплекс-таблицу:

Таблица 1.5.2.

i

Базис

Cбаз

В

c1=3

c2= 0

c3= –2

c4=1

c5= –2

c6= –1

КΣ

А1

А2

А3

А4

А5

А6

1

А3

–2

1

–1

1

1

0

0

0

2

2

А4

1

3

1

1

0

1

0

0

6

3

А5

–2

2

1

–2

0

0

1

0

2

4

А6

–1

0

–3

1

0

0

0

1

–1

m+1

ZjCj

–3

1

2

0

0

0

0

Поясним правила заполнения последней, m+1-ой строки. Под столбцом В стоит скалярное произведение вектора Сбаз на вектор В. Это число равно начальному значению целевой функции Z0, а в последующих симплекс-таблицах на этом месте будет находиться текущее значение целевой функции. Очевидно, если процесс перехода от одной симплекс-таблицы к следующей идет правильно, значения функции Z не должны возрастать. В остальных клетках последней строки стоят величины Zj – сj, где Zj – скалярное произведение вектора Сбаз на вектор Аj, a cj – коэффициент целевой функции при переменной xj. Данные величины называются оценками оптимальности текущего базисного решения и обозначаются Δj. Условие оптимальности – все Δj неположительны. Если в последней строке присутствует хотя бы одна положительная оценка, текущее решение надо улучшать.

В нашей таблице в последней строке имеются две положительные оценки – в столбцах А1 и А2. Выбираем максимальную: Δ2 = 2, это означает, что небазисную переменную х2 надо ввести в базис. Теперь решим вопрос: какую из базисных переменных следует вывести из базиса? Для ответа нам надо найти так называемое минимальное симплексное отношение. Именно, рассмотрим строго положительные элементы второго (разрешающего) столбца. Это х12 = 1, х22 = 1 и х42 = 1. Разделим на них соответствующие элементы столбца В (т. е. стоящие в соответствующих строках) и образуем отношения:

Минимальное отношение равно нулю и достигается в 4-ой строке, значит вектор А6, соответствующий этой строке, надо выводить из базиса, на его место вводим вектор А2. В дальнейшем, строку, в которой найдено минимальное симплексное отношение, будем называть разрешающей, а элемент, стоящий на пересечении разрешающей строки и разрешающего столбца – разрешающим элементом. Составляем новую симплекс-таблицу:

Таблица 1.5.3.

i

Базис

Сбаз

В

c1=3

c2=0

c3= –2

c4=1

c5= –2

c6= –1

КΣ

А1

А2

А3

А4

А5

А6

1

А3

–2

1

2

0

1

0

0

–1

3

2

А4

1

3

4

0

0

1

0

–1

7

3

А5

–2

2

–5

0

0

0

1

2

0

4

А2

0

0

–3

1

0

0

0

1

–1

m+1

ZjCj

–3

7

0

0

0

0

–2

Правила пересчета симплекс-таблицы таковы:

– в столбце «Базис» делаем замену векторов, в нашем случае вместо А6 пишем А2, соответственно, в следующем столбце меняем коэффициенты целевой функции – вместо с6 пишем с2;

– делим разрешающую строку на разрешающий элемент (в нашем случае х42 = 1, поэтому разрешающая строка не меняется);

– записываем базисные столбцы в виде единичных;

− остальные элементы таблицы, включая столбцы В и КΣ, пересчитываем по формулам Жордана-Гаусса. Для симплекс-метода этот алгоритм обычно представляется в виде так называемого «правила прямоугольника»: в таблице мысленно строим прямоугольник, диагональными элементами которого являются разрешающий элемент и элемент, который требуется пересчитать (хст) и превратить в число хнов.

Теперь выполняем действия:

хнов = хстА*В/R, где R – разрешающий элемент

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

Заполняем строку оценок и убеждаемся, что оптимальное решение еще не достигнуто: в строке оценок есть положительное число (7) в первом столбце, значит А1 надо ввести в базис, а А3 вывести по минимальному симплексному отношению: 1/2 против 3/4. Еще раз пересчитываем симплекс-таблицу:

i

Базис

Сбаз

В

c1=3

c2=0

c3= –2

c4=1

c5= –2

c6= –1

КΣ

А1

А2

А3

А4

А5

А6

1

А1

3

½

1

0

1/2

0

0

–1/2

3/2

2

А4

1

1

0

0

–2

1

0

1

1

3

А5

–2

9/2

0

0

5/2

0

1

–1/2

15/2

4

А2

0

3/2

0

1

3/2

0

0

–1/2

7/2

m+1

Zj Cj

–13/2

0

0

–7/2

0

0

3/2

Опять в строке оценок мы видим положительное число 3/2, т. е. найденный план не оптимален. Легко видеть, что в базис надо ввести вектор А6, а вывести из базиса вектор А4. Еще раз пересчитываем симплекс-таблицу:

i

Базис

Сбаз

В

c1=3

c2=0

c3= –2

c4=1

c5= –2

c6= –1

КΣ

А1

А2

А3

А4

А5

А6

1

А1

3

1

1

0

–1/2

1/2

0

0

2

2

А6

–1

1

0

0

–2

1

0

1

1

3

А5

–2

5

0

0

3/2

1/2

1

0

8

4

А2

0

2

0

1

1/2

1/2

0

0

4

m+1

Zj Cj

–8

0

0

–1/2

–3/2

0

0

В последней таблице уже нет положительных чисел в строке оценок, значит, мы нашли оптимальное решение. Выписываем его компоненты из столбца В (очевидно, если какая-то переменная не входит в последний базис, то ее значение в оптимальном решении равно нулю): Хопт = (1; 2; 0; 0; 5; 1), Zопт = –8. Легко убедиться, что полученный результат полностью совпадает с графическим решением этой же задачи (пример. 1.4.1).

Замечание. В процессе пересчета симплекс-таблицы может встретиться такая ситуация: в некотором столбце существует положительная оценка Δj >0, однако все элементы этого столбца xij ≤ 0. Это означает, что на данной области допустимых значений целевая функция не ограничена (см. [1]).