Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 4 (а). Линейное программирование1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
568.32 Кб
Скачать

3.2) Симплекс-метод

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

причем предполагается, что имеется базисное допустимое решение, удовлетворяющее всем ограничениям.

Базисное решение, удовлетворяющее ограничениям, можно получить, если найти m столбцов матрицы A , образующих несингулярную матрицу B m × n . Если эти столбцы соответствуют переменным , то ограничения могут быть преобразованы так, чтобы выразить через b и остальные x , что можно записать в виде

(Невырожденная матрица (иначе несингулярная матрица) ― квадратная матрица, определитель которой отличен от нуля. В противном случае матрица называется вырожденной

Если умножить ограничения системы (2.4) на и вычесть из z , то исключатся из z и мы получим

Разумеется, уравнения (2.4) и (2.3) выражают одинаковые ограничения, а уравнения (2.5) и (2.1) представляют одну и ту же целевую функцию, хотя и в разных алгебраических формах. Уравнения (2.4) и (2.5) являются канонической формой для базиса . Если положить равными 0, то соотношения

задают базисное решение.

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

Иногда базисное допустимое решение очевидно, как в выбранном для иллюстрации симплекс-метода примере 1.1, который уже решен графически.

Пример 1.3

Минимизировать функцию

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

В стандартной форме с неотрицательными дополнительными переменными ограничения и целевая функция принимают вид

(2.11)

Поскольку в этом случае коэффициенты b положительны, а новые переменные имеют коэффициент +1, ясно, что набор образует базисное фундаментальное решение, а уравнения (2.11) имеют соответствующий вид.

Функция z , имеющая нулевое значение, выражена через небазисные переменные, которые также имеют нулевое значение. Как в таком случае можно уменьшить значение функции z ? Поскольку x1 и x2 должны быть неотрицательны, любое изменение их значений является увеличением этих значений. Поскольку коэффициенты при x1 и x2 в канонической форме функции z отрицательны, любое такое изменение приведет к убыванию функции z . Вместо того чтобы увеличить их значения одновременно, для простоты выберем одну из переменных. Так как коэффициент при x2 больше по модулю, выбираем x2 .

Однако при увеличении x2 значения x3 и x4 будут изменяться, поскольку должны выполняться уравнения (2.11). Все переменные при этом должны оставаться неотрицательными. Таким образом, должен существовать предел увеличения x2.

Поскольку , x3 обращается в 0 при x2 = 1700/4 = 425.

Поскольку , x4 обращается в 0 при x2 = 1600/5 = 320.

Таким образом, мы не можем увеличивать x2 более чем до 320 (минимального из этих значений), не нарушая условие неотрицательности.

Второе ограничение может быть записано в виде

Если вычесть это уравнение, умноженное на 4, из уравнения первого ограничения (2.11) (4 - коэффициент при x2 в этом уравнении), а затем вычесть это же уравнение, умноженное на - 4, из выражения для целевой функции (- 4 - коэффициент при x2 в целевой функции), то переменная x2 будет исключена отовсюду, кроме второго ограничения, куда она входит с коэффициентом 1.

Ограничения и целевая функция принимают вид

что является канонической формой для базиса x2 , x3 , представляющего базисное допустимое решение.

Небазисными переменными стали переменные x1 и x4 . В данный момент они равны 0.

Теперь можно уменьшить значение функции z , увеличив только x1 . Но на сколько можно увеличить x1 , чтобы x2 и x3 оставались неотрицательными?

Для уравнения

Таким образом, нельзя увеличивать x1 , более чем до 300 (минимального из этих значений). После деления на 7/5 (коэффициент при x1 ) первое ограничение принимает вид

Исключим x1 из другого ограничения и выражения для целевой функции, вычтя последнее соотношение, умноженное на 2/5 и -2/5, из ограничения и целевой функции. Получим каноническую форму задачи в базисе x1, x2, тоже являющимся допустимым. Она имеет следующий вид:

Заметим, что увеличение любой из небазисных переменных x3 , x4 (эти переменные входят в выражение для целевой функции z с положительными коэффициентами) приведет к возрастанию функции z . Таким образом, дальнейшее убывание функции z невозможно и достигнуто минимальное значение функции z , равное -1400 при допустимом базисном решении x1 = 300, x2 = 200, x3 = x4 = 0. Если вернуться к геометрической интерпретации на рис.. 1.1, то можно убедиться, что последовательность канонических форм привела из точки 0 в точку A и из точки A в точку B - точку минимума. При выборе в уравнениях (2.11) увеличения x1 та же процедура привела бы из точки 0 в точку B через точку C .

Этот итерационный процесс удобно проиллюстрировать в так называемых симплекс-таблицах. Они состоят из уравнений (2.11) - (2.13) для ограничений и целевой функции, записанных в виде

Табличный симплекс-метод

Ниже приведены обобщенные результаты, сведенные в таблицы.

На итерации 0 звездочкой отмечено значение 5 - коэффициент при переменной, которую мы собираемся обратить в базисную в предельном ограничении. На итерации 1 отмечено число 7/5. Заметим также, что мы ставим точки вместо переменных, обязанных иметь нулевые значения, чтобы отличить их от переменных, обращающихся в 0 случайно.

Результаты, полученные в рассмотренном примере, можно обобщить. Предположим, что начальная каноническая форма задана, и что на k -й итерации получена каноническая форма, заданная уравнениями (2.4) и (2.5), запись которых приведена ниже в таблице.

Итерационный процесс состоит из трех шагов.

1. Найти переменную для включения в базис.

2. Найти переменную для исключения из базиса.

3. Построить новую каноническую форму.