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

    Рассмотрен пример решения задачи симплекс методом, а также пример решения двойственной задачи.

    Условие задачи

    Для реализации трех групп товаров коммерческое предприятие располагает тремя видами ограниченных материально-денежных ресурсов в количестве 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;

    +
    - 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.

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

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

    Исходные данные задачи на симплекс-метод

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

    Нормы времени (мин./шт.) на обработку изделий на станках, заданы матрицей A:

    Фонд времени работы станков (мин.) задан в матрице B:

    Прибыль от продажи каждой единицы изделия (руб./шт.) задана матрицей C:

    Цель производственной задачи

    Составить такой план производства, при котором прибыль предприятия будет максимальной.

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

    (1) Обозначим X1, X2, X3, X4 планируемое количество изделий каждого вида. Тогда искомый план: (X1, X2, X3, X4 )

    (2) Запишем ограничения плана в виде системы уравнений:

    (3) Тогда целевая прибыль:

    То есть прибыль от выполнения производственного плана должна быть максимальной.

    (4) Для решения получившейся задачи на условный экстремум, заменим систему неравенств системой линейных уравнений путем ввода в нее дополнительных неотрицательных переменных (X5, X6, X7 ).

    (5) Примем следующий опорный план :

    X1 = 0, X2 = 0, X3 = 0, X4 = 0, X5 = 252, X6 = 144, X7 = 80

    (6) Занесем данные в симплекс-таблицу :

    В последнюю строку заносим коэффициенты при целевой функции и само ее значение с обратным знаком;

    (7) Выбираем в последней строке наибольшее (по модулю ) отрицательное число.

    Вычислим b = Н / Элементы_выбранного_столбца

    Среди вычисленных значений b выбираем наименьшее .

    Пересечение выбранных столбца и строки даст нам разрешающий элемент. Меняем базис на переменную соответствующую разрешающему элементу (X5 на X1 ).

    • Сам разрешающий элемент обращается в 1.
    • Для элементов разрешающей строки – a ij (*) = a ij / РЭ (то есть каждый элемент делим на значение разрешающего элемента и получаем новые данные ).
    • Для элементов разрешающего столбца – они просто обнуляются.
    • Остальные элементы таблицы пересчитываем по правилу прямоугольника.

    a ij (*) = a ij – (A * B / РЭ)

    Как видите, мы берем текущую пересчитываемую ячейку и ячейку с разрешающим элементом. Они образуют противоположные углы прямоугольника. Далее перемножаем значения из ячеек 2-х других углов этого прямоугольника. Это произведение (A * B ) делим на разрешающий элемент (РЭ ). И вычитаем из текущей пересчитываемой ячейки (a ij ) то, что получилось. Получаем новое значение - a ij (*) .

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

    Так как у нас в последней строке снова имеются отрицательные числа, начинаем новую итерацию вычислений.

    (10) Так как в последней строке нет отрицательных элементов, это означает, что нами найден оптимальный план производства! А именно: выпускать мы будем те изделия, которые перешли в колонку «Базис» - X1 и X2. Прибыль от производства каждой единицы продукции нам известна (матрица C ). Осталось перемножить найденные объемы выпуска изделий 1 и 2 с прибылью на 1 шт., получим итоговую (максимальную! ) прибыль при данном плане производства.

    ОТВЕТ:

    X1 = 32 шт., X2 = 20 шт., X3 = 0 шт., X4 = 0 шт.

    P = 48 * 32 + 33 * 20 = 2 196 руб.

    Галяутдинов Р.Р.


    © Копирование материала допустимо только при указании прямой гиперссылки на

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

    Основное содержание симплексного метода заключается в следующем:
    1. Указать способ нахождения оптимального опорного решения
    2. Указать способ перехода от одного опорного решения к другому, на котором значение целевой функции будет ближе к оптимальному, т.е. указать способ улучшения опорного решения
    3. Задать критерии, которые позволяют своевременно прекратить перебор опорных решений на оптимальном решении или следать заключение об отсутствии оптимального решения.

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

    Для того, чтобы решить задачу симплексным методом необходимо выполнить следующее:
    1. Привести задачу к каноническому виду
    2. Найти начальное опорное решение с "единичным базисом" (если опорное решение отсутствует, то задача не имеет решение ввиду несовместимости системы ограничений)
    3. Вычислить оценки разложений векторов по базису опорного решения и заполнить таблицу симплексного метода
    4. Если выполняется признак единственности оптимального решения, то решение задачи заканчивается
    5. Если выполняется условие существования множества оптимальных решений, то путем простого перебора находят все оптимальные решения

    Пример решения задачи симплексным методом

    Пример 26.1

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

    Решение:

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

    Для этого в левую часть первого ограничения-неравенства вводим дополнительную переменную x 6 с коэффициентом +1. В целевую функцию переменная x 6 входит с коэффицентом ноль (т.е. не входит).

    Получаем:

    Находим начальное опорное решение. Для этого свободные (неразрешенные) переменные приравниваем к нулю х1 = х2 = х3 = 0.

    Получаем опорное решение Х1 = (0,0,0,24,30,6) с единичным базисом Б1 = (А4, А5, А6).

    Вычисляем оценки разложений векторов условий по базису опорного решения по формуле:

    Δ k = C б X k — c k

    • C б = (с 1 , с 2 , ... , с m) — вектор коэффициентов целевой функции при базисных переменных
    • X k = (x 1k , x 2k , ... , x mk) — вектор разложения соответствующего вектора А к по базису опорного решения
    • С к — коэффициент целевой функции при переменной х к.

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

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

    В последней строке таблицы с оценками Δ k в столбце "А 0 " записываются значения целевой функции на опорном решении Z(X 1).

    Начальное опорное решение не является оптимальным, так как в задаче на максимум оценки Δ 1 = -2, Δ 3 = -9 для векторов А 1 и А 3 отрицательные.

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

    Определим, введение какого из двух векторов приведет к большему приращению целевой функции.

    Приращение целевой функции находится по формуле: .

    Вычисляем значения параметра θ 01 для первого и третьего столбцов по формуле:

    Получаем θ 01 = 6 при l = 1, θ 03 = 3 при l = 1 (таблица 26.1).

    Находим приращение целевой функции при введении в базис первого вектора ΔZ 1 = — 6*(- 2) = 12, и третьего вектора ΔZ 3 = — 3*(- 9) = 27.

    Следовательно, для более быстрого приближения к оптимальному решению необходимо ввести в базис опорного решения вектор А3 вместо первого вектора базиса А6, так как минимум параметра θ 03 достигается в первой строке (l = 1).

    Производим преобразование Жордана с элементом Х13 = 2, получаем второе опорное решение Х2 = (0,0,3,21,42,0) с базисом Б2 = (А3, А4, А5). (таблица 26.2)

    Это решение не является оптимальным, так как вектор А2 имеет отрицательную оценку Δ2 = — 6. Для улучшение решения необходимо ввести вектор А2 в базис опорного решения.

    Определяем номер вектора, выводимого из базиса. Для этого вычисляем параметр θ 02 для второго столбца, он равен 7 при l = 2. Следовательно, из базиса выводим второй вектор базиса А4. Производим преобразование Жордана с элементом х 22 = 3, получаем третье опорное решение Х3 = (0,7,10,0,63,0) Б2 = (А3, А2, А5) (таблица 26.3).

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

    Δ 1 = 7/2, Δ 4 = 2, Δ 6 = 7/2.

    Ответ: max Z(X) = 201 при Х = (0,7,10,0,63).

    Метод линейного программирования в экономическом анализе

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

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

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

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

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

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

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

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

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

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

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

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

    Лекция 3. Симплексные таблицы. Алгоритм симплексного метода.

    § 3 СИМПЛЕКСНЫЙ МЕТОД

    3.1. Общая идея симплекс–метода. Геометрическая интерпретация

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

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

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

    Идея последовательного улучшения решения легла в основу универсального метода решения задач линейного программирова­ния – симплексного метода или метода последовательного улучшения плана.

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

    Впервые симплексный метод был предложен американским ученым Дж. Данцигом в 1949 г., однако еще в 1939 г. идеи метода были разработаны российским ученым Л.В. Канторовичем.

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

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

    способ определения какого-либо первоначального допустимого базисного решения задачи;

    правило перехода к лучшему (точнее, не худшему) решению;

    критерий проверки оптимальности найденного решения.

    Для использования симплексного метода задача линейного программирования должна быть приведена к каноническому виду, т.е. система ограничений должна быть представлена в виде урав­нений.

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

    3.2. Алгоритм симплекс–метода.

    Рассмотрим решение ЗЛП симплекс-ме­тодом и изложим ее применительно к задаче максимизации.

    1. По условию задачи составляется ее математическая мо­дель.

    2. Составленная модель преобразовывается к канонической форме. При этом может выделиться базис с начальным опорным планом.

    3. Каноническая модель задачи записывается в форме симп­лекс-таблицы так, чтобы все свободные члены были неотрицатель­ными. Если начальный опорный план выделен, то переходят к пункту 5.

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

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

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

    5. Найденный начальный опорный план исследуется на опти­мальность:

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

    б) если в
    –строке есть хотя бы один отрицательный элемент, которому соответствует столбец неположительных элементов, то
    ;

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

    Столбец коэффициентов при переменной, включаемой в базис, называют разрешаю­щим. Таким образом, выбирая переменную, вводимую в базис (или выбирая разрешающий столбец) по отрицательному эле­менту
    –строки, мы обеспечиваем возрастание функции
    .

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

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

    1) просматривают строку, отвечающую какому-либо отрица­тельному свободному члену, например –строку, и выбирают в ней какой-либо отрицательный элемент, а соответствующий ему стол­бец принимают за разрешающий (предполагаем, что ограничения задачи совместны);

    2) составляют отношения элементов столбца свободных чле­нов к соответствующим элементам разрешающего столбца, имею­щим одинаковые знаки (симплексные отношения);

    3) из симплексных отношений выбирают наименьшее. Оно и определит разрешающую строку. Пусть ею будет, например, р –строка;

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

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