Для связи в whatsapp +905441085890

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

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

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

найти минимум функции

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

при условиях

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

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

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

выбираем Симплекс-метод — основной метод решения задач линейного программирования столбцов и решаем систему из Симплекс-метод — основной метод решения задач линейного программирования уравнений с Симплекс-метод — основной метод решения задач линейного программирования неизвестными. Такой метод требует решения

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

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

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

минимизировать

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

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

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

Определитель, составленный из коэффициентов при неизвестных

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

имеет вид

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

и не равен нулю. Поэтому ранг матрицы ограничений равен 3, базисные переменные — Симплекс-метод — основной метод решения задач линейного программирования, а свободные переменные — Симплекс-метод — основной метод решения задач линейного программирования. Выразим базисные переменные через свободные:

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

Базисное решение (при нулевых значениях свободных переменных Симплекс-метод — основной метод решения задач линейного программирования и Симплекс-метод — основной метод решения задач линейного программирования) в данном случае имеет вид

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

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

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

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

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

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

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

из второго

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

из третьего

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

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

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

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

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

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

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

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

Эти ограничения в Симплекс-метод — основной метод решения задач линейного программирования-мерном пространстве определяют симплекс. Симплекс трехмерного пространства изображен на рис. 2.1. Рассмотрим неравенство Симплекс-метод — основной метод решения задач линейного программирования при условиях Симплекс-метод — основной метод решения задач линейного программирования. Область решения этого неравенства показана на рис. 2.2. Данное неравенство можно преобразовать в уравнение введением слабой переменной Симплекс-метод — основной метод решения задач линейного программирования. Тогда получим систему

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

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

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

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

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

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

Пусть система ограничений исходной задачи записана в следующем виде:

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

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

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

и рассмотрим новую целевую функцию

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

Допустимое решение для задачи (а), (б) сразу задано решения задачи возможны следующие случаи:

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

2) Симплекс-метод — основной метод решения задач линейного программирования — система ограничений исходной задачи несовместна.

В первом случае можно отметить две особенности:

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

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

Эта теория взята со страницы лекций по предмету «математическое программирование»:

Предмет математическое программирование

Возможно эти страницы вам будут полезны:

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