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

1.3 Алгоритм симплекс-метода

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

Алгоритм начинается всегда с некоторого допустимого опорного плана и затем пытается найти другой опорный базисный план, «улучшающий» значение целевой функции. Это возможно только в том случае, если возрастание какой-либо нулевой (небазисной) переменной ведет к улучшению значения целевой функции. Но для того, чтобы небазисная переменная стала положительной, надо одну из текущих базисных сделать нулевой (небазисной). Это необходимо, чтобы новое допустимое решение содержало в точности m базисных переменных. В соответствии с терминологией симплекс-метода выбранная нулевая переменная называется вводимой (в базис), а удаляемая базисная переменная – исключаемой (из базиса).

Алгоритм рассмотрим для наглядности на примере 1.1.

Приведем систему (1.1), (1.2) к каноническому виду:

Здесь — дополнительные переменные (остаточные), добавленные в неравенства для преобразования их в равенства.

Задачу ЛП в канонической форме для удобства будем представлять в виде таблицы 1.1.

Нижние четыре строки представляют равенства ограничений; значения правых частей этих равенств даны в столбце «Решение». Строка z получена из равенства z-5x1-4x2=0.

Дополнительные переменные составляют очевидное начальное допустимое базисное решение, которое отображается в столбце «Решение»: При этомони не базисные. Значение целевой функции при этом базисном решении равно нулю.

Будет ли начальное решение оптимальным? Конечно, нет, поскольку переменные х1 и х2 здесь равны нулю, а возрастание этих переменных даже на единицу приводит к увеличению значения целевой функции z=5x1+4x2 на 5 единиц или 4. Поскольку коэффициент при х1 больше, чем при х2, переменную х1 следует ввести в базис (в этом случае она станет вводимой). Если обратиться к таблице 1.1, то вводимая переменная определяется среди небазисных как переменная, имеющая наибольший отрицательный коэффициент в z-строке.

Включаемая переменная х1 должна принимать положительное значение. На рисунке 1.1 видно, что, исходя из начальной точки А (х1=0, х2=0), наибольшее значение, которое можно присвоить переменной х1 ( не выходя из множества допустимых решений), равно 4, что соответствует точке В (х1=4, х2=0). Это означает, что решение переместилось от крайней точки А в крайнюю точку В.

Алгебраически точку пересечения можно найти как отношение правой части равенства (значение в столбце «Решение») к коэффициенту при переменной х1 в этом равенстве, как показано в таблице 2.2.

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

Минимальное неотрицательное отношение равно значению вводимой переменной х1 в новом решении, а именно х1=4. Значение целевой функции возрастает при х1=4 до 20 (=54).

Теперь среди текущих базисных переменных следует определить исключаемую переменную, которая примет значение ноль после выведения ее из базиса и введения в базис переменной х1. (В нашем примере количество базисных переменных должно быть равно ровно 4). Поскольку наименьшее (неотрицательное) отношение соответствует переменной s1, то в точке В, именно эта переменная обращается в нуль. Таким образом, переменная s1 будет исключаемой, в этом случае переменная х1 автоматически получает значение, равное 4. Замена исключаемой переменной s1 на вводимую х1 приводит к новому базисному решению

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

Для нашего примера ведущий столбец переменной х1 и ведущая строка s1 в таблице 1.1 выделены серой заливкой. Ведущим элементом будет число 6.

Процесс вычисления нового базисного решения состоит из двух этапов.

  1. Вычисление элементов новой ведущей строки. Новая ведущая строка = Текущая ведущая строка / Ведущий элемент.
  2. Вычисление элементов остальных строк, включая z-строку. Новая строка = Текущая строка — ее коэффициент в ведущем столбце* новая ведущая строка.

В нашем примере ведущая строка (s1 — строка) делится на ведущий элемент (=6). Вычисляем элементы остальных строк таблицы.

  1. z — строка.
    текущаяz-строка: ( 1 -5 -4 0 0 0 0│ 0 )
    -(-5)*Новая ведущая строка: ( 0 5 10/3 5/6 0 0 0│ 20 )
    = Новая z- строка: ( 1 0 -2/3 5/6 0 0 0│ 20 )
  2. s2 — строка.
    текущаяs2-строка: ( 0 1 2 0 1 0 0│ 6 )
    (1)*Новая ведущая строка: ( 0 -1 -2/3 -1/6 0 0 0│ -4 )
    = Новаяs2— строка: ( 0 0 4/3 -1/6 1 0 0│ 2 )
  3. s3 — строка.
    текущаяs3-строка: ( 0 -1 1 0 0 1 0│ 1 )
    +(1)*Новая ведущая строка: ( 0 1 2/3 1/6 0 0 0│ 4 )
    = Новаяs3— строка: ( 0 0 5/3 1/6 0 1 0│ 5 )
  4. s4 — строка. Новая s4 — строка повторяет текущую s4 — строку, поскольку ее коэффициент в ведущем столбце равен нулю.

Новая симплекс таблица, соответствующая новому базисному решению, имеет вид. Таблица 1.3

Базис z x1 x2 s1 s2 s3 s4 Решение
z 1 0 -2/3 5/6 0 0 0 20
х1 0 1 2/3 1/6 0 0 0 4
s2 0 0 4/3 -1/6 1 0 0 2
s3 0 0 5/3 1/6 0 1 0 5
s4 0 0 1 0 0 0 1 2

Отметим, что новая таблица 1.3 обладает теми же свойствами, что и начальная таблица 1.1: только небазисные переменные х2 и s1 равны нулю, в столбце «Решение» представлено новое базисное решение () вместе с новым значением целевой функцииz (=20). Это результат применения метода Гаусса-Жордана. Из последней таблицы видно, что полученное базисное решение не является оптимальным, поскольку в z-строке переменная х2 имеет отрицательный коэффициент. Увеличение значения х2 (ее текущее значение равно нулю) приведет к увеличению значения целевой функции. Таким образом, х2 должна быть введена в базис. Далее определим исключаемую переменную. Для этого вычислим отношения правых частей равенств, соответствующих ограничениям, к коэффициентам, стоящим при х2 в этих равенствах. Таблица 1.4

Базис x2 Решение Отношение
x1 2/3 4 4/(2/3)=6
s2 4/3 2 2/(4/3)=3/2 минимум
s3 5/3 5 5/(5/3) = 3
s4 1 2 2/1 = 2

В этой ситуации ведущей строкой будет s2 -строка, а ведущим столбцом- столбец, соответствующий переменной х2. Ведущий элемент равен 4/3. В таблице 1.3 они отмечены заливкой. Далее опять ведущую строку (s2 — строка) делим на ведущий элемент (4/3) и с помощью этой новой строки избавляемся от х2 во всех остальных строках, включая z — строку. В результате получится таблица 1.5. Таблица 1.5

Базис z x1 x2 s1 s2 s3 s4 Решение
z 1 0 0 3/4 1/2 0 0 21
х1 0 1 0 1/4 -1/2 0 0 3
х2 0 0 1 -1/8 3/4 0 0 3/2
s3 0 0 0 3/8 -5/4 1 0 5/2
s4 0 0 0 1/8 -3/4 0 1 1/2

Поскольку z-строка не имеет отрицательных коэффициентов, соответствующих небазисным переменным s1 и s2, полученное решение оптимально. Найденное оптимальное решение вместе с дополнительными переменными будет Значение целевой функцииz =21. C помощью последней симплекс-таблицы 1.5 можно получить много дополнительной информации, кроме решения:

  1. Состояние ресурсов.
  2. Цена единицы ресурсов.
  3. Все данные, необходимые для проведения анализа на чувствительность.

Это подробно будет описано в следующих Лекциях. Сформулируем два правила, а также рассмотрим последовательность действий, выполняемых при реализации симплекс-метода. Условие оптимальности Вводимой переменной в задаче максимизации (минимизации) является небазисная переменная, имеющая наибольший отрицательный (положительный) коэффициент в z-строке. Если в z-строке есть несколько таких коэффициентов, то выбор вводимой переменной берется произвольно. Оптимальное решение достигнуто тогда, когда в z-строке все коэффициенты при небазисных переменных будут неотрицательными (неположительными). Условие допустимости Как в задаче минимизации, так и в задаче максимизации в качестве исключаемой выбирается базисная переменная, для которой отношение правой части ограничения к положительному коэффициенту ведущего столбца минимально. Если базисных переменных с таким свойством несколько, то выбор исключаемой переменной выполняется произвольно. Последовательность действий, выполняемых в симплекс-методеШаг 0 Находится начальное допустимое решение. Шаг 1 На основе условия оптимальности определяется вводимая переменная. Если вводимых переменных нет, вычисления заканчиваются. Шаг 2 На основе условия допустимости выбирается исключаемая переменная. Шаг 3 Методом Гаусса-Жордана вычисляется новое базисное решение. Переход к шагу 1.

Источник

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

Поскольку, как было показано в п. 3.1 решение задачи линейного программирования находится в одной из крайних (угловых) точек ОДЗ, важным вопросом является изучение не системы неравенств (4), а соответствующей системы уравнений AX = B, решение которой дает угловые точки ОДЗ.

Если уравнения системы АX = B линейно независимы, то система имеет множество решений при n > m и единственное решение при n = m. При решении задачи линейного программирования симплекс-методом всегда будет выполняться n > m, поэтому для получения некоторого одного решения, «лишние» nm переменных приравниваются нулю.

Если приравнять к нулю n m произвольных переменных (например, переменные xm+1, xm+2, …, xn) и, решив систему, найти значения оставшихся m переменных (x1, x2, …, xm), то такое решение называется базисным.

Если нулю приравнять некоторые другие n m переменных – получим другое базисное решение. Любое базисное решение, у которого все переменные неотрицательные называется допустимым базисным решением.

Переменные, которые были приравнены нулю, называются небазисными. Оставшиеся т переменных, значение которых получены из решения системы, называются базисными.

Допустимое базисное решение представляет собой угловую вершину ОДЗ.

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

Сформулируем в общем виде алгоритм симплекс-метода:

1: Приведение задачи к стандартной форме. Стандартной формой задачи линейного программирования будем называть задачу, у которой все ограничения записаны как равенства и при этом правые части ограничений неотрицательны.

2: Выделение исходного базисного решения (по возможности из стандартной формы). То есть определение тех переменных n m переменных, которые приравниваются нулю и нахождение значений оставшихся базисных переменных.

3: Определение, является ли полученное базисное решение оптимальным, если да, то решение окончено, иначе переходим к шагу 4.

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

5: Использование эквивалентных преобразований методом Жордана-Гаусса для нахождения нового допустимого базисного решения. Переход к шагу 3.

Чтобы привести задачу линейного программирования к стандартной форме необходимо:

1. Убедиться, что во всех ограничениях правые части bi неотрицательны. Если есть отрицательные правые части ограничений, такие ограничения нужно умножить на –1 (при этом учесть, что в ограничениях типа  или  знак ограничения изменится на противоположный).

2. К левой части ограничений типа  нужно прибавить новую, дополняющую переменную S, которая уравнивала бы левую и правую часть и показывала бы насколько левая часть ограничения меньше правой.

в стандартном виде будет выглядеть так:

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

в стандартном виде будет выглядеть так:

Дополняющие переменные S и избыточные e будем называть вспомогательными, в то время, как переменные xосновными.

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

В качестве исходных базисных переменных в задачах с ограничениями  удобно брать переменные S1, …, Sn.

Реализацию алгоритма симплекс-метода проиллюстрируем на следующем примере.

Пример 3.2. Мебельная фабрика может производить шкафы, столы, стулья. При изготовлении мебели используются древесина, труд рабочих на столярном и отделочном участках. Необходимое количество ресурсов для изготовления шкафов, столов и стульев приведено в таблице:

Таблица 3.1 – Исходные данные к примеру 3.2

Источник

Читайте также:  Мирэа программирование проходной балл
Оцените статью