Алгоритм прямого симплексного метода

advertisement
Алгоритм прямого симплексного метода
Дополнение к лекциям по курсу «Методы оптимальных решений»
для студентов экономических специальностей, 2012–2013 у. г., II курс
Караваев Артём Михайлович 1
Прямой симплексный метод предназначен для решения задачи линейного программирования вида
cx → min
Ax = b
x>0
Пусть выполнены следующие условия:
1. задача ЛП имеет канонический вид;
2. вектор свободных членов (b) неотрицателен;
3. Матрица A содержит единичную подматрицу (имеется начальное допустимое базисное решение).
Тогда можно построить начальную симплексную таблицу:
cB
Базис
xB
z
БДР
b
∆0
c1
x1
∆1
···
···
A
∆2 · · ·
c2
x2
cn
xn
∆n
Элементы ∆j , называемые оценками, вычисляются по формуле2
∆0 = cB · b,
∆j = cB · Aj − cj .
Оценка ∆0 равна текущему значению целевой функции.
Элементы вектора cB содержат коэффициенты целевой функции, соответствующие
базисным переменным.
Столбец «Базис» содержит названия текущих базисных переменных (в правильном
порядке). Столбец «БДР» показывает текущее значение базисных переменных, при которых достигается текущее значение целевой функции. В конце работы алгоритма в
этом столбце будет содержаться ответ.
1 http://www.karavaev.me
2A
j
— j-й столбец матрицы A.
2
Алгоритм ПСМ
Aлгоритм прямого симплексного метода
Шаг 0 Построить начальную симплексную таблицу. В столбце «Базис» записать базисные
переменные в правильном порядке. Вычислить оценки. Перейти на шаг 1.
Шаг 1 Проверить оценки ∆1 , ∆2 , . . . , ∆n . Если все оценки меньше либо равны 0, то найдено оптимальное решение. Перейти на шаг 5.
Среди положительных оценок найти максимальную и столбец, соответствующий
выбранной оценке, объявить ведущим (s). Перейти на шаг 2.
Шаг 2 Просмотреть элементы s-го столбца, если все они меньше либо равны нулю, то целевая функция неограниченна (нет оптимального решения), перейти на шаг 5.
Иначе, перейти на шаг 3.
Шаг 3 Для положительных элементов s-го столбца найти строчку r в которой симплексное отношение br /ars принимает минимальное значение. Объявить строку r ведущей. Перейти на шаг 4.
Шаг 4 На пересечении ведущего столбца и ведущей строки обозначить ведущий элемент.
Нарисовать новую симплексную таблицу. На месте элемента xr в столбце «базис»
поставить элемент xs и с помощью преобразования Жордана — Гаусса пересчитать
всю таблицу (в том числе оценки и столбец БДР). Перейти на шаг 1.
Шаг 5 Конец алгоритма.
Пример
1x1 + 2x2 + 0x3 + 3x4 → min
1x1 + 0x2 + 2x3 + 1x4 = 4
4x1 + 1x2 + 6x3 + 0x4 = 14
x1 , x2 , x3 , x4 > 0
Построили начальную симплексную таблицу. Выбрали ведущий столбец s = 3 (максимальная оценка ∆3 = 18). Вычислили симплексные отношения (справа) и выбрали
минимальное для r = 4 (x4 ).
1 2
0
3
Базис БДР x1 x2 x3 x4
3
x4
4
1 0
2
1
2
2
x2
14
4 1
6
0 7/3
z
40
10 0 18 0
Базис
x3
x2
z
Базис
x3
x1
z
БДР
2
2
4
БДР
1
2
2
x1
1/2
1
1
x1
0
1
0
x2
0
1
0
x3
1
0
0
x2
-1/2
1
-1
x4
1/2
-3
-9
x3
1
0
0
4
2
x4
2
-3
-6
Найдено оптимальное решение: z = 2, x1 = 2, x2 = 0, x3 = 1, x4 = 0.
Download