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

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

    Основное содержание симплексного метода заключается в следующем:
    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).

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

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

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

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

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

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

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

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

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

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

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

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

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

    Шаг 0. Подготовительный этап.

    Приводим задачу ЛП к специальной форме (15).

    Шаг 1. Составляем симплекс-таблицу , соответствующую специальной форме:

    Заметим, что этой таблице соответствует допустимое базисное решение
    задачи (15). Значение целевой функции на этом решении

    Шаг 2. Проверка на оптимальность

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

    Шаг 3. Проверка на неразрешимость

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

    Шаг 4. Выбор ведущего столбца q

    Среди элементов
    выбираем максимальный положительный элемент
    .Этот столбец объявляем ведущим (разрешающим).

    Шаг 5. Выбор ведущей строки p

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

    .

    Строку p объявляем ведущей (разрешающей). Элемент
    объявляем ведущим (разрешающим).

    Шаг 6. Преобразование симплексной таблицы

    Составляем новую симплекс-таблицу, в которой:

    а) вместо базисной переменной записываем, вместо небазисной пере меннойзаписываем;

    б) ведущий элемент заменяем обратной величиной
    ;

    в) все элементы ведущего столбца (кроме
    ) умножаем на
    ;

    г) все элементы ведущей строки (кроме
    ) умножаем на;

    д) оставшиеся элементы симплексной таблицы преобразуются по следующей схеме «прямоугольника».

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

    первый – соответствующий элемент ведущего столбца;

    второй – соответствующий элемент ведущей строки;

    третий – обратная величина ведущего элемента
    .

    Преобразуемый элемент и соответствующие ему три сомножителя как раз и являются вершинами «прямоугольника».

    Шаг 7. Переход к следующей итерации осуществляется возвратом к шагу 2.

    2.3. Алгоритм симплекс-метода для задачи на максимум

    Алгоритм симплекс-метода для задачи на максимум отличается от алгоритма для задачи на минимум только знаками индексной строки коэффициентов в целевой функции
    , а именно:

    На шаге 2:
    :

    На шаге 3
    . Целевая функция является неограниченной сверху на допустимом множестве.

    На шаге 4 :
    .

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

    Решить задачу, записанную в виде (15).

    Составим симплексную таблицу:

    Так как коэффициенты строки целевой функции неотрицательны, то начальное базисное решение не является оптимальным. Значение целевой функции для этого базисаL=0.

    Выбираем ведущий столбец – это столбец, соответствующий переменной .

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

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

    Одна итерация метода завершена. Переходим к новой итерации. Полученная таблица неоптимальная. Базисное решение, соответствующее таблице, имеет вид . Значение целевой функции на этом базисеL= -2 .

    Ведущий столбец здесь – столбец, соответствующий переменной . Ведущая строка – строка, соответствующая переменной. После проведения преобразований получим симплексную таблицу:

    Еще одна итерация завершена. Переходим к новой итерации.

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

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

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

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

    • Ашманов С. А. Линейное программирование, М: Наука, 1998г.,
    • Вентцель Е.С. Исследование операций, М: Советское радио, 2001г.,
    • Кузнецов Ю.Н., Кузубов В.И., Волошенко А.Б. Математическое программирование, М: Высшая школа, 1986г.

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

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