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

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

1. Указать способ нахождения начального опорного плана.

2. Указать способ перехода от одного опорного плана к другому, на котором значение целевой функции ближе к оптимальному.

3. Задать критерии, которые позволяют своевременно прекратить проверку решений на оптимальность или сделать заключение об отсутствии оптимального решения.

Предположим, что необходимо найти минимум целевой функции Симплексный метод решения задач линейного программирования - student2.ru при следующей системе ограничений:

Симплексный метод решения задач линейного программирования - student2.ru (1.14)

Запишем систему (1.14) в векторной форме:

Симплексный метод решения задач линейного программирования - student2.ru (1.15) Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru ,…, , Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru ,..., Симплексный метод решения задач линейного программирования - student2.ru .

Векторы Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru ,.., Симплексный метод решения задач линейного программирования - student2.ru образуют базис в Симплексный метод решения задач линейного программирования - student2.ru . Поэтому в соотношении (1.15) за базисные переменные принимаем Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru ,…, Симплексный метод решения задач линейного программирования - student2.ru , а остальные переменные

(будем называть их свободными) приравниваем нулю. Учитывая, что Симплексный метод решения задач линейного программирования - student2.ru , получаем, что опорное решение задачи (1.14)имеет вид

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

Рассмотрим, как, исходя из начального опорного решения, можно построить другое опорное решение, которое будет более близким к оптимальному, т.е. на котором значение целевой функции будет меньше. Систему ограничений (1.14) перепишем в виде:

Симплексный метод решения задач линейного программирования - student2.ru (1.16)

Выражая значения Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru ,…, Симплексный метод решения задач линейного программирования - student2.ru через свободные неизвестные, целевую функцию Симплексный метод решения задач линейного программирования - student2.ru получим в виде:

Симплексный метод решения задач линейного программирования - student2.ru . (1.17)

Итак, первоначальный опорный план Симплексный метод решения задач линейного программирования - student2.ru , а соответствующее значение Симплексный метод решения задач линейного программирования - student2.ru . Возможны следующие ситуации:

1) все Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru , …, Симплексный метод решения задач линейного программирования - student2.ru . Тогда минимум Симплексный метод решения задач линейного программирования - student2.ru достигается при Симплексный метод решения задач линейного программирования - student2.ru , т.е. план Симплексный метод решения задач линейного программирования - student2.ru является оптимальным и Симплексный метод решения задач линейного программирования - student2.ru ;

2) среди чисел Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru , …, Симплексный метод решения задач линейного программирования - student2.ru имеются положительные. Пусть Симплексный метод решения задач линейного программирования - student2.ru , где Симплексный метод решения задач линейного программирования - student2.ru одно из чисел Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru ,..;, Симплексный метод решения задач линейного программирования - student2.ru . Тогда полагаем все Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru , …, Симплексный метод решения задач линейного программирования - student2.ru равными нулю, кроме Симплексный метод решения задач линейного программирования - student2.ru . Из (1.16) следует, что

Симплексный метод решения задач линейного программирования - student2.ru (1.18)

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

Здесь, в свою очередь, могут представиться два случая:

а) все числа Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru , …, Симплексный метод решения задач линейного программирования - student2.ru , тогда для любого Симплексный метод решения задач линейного программирования - student2.ru все значения Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru ,…, Симплексный метод решения задач линейного программирования - student2.ru . В этом случае Симплексный метод решения задач линейного программирования - student2.ru не достигается, так как при Симплексный метод решения задач линейного программирования - student2.ru функция Симплексный метод решения задач линейного программирования - student2.ru ;

б) среди чисел Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru , …, Симплексный метод решения задач линейного программирования - student2.ru имеются положительные. Пусть, например, Симплексный метод решения задач линейного программирования - student2.ru . Так как все компоненты плана должны быть положительны, то Симплексный метод решения задач линейного программирования - student2.ru нельзя увеличивать более, чем Симплексный метод решения задач линейного программирования - student2.ru ( иначе Симплексный метод решения задач линейного программирования - student2.ru станет отрицательным ).

Поэтому найдём Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru называется разрешающим элементом.Положим Симплексный метод решения задач линейного программирования - student2.ru ,…, Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru ,…, Симплексный метод решения задач линейного программирования - student2.ru . Найдём значения остальных неизвестных:

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

Получено новое опорное решение: Симплексный метод решения задач линейного программирования - student2.ru .

Значение целевой функции при этом уменьшается:

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

Идея симплекс-метода заключается в том, что на каждом этапе один из векторов Симплексный метод решения задач линейного программирования - student2.ru выводится из базиса, а вместо него вводится другой Симплексный метод решения задач линейного программирования - student2.ru . При этом удобно, чтобы он стал бы единичным. Поэтому в системе ограничений Симплексный метод решения задач линейного программирования - student2.ru -е уравнение, содержащее разрешающий элемент Симплексный метод решения задач линейного программирования - student2.ru , делим на Симплексный метод решения задач линейного программирования - student2.ru . Исключаем Симплексный метод решения задач линейного программирования - student2.ru из всех остальных уравнений, т.е. осуществляем преобразование Жордана-Гаусса.

Итак, алгоритм симплекс-метода состоит в следующем:

1. Приводим систему к виду, содержащему Симплексный метод решения задач линейного программирования - student2.ru единичных векторов, и определяем первоначальный опорный план.

2. Выражаем Симплексный метод решения задач линейного программирования - student2.ru через свободные переменные в виде:

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

Если при этом все коэффициенты Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru ,.., Симплексный метод решения задач линейного программирования - student2.ru не являются положительными, то найденный первоначальный план является оптимальным.

3. Пусть среди чисел Симплексный метод решения задач линейного программирования - student2.ru , Симплексный метод решения задач линейного программирования - student2.ru ,.., Симплексный метод решения задач линейного программирования - student2.ru имеются положительные. Берём любой из них, например, Симплексный метод решения задач линейного программирования - student2.ru , и просматриваем весь соответствующий столбец Симплексный метод решения задач линейного программирования - student2.ru . Он называется разрешающим столбцом. Если все числа этого столбца отрицательны, то Симплексный метод решения задач линейного программирования - student2.ru Задача решения не имеет.

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

5. Выводим переменную Симплексный метод решения задач линейного программирования - student2.ru из числа свободных и меняем её с базисной переменной Симплексный метод решения задач линейного программирования - student2.ru .

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

Замечание 1. На практике этот алгоритм реализуется с помощью симплекс-таблиц (см. пример 1.2.).

Замечание 2. При построении симплекс-таблиц можно рассуждать иначе. Пусть решаем ЗЛП в виде

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

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

В этом случае общая схема симплекс-метода претерпевает некоторые изменения. А именно:

1) Пусть дан базис некоторого опорного решения и соответствующая ему симплекс-таблица. В верхней строке этой таблицы (см. пример 1.2., заголовки столбцов) располагаются свободные переменные, в крайнем левом столбце – базисные переменные; крайний правый столбец – это столбец свободных членов, а самая нижняя строка является строкой целевой функции и называется вектором относительных оценок. Остальное содержимое таблицы - столбцы матрицы ограничений, отвечающие соответствующим столбцам свободных переменных. Координаты вектора относительных оценок (D1, D2,… Dn) находят по правилу: для нахождения коэффициента Dk вектор из коэффициентов при базисных переменных в целевой функции скалярно умножить на k-й столбец симплекс-таблицы и вычесть из найденного числа коэффициент целевой функции при соответствующем свободном переменном xk.

2) Если все относительные оценки (нижняя строка этой таблицы) неотрицательны, то построено оптимальное опорное решение.

3) Если существует отрицательная оценка и соответствующий ей столбец (разрешающий) состоит из неположительных элементов, то имеет место неразрешимость целевой функции Z(X), то есть max Z(X) ®+¥.

4) Иначе, выбрать ведущий элемент (задаёт ведущую строку) и сделать с ним шаг жордановых исключений, перейдя к новой симплекс-таблице, которую проанализировать как в пункте 2).

Пример 1.2.Предприятие, выпускающее продукцию на экспорт, располагает тремя производственными ресурсами (сырьем, оборудованием, электроэнергией) и может организовать производство продукции двумя различными способами. Расход ресурсов и амортизация оборудования за один месяц и общий ресурс при каждом способе производства заданы в таблице (в ден. ед.).

Производственный ресурс Расход ресурсов за 1 месяц и общий ресурс при работе Общий ресурс
по 1 способу по 2 способу
Сырье
Оборудование
Электроэнергия

При первом способе производства предприятие выпускает за один месяц 3 тыс. изделий, при втором – 4 тыс. изделий.

Сколько месяцев должно проработать предприятие по каждому из этих способов, чтобы при наличных ресурсах обеспечить максимальный выпуск продукции?

Решение. Обозначим:

Симплексный метод решения задач линейного программирования - student2.ru - время работы предприятия по первому способу;

Симплексный метод решения задач линейного программирования - student2.ru - время работы предприятия по второму способу.

Математическая модель задачи примет вид:

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

при ограничениях:

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

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

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

при ограничениях:

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

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


Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru
Симплексный метод решения задач линейного программирования - student2.ru
Симплексный метод решения задач линейного программирования - student2.ru
Симплексный метод решения задач линейного программирования - student2.ru
Симплексный метод решения задач линейного программирования - student2.ru -3 -4

Начальный опорный план имеет вид:

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

В последней строке имеются две отрицательные оценки, значит, найденное решение не является оптимальным и его можно улучшить. В качестве ведущего столбца следует принять столбец базисной переменной Симплексный метод решения задач линейного программирования - student2.ru , а за ведущую строку – строку переменной Симплексный метод решения задач линейного программирования - student2.ru , где Симплексный метод решения задач линейного программирования - student2.ru .

Теперь запишем правила перехода к новой симплекс-таблице, соответствующие приведённому выше алгоритму симплекс-метода:

1. Базисная переменная, находящаяся в ведущей строке, и свободная переменная, находящаяся в ведущем столбце, меняются местами.

2. Ведущий элемент заменяется величиной, ему обратной.

3. Все элементы ведущей строки (включая свободный член), кроме ведущего элемента, заменяются их отношениями к ведущему элементу.

4. Все элементы ведущего столбца (кроме ведущего элемента) заменяются взятыми с обратными знаками их отношениями к ведущему элементу.

5. Остальные элементы заменяются по «правилу 4 элементов»: любой такой элемент умножается на ведущий и из произведения вычитается произведение двух других элементов, составляющих с первыми вершины прямоугольника, после чего результат делится на ведущий элемент.

Ведущим элементом является «2». Вводим в столбец БП переменную Симплексный метод решения задач линейного программирования - student2.ru , выводим Симплексный метод решения задач линейного программирования - student2.ru . Составляем симплексную таблицу второго шага:

Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru
Симплексный метод решения задач линейного программирования - student2.ru 1/2 1/2
Симплексный метод решения задач линейного программирования - student2.ru 1/2 -1/2
Симплексный метод решения задач линейного программирования - student2.ru 3/2 -1/2
Симплексный метод решения задач линейного программирования - student2.ru -1

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

В последней строке имеется одна отрицательная оценка. Полученное решение можно улучшить. Ведущим элементом является «1/2». Составляем симплекс таблицу третьего шага:

Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru Симплексный метод решения задач линейного программирования - student2.ru
Симплексный метод решения задач линейного программирования - student2.ru -1
Симплексный метод решения задач линейного программирования - student2.ru -1
Симплексный метод решения задач линейного программирования - student2.ru -3
Симплексный метод решения задач линейного программирования - student2.ru

Все оценки свободных переменных положительны, следовательно, найденное опорное решение является оптимальным:

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

Ответ. Максимальный выпуск продукции составит 10 тыс. ед., при этом по первому способу предприятие должно работать два месяца, по второму – один месяц.

Наши рекомендации