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

Наиболее простым и распространенным методом решения канонической задачи линейного программирования до сих пор является симплекс-метод, предложенный в 40-е годы прошлого века Дж. Данцигом. Геометрически идею симплекс-метода в упрощенной форме можно выразить следующим образом. Допустимым множеством в задаче линейного программирования является некоторое многогранное множество и-мерного векторного пространства (в частном случае n = 2 - это выпуклый и не обязательно ограниченный многоугольник). Работа симплекс-метода начинается с некоторой начальной вершины (начального опорного плана) многогранного множества. Специальным образом выясняется, нет ли среди соседних вершин такой, в которой значение целевой функции лучше? Если такая вершина находится, то она и принимается за следующее приближение. После этого вновь исследуются соседние вершины для полученного приближения и т. д. до тех пор, пока не будет получена вершина, среди соседних вершин которой не существует вершины с лучшим значением целевой функции. Такая вершина является оптимальной. Она соответствует оптимальной точке (оптимальному решению) задачи линейного программирования.

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

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

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

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

Решение задачи при помощи симплекс-метода распадается на ряд шагов. В каждой вершине многогранника будет m ненулевых координат, которые образуют базис. Остальные (n-m) координат входят в набор небазисных (свободных) переменных. На каждом k-м шаге от данного базиса Бk переходят к другому, новому базису Бk+1 с таким расчетом, чтобы значение функции f(x) увеличивалось, т. е. fБk+1≥fБk. Для перехода к новому базису из старого базиса удаляется одна из переменных и вместо нее вводится другая из числа свободных. После конечного числа шагов находится некоторый базис Бk* , для которого fБ(k*) есть искомый максимум для линейной функции f, а соответствующее базисное решение является оптимальным либо выясняется, что задача не имеет решения.

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

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

Решение задач линейного программирования - student2.ru

и ограничения

Решение задач линейного программирования - student2.ru

Решение задач линейного программирования - student2.ru , Решение задач линейного программирования - student2.ru

Переобозначим свободные коэффициенты ограничений aj0=bj. Приведем матрицу ограничений к каноническому виду:

Решение задач линейного программирования - student2.ru (2.4)

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

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

По последней системе ограничений и целевой функции в каноническом виде построим симплекс-таблицу.

Таблица 4.1. Симплекс-таблица

  С С1 С2 С3 Сj Cn
Bx A0 A1 A2 A3 Aj An An+1 An+m
xn+1 a10 a11 a12 a13 a1j a1n
xn+2 a20 a21 a22 a23 a2j a2n
 
xn+i ai0 ai1 ai2 ai3 aij ain
 
xn+m am0 am1 am2 am3 amj amn
L a00 a01 a02 a03 a0j a0n a0m+1 a0m+n

Все дальнейшие преобразования связаны с изменением содержания этой таблицы.

Нижняя строка элементов аок, к = 0,…,m+п называется индексной. Элементы индексной строки вычисляются следующим образом:

Решение задач линейного программирования - student2.ru означает номер соответствующей строки.

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

Элемент а00 равен значению целевой функции, которое вычисляется по формуле Решение задач линейного программирования - student2.ru - номер базисной переменной (индексация идет по строкам таблицы).

В столбце Вх записываются базисные переменные, на первом шаге в качестве базисных выбирают фиктивные переменные {хп+к }, к =1,…,n. В дальнейшем фиктивные переменные необходимо вывести из базиса.

В столбец С записываются коэффициенты при хп+к,; на первом шаге значения этих коэффициентов равны нулю.

Далее выполняются преобразования в соответствии с алгоритмом симплекс -метода.

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

Этап 1. Находится начальное допустимое базисное решение

Этап 2. На основе условия оптимальности определяется вводимая переменная. Если вводимых переменных нет, вычисления заканчиваются.

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

Этап 3. На основе условия допустимости выбирается исключаемая переменная.

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

3.2. На пересечении разрешающей строки и разрешающего столбца находится разрешающий элемент.

3.3. Если имеется несколько одинаковых по величине симплекс-отношений, то выбирают любое из них. То же самое относится к элементам последней строки симплекс-таблицы.

Этап 4. Методом Гаусса - Жордана вычисляется новое базисное решение. Переход к этапу 1.

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

4.2. Вычисление элементов новой таблицы выполняется так.

Новая ведущая строка =текущая разрешающая строка / разрешающий элемент.

Для элементов остальных строк:

Новая строка = текущая строка – ее коэффициент в разрешающем столбце ×новая разрешающая строка.

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


Наши рекомендации