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

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

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

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

    Таблица 1.

    базисные переменные Свободные члены в ограничениях Небазисные переменные
    x 1 x 2 ... x l ... x n
    x n+1 b 1 a 11 a 12 ... a 1l ... a 1n
    x n+2 b 2 a 21 a 22 ... a 2l ... a 2n
    . . . . . . . .
    . . . . . . . .
    . . . . . . . .
    x n+r b2 a r1 a r2 ... a rl ... a rn
    . . . . . . . .
    . . . . . . . .
    . . . . . . . .
    x n+m b m a m1 a m2 ... a ml ... a mn
    F(x) max F 0 -c 1 -c 2 ... -c 1 ... -c n

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

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

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

    Здесь приведено ручное (не апплетом) решение двух задач симплекс-методом (аналогичным решению апплетом) с подробными объяснениями для того, чтобы понять алгоритм решения задач симплекс-методом. Первая задача содержит знаки неравенства только " ≤ " (задача с начальным базисом), вторая может содержить знаки " ≥ ", " ≤ " или " = " (задача с искусственным базисом), они решаются по разному.

    Симплекс-метод, решение задачи с начальным базисом

    1)Симплекс-метод для задачи с начальным базисом (все знаки неравенств-ограничений " ≤ ").

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

    Эта система является системой с базисом (базис s 1 , s 2 , s 3 , каждая из них входит только в одно уравнение системы с коэффициентом 1), x 1 и x 2 - свободные переменные. Задачи, при решении которых применяется симплекс-метод, должны обладать следующими двумя свойствами: -система ограничений должна быть системой уравнений с базисом; -свободные члены всех уравнений в системе должны быть неотрицательны.

    Полученная система - система с базисом и ее свободные члены неотрицательны, поэтому можно применить симплекс-метод . Составим первую симплекс-таблицу (Итерация 0) для решения задачи на симплекс-метод , т.е. таблицу коэффициентов целевой функции и системы уравнений при соответствующих переменных. Здесь "БП" означает столбец базисных переменных, «Решение» - столбец правых частей уравнений системы. Решение не является оптимальным, т.к. в z – строке есть отрицательные коэффициенты.

    симплекс-метод итерация 0

    Отношение

    Для улучшения решения перейдем к следующей итерации симплекс-метода , получим следующую симплекс-таблицу. Для этого надо выбрать разрешающий столбец , т.е. переменную, которая войдет в базис на следующей итерации симплекс-метода. Он выбирается по наибольшему по модулю отрицательному коэффициенту в z-строке (в задаче на максимум) – в начальной итерации симплекс-метода это столбец x 2 (коэффициент -6).

    Затем выбирается разрешающая строка , т.е. переменная, которая выйдет из базиса на следующей итерации симплекс-метода. Она выбирается по наименьшему отношению столбца "Решение" к соответствующим положительным элементам разрешающего столбца (столбец «Отношение») – в начальной итерации это строка s 3 (коэффициент 20).

    Разрешающий элемент находится на пересечении разрешающего столбца и разрешающей строки, его ячейка выделена цветом, он равен 1. Следовательно, на следующей итерации симплекс-метода переменная x 2 заменит в базисе s 1 . Заметим, что в z-строке отношение не ищется, там ставится прочерк " - ". В случае если есть одинаковые минимальные отношения, то выбирается любое из них. Если в разрешающем столбце все коэффициенты меньше или равны 0, то решение задачи бесконечно.

    Заполним следующую таблицу «Итерация 1». Её мы получим из таблицы «Итерация 0». Цель дальнейших преобразований - превратить разрешающий столбец х 2 в единичный (с единицей вместо разрешающего элемента и нулями вместо остальных элементов).

    1)Вычисление строки х 2 таблицы "Итерация 1". Сначала делим все члены разрешающей строки s 3 таблицы "Итерация 0" на разрешающий элемент (он равен 1 в данном случае) этой таблицы, получим строку x 2 в таблице «Итерации 1». Т.к. разрешающий элемент в данном случае равен 1, то строка s 3 таблицы "Итерация 0" будет совпадать со строкой х 2 таблицы "Итерация 1". Строку x 2 таблицы "Итерации 1" мы получили 0 1 0 0 1 20, остальные строки таблицы "Итерация 1" будут получены из этой строки и строк таблицы "Итерация 0" следующим образом:

    2) Вычисление z-строки таблицы "Итерация 1". На месте -6 в первой строке (z-строке) в столбце х 2 таблицы "Итерация 0" должен быть 0 в первой строке таблицы "Итерация 1". Для этого все элементы строки х 2 таблицы "Итерация 1" 0 1 0 0 1 20 умножим на 6, получим 0 6 0 0 6 120 и сложим эту строку с первой строкой (z - строкой) таблицы "Итерация 0" -4 -6 0 0 0 0, получим -4 0 0 0 6 120. В столбце x 2 появился ноль 0, цель достигнута. Элементы разрешающего столбца х 2 выделены красным цветом.

    3) Вычисление строки s 1 таблицы "Итерация 1". На месте 1 в s 1 строке таблицы "Итерация 0" должен быть 0 в таблице "Итерация 1". Для этого все элементы строки х 2 таблицы "Итерация 1" 0 1 0 0 1 20 умножим на -1, получим 0 -1 0 0 -1 -20 и сложим эту строку с s 1 - строкой таблицы "Итерация 0" 2 1 1 0 0 64, получим строку 2 0 1 0 -1 44. В столбце х 2 получен необходимый 0.

    4) Вычисление строки s 2 таблицы "Итерация 1". На месте 3 в s 2 строке таблицы "Итерация 0" должен быть 0 в таблице "Итерация 1". Для этого все элементы строки х 2 таблицы "Итерация 1" 0 1 0 0 1 20 умножим на -3, получим 0 -3 0 0 -3 -60 и сложим эту строку с s 1 - строкой таблицы "Итерация 0" 1 3 0 1 0 72, получим строку 1 0 0 1 -3 12. В столбце х 2 получен нужный 0. Столбец х 2 в таблице "Итерация 1" стал единичным, он содержит одну 1 и остальные 0.

    Строки таблицы «Итерация 1» получаем по следующему правилу:

    Новая строка = Старая строка – (Коэффициент разрешающего столбца старой строки)*(Новая разрешающая строка).

    Например для z-строки имеем:

    Старая z-строка (-4 -6 0 0 0 0) -(-6)*Новая разрешающая строка -(0 -6 0 0 -6 -120) =Новая z-строка (-4 0 0 0 6 120).

    Для следующих таблиц пересчет элементов таблицы делается аналогично, поэтому мы его опускаем.

    симплекс-метод итерация 1

    Отношение

    Разрешающий столбец х 1 , разрешающая строка s 2 , s 2 выходит из базиса, х 1 входит в базис. Совершенно аналогично получим остальные симплекс-таблицы, пока не будет получена таблица со всеми положительными коэффициентами в z-строке. Это признак оптимальной таблицы.

    симплекс-метод итерация 2

    Отношение

    Разрешающий столбец s 3 , разрешающая строка s 1 , s 1 выходит из базиса, s 3 входит в базис.

    симплекс-метод итерация 3

    Отношение

    В z-строке все коэффициенты неотрицательны, следовательно, получено оптимальное решение x 1 = 24, x 2 = 16, z max = 192.

    +
    - x 1 + x 2 - S 1 = 1
    x 1 3 x 2 + S 2 = 15
    - 2 x 1 + x 2 + S 3 = 4



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

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

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


    +
    - x 1 + x 2 - S 1 + R 1 = 1
    x 1 3 x 2 + S 2 = 15
    - 2 x 1 + x 2 + S 3 = 4

    x 1 = 0 x 2 = 0 S 1 = 0
    S 2 = 15 S 3 = 4 R 1 = 1
    => W = 1

    Шаг №1
    x 1 x 2 S 1 S 2 S 3 R 1 св. член Θ
    -1 1 -1 0 0 1 1 1: 1 = 1
    1 3 0 1 0 0 15 15: 3 = 5
    -2 1 0 0 1 0 4 4: 1 = 4
    1 -1 1 0 0 0 W - 1
    -1 1 -1 0 0 1 1
    4 0 3 1 0 -3 12
    -1 0 1 0 1 -1 3
    0 0 0 0 0 1 W - 0


    +
    - x 1 + x 2 - S 1 = 1
    4 x 1 3 S 1 + S 2 = 12
    - x 1 + S 1 + S 3 = 3



    Шаг №1
    x 1 x 2 S 1 S 2 S 3 св. член Θ
    -1 1 -1 0 0 1
    4 0 3 1 0 12 12: 4 = 3
    -1 0 1 0 1 3
    4 0 1 0 0 F - 1
    -1 1 -1 0 0 1
    1 0 3/4 1/4 0 3
    -1 0 1 0 1 3
    4 0 1 0 0 F - 1
    0 1 -1/4 1/4 0 4
    1 0 3/4 1/4 0 3
    0 0 7/4 1/4 1 6
    0 0 -2 -1 0 F - 13

    S 1 = 0 S 2 = 0
    x 1 = 3 x 2 = 4 S 3 = 6
    => F - 13 = 0 => F = 13
    Среди коэффициентов выделенной строки нет положительных. Следовательно, найдено наибольшее значение функции F.

    Для реализации трех групп товаров коммерческое предприятие располагает тремя видами ограниченных материально-денежных ресурсов в количестве b 1 = 240, b 2 = 200, b 3 = 160 единиц. При этом для продажи 1 группы товаров на 1 тыс. руб. товарооборота расходуется ресурса первого вида в количестве a 11 = 2 единицы, ресурса второго вида в количестве a 21 = 4 единицы, ресурса третьего вида в количестве a 31 = 4 единицы. Для продажи 2 и 3 групп товаров на 1 тыс. руб. товарооборота расходуется соответственно ресурса первого вида в количестве a 12 = 3, a 13 = 6 единицы, ресурса второго вида в количестве a 22 = 2, a 23 = 4 единицы, ресурса третьего вида в количестве a 32 = 6, a 33 = 8 единиц. Прибыль от продажи трех групп товаров на 1 тыс. руб. товарооборота составляет соответственно c 1 = 4, c 2 = 5, c 3 = 4 (тыс. руб.). Определить плановый объем и структуру товарооборота так, чтобы прибыль торгового предприятия была максимальной.

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

    Решение задачи симплекс методом

    Пусть x 1 , x 2 , x 3 - количество реализованных товаров, в тыс. руб., 1, 2, 3 - ей групп, соответственно. Тогда математическая модель задачи имеет вид:

    F = 4·x 1 + 5·x 2 + 4·x 3 ->max

    0}}}{~}" title="delim{lbrace}{matrix{4}{1}{{2x_1 + 3x_2 + 6x_3= 0}}}{~}">

    Решаем симплекс методом.

    Вводим дополнительные переменные x 4 ≥ 0, x 5 ≥ 0, x 6 ≥ 0, чтобы неравенства преобразовать в равенства.

    В качестве базиса возьмем x 4 = 240; x 5 = 200; x 6 = 160.

    Данные заносим в симплекс таблицу

    Симплекс таблица № 1

    Целевая функция:

    0 · 240 + 0 · 200 + 0 · 160 = 0

    Вычисляем оценки по формуле:

    Δ 1 = 0 · 2 + 0 · 4 + 0 · 4 - 4 = - 4
    Δ 2 = 0 · 3 + 0 · 2 + 0 · 6 - 5 = - 5
    Δ 3 = 0 · 6 + 0 · 4 + 0 · 8 - 4 = - 4
    Δ 4 = 0 · 1 + 0 · 0 + 0 · 0 - 0 = 0
    Δ 5 = 0 · 0 + 0 · 1 + 0 · 0 - 0 = 0
    Δ 6 = 0 · 0 + 0 · 0 + 0 · 1 - 0 = 0

    Поскольку есть отрицательные оценки, то план не оптимален. Наименьшая оценка:

    Вводим переменную x 2 в базис.

    Определяем переменную, выходящую из базиса. Для этого находим наименьшее неотрицательное отношение для столбца x 2 .

    = 26.667

    Наименьшее неотрицательное: Q 3 = 26.667. Выводим переменную x 6 из базиса

    3-ю строку делим на 6.
    Из 1-й строки вычитаем 3-ю строку, умноженную на 3
    Из 2-й строки вычитаем 3-ю строку, умноженную на 2


    Вычисляем:

    Получаем новую таблицу:

    Симплекс таблица № 2

    Целевая функция:

    0 · 160 + 0 · 440/3 + 5 · 80/3 = 400/3

    Вычисляем оценки по формуле:

    Δ 1 = 0 · 0 + 0 · 8/3 + 5 · 2/3 - 4 = - 2/3
    Δ 2 = 0 · 0 + 0 · 0 + 5 · 1 - 5 = 0
    Δ 3 = 0 · 2 + 0 · 4/3 + 5 · 4/3 - 4 = 8/3
    Δ 4 = 0 · 1 + 0 · 0 + 5 · 0 - 0 = 0
    Δ 5 = 0 · 0 + 0 · 1 + 5 · 0 - 0 = 0
    Δ 6 = 0 · (-1)/2 + 0 · (-1)/3 + 5 · 1/6 - 0 = 5/6

    Поскольку есть отрицательная оценка Δ 1 = - 2/3, то план не оптимален.

    Вводим переменную x 1 в базис.

    Определяем переменную, выходящую из базиса. Для этого находим наименьшее неотрицательное отношение для столбца x 1 .

    Наименьшее неотрицательное: Q 3 = 40. Выводим переменную x 2 из базиса

    3-ю строку делим на 2/3.
    Из 2-й строки вычитаем 3-ю строку, умноженную на 8/3


    Вычисляем:

    Получаем новую таблицу:

    Симплекс таблица № 3

    Целевая функция:

    0 · 160 + 0 · 40 + 4 · 40 = 160

    Вычисляем оценки по формуле:

    Δ 1 = 0 · 0 + 0 · 0 + 4 · 1 - 4 = 0
    Δ 2 = 0 · 0 + 0 · (-4) + 4 · 3/2 - 5 = 1
    Δ 3 = 0 · 2 + 0 · (-4) + 4 · 2 - 4 = 4
    Δ 4 = 0 · 1 + 0 · 0 + 4 · 0 - 0 = 0
    Δ 5 = 0 · 0 + 0 · 1 + 4 · 0 - 0 = 0
    Δ 6 = 0 · (-1)/2 + 0 · (-1) + 4 · 1/4 - 0 = 1

    Поскольку отрицательных оценок нет, то план оптимален.

    Решение задачи:

    Ответ

    x 1 = 40; x 2 = 0; x 3 = 0; x 4 = 160; x 5 = 40; x 6 = 0; F max = 160

    То есть необходимо реализовать товар первого вида в объеме 40 тыс. руб. Товар 2-го и 3-го видов реализовывать не надо. При этом максимальная прибыль составит F max = 160 тыс. руб.

    Решение двойственной задачи

    Двойственная задача имеет вид:

    Z = 240·y 1 + 200·y 2 + 160·y 3 ->min

    Title="delim{lbrace}{matrix{4}{1}{{2y_1 + 4y_2 + 4y_3>=4} {3y_1 + 2y_2 + 6y_3>=5} {6y_1 + 4y_2 + 8y_3>=4} {y_1, y_2, y_3>= 0}}}{~}">

    Вводим дополнительные переменные y 4 ≥ 0, y 5 ≥ 0, y 6 ≥ 0, чтобы неравенства преобразовать в равенства.

    Сопряженные пары переменных прямой и двойственной задач имеют вид:

    Из последней симплекс таблицы № 3 прямой задачи, находим решение двойственной задачи:

    Z min = F max = 160;
    y 1 = Δ 4 = 0; y 2 = Δ 5 = 0; y 3 = Δ 6 = 1; y 4 = Δ 1 = 0; y 5 = Δ 2 = 1; y 6 = Δ 3 = 4;

    Рассмотрим симплекс -метод для решения задач линейного программирования (ЛП). Он основан на переходе от одного опорного плана к другому, при котором значение целевой функции возрастает.

    Алгоритм симплекс-метода следующий:

    1. Исходную задачу переводим в канонический вид путем введения дополнительных переменных. Для неравенства вида ≤ дополнительные переменные вводят со знаком (+ ), если же вида ≥ то со знаком (— ). В целевую функцию дополнительные переменные вводят с соответствующими знаками с коэффициентом, равным 0 , т.к. целевая функция не должна при этом менять свой экономический смысл.
    2. Выписываются вектора P i из коэффициентов при переменных и столбца свободных членов. Этим действием определяется количество единичных векторов. Правило – единичных векторов должно быть столько, сколько неравенств в системе ограничений.
    3. После этого исходные данные вводятся в симплекс-таблицу. В базис вносятся единичные вектора, и исключая их из базиса, находят оптимальное решение . Коэффициенты целевой функции записывают с противоположным знаком.
    4. Признак оптимальности для задачи ЛП – решение оптимально, если в f – строке все коэффициенты положительны. Правило нахождения разрешающего столбца – просматривается f – строка и среди ее отрицательных элементов выбирается наименьшее. Вектор P i его содержащий становится разрешающим. Правило выбора разрешающего элемента – составляются отношения положительных элементов разрешающего столбца к элементам вектора Р 0 и то число, которое дает наименьшее отношение становится разрешающим элементом, относительно которого будет произведен пересчет симплекс-таблицы. Строка, содержащая этот элемент называется разрешающей строкой. Если в разрешающем столбце нет положительных элементов, то задача не имеет решения. После определения разрешающего элемента переходят к пересчету новой симплекс – таблицы.
    5. Правила заполнения новой симплекс – таблицы. На месте разрешающего элемента проставляют единицу, а другие элементы полагают равными 0 . Разрешающий вектор вносят в базис, из которого исключают соответствующий нулевой вектор, а остальные базисные вектора записывают без изменений. Элементы разрешающей строки делят на разрешающий элемент, а остальные элементы пересчитывают по правилу прямоугольников.
    6. Так поступают до тех пор, пока в f – строке все элементы не станут положительными.

    Рассмотрим решение задачи с использованием рассмотренного выше алгоритма.
    Дано:

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

    Составляем вектора:

    Заполняем симплекс – таблицу:

    :
    Пересчитаем первый элемент вектора Р 0 , для чего составляем прямоугольник из чисел: и получаем: .

    Аналогичные расчеты выполним для всех остальных элементов симплекс – таблицы:

    В полученном плане f – строка содержит один отрицательный элемент – (-5/3), вектора P 1 . Он содержит в своем столбце единственный положительный элемент, который и будет разрешающим элементом. Сделаем пересчет таблицы относительно этого элемента:

    Отсутствие отрицательных элементов в f – строке означает, что найден оптимальный план :
    F* = 36/5, Х = (12/5, 14/5, 8, 0, 0).

    Решение линейного программирования на заказ

    Заказать любые задания по этой дисциплине можно у нас на сайте. Прикрепить файлы и указать сроки можно на