- •Глава 4. Линейное программирование
- •4.1. Постановка задачи
- •В общем случае модель задачи лп имеет вид
- •4.2. Примеры задач линейного программирования
- •Задача составления рациона или как экономно питаться
- •4.2.2. Задача оптимального планирования
- •4.2.3. Сбалансированная транспортная задача
- •4.2.4. Общая распределительная задача
- •4.2.5. Задача планирования работы оборудования
- •4.2.6. Игра двух лиц с нулевой суммой как задача линейного программирования
- •4.2.7. Резюме
- •4.3. Формы записи задач линейного программирования и способы приведения к ним
- •4.3.1. Каноническая форма задач лп
- •4.3.2. Стандартная форма задачи лп
- •4.4. Упрощение модели
- •4.5. Основные понятия лп. Свойства задач лп
- •4.6. Геометрия задач лп
- •4.7. Выделение вершин допустимого множества
- •4.8. Методы решения задач лп
- •4.9. Симплекс-метод
- •4.9.1. Харатеристика метода
- •4.9.2. Переход от одного базисного решения к другому
- •4.9.3. Признак оптимальности. Основные этапы симплекс-метода
- •4.9.4. Построение начального базисного решения
- •4.9.5. Связь между параметрами последовательных итераций
- •4.9.6. Алгоритм симплекс-метода
- •4.9.7. Примеры
- •4.9.8. Учет двусторонних ограничений
- •4.10. Модифицированный алгоритм
- •4.11. Двойственность задач лп
- •4.11.1. Запись двойственной задачи в симметричном случае
- •4.11.2. Интерпретация двойственной задачи
- •4.11.3. Запись двойственной задачи в общем случае
- •4.11.4. Теоремы двойственности
- •4.11.5. Двойственный симплекс-метод
- •4.12. Параметрический анализ
- •4.12.1. Параметрирование вектора ограничениий
- •4.12.2. Параметрирование коэффициентов линейной формы
- •4.13. Задания для самостоятельной работы
4.11.5. Двойственный симплекс-метод
Метод был предложен Лемке в 1954 году. Первоначально он представлял собой обычный симплекс-метод, применяемый к двойственной задаче. Позднее метод приобрел самостоятельные черты, и необходимость в переходе к двойственной задаче отпала.
Можно сказать, что прямая задача решается двойственно: в начальном и последующих базисных решениях выполняются условия оптимальности (все оценки неотрицательны при максимизации), но вектор Х неположителен, а значит, недопустим. В разрешимой задаче итерации метода приводят к допустимому Х, который и будет оптимальным решением задачи.
Поэтому цикл начинается с анализа базисных переменных. Если все переменные неотрицательны, вычисления завершаются. Иначе выбирается направляющая сторока k по минимальной базисной переменной. Затем вычисляются значения :
для < 0. (4.40)
Эта формула получается аналогично выводу в прямом методе (разд.4.9.2), но применительно к двойственной задаче. Если в прямом методе формула следует из требования получения нового неотрицательногорешения, то здесь – из необходимости соблюсти в новом решенииусловия оптимальности.
При отсутствии в направляющей строке отрицательных kj констатируется неразрешимость задачи из-за противоречивости условий. Действительно, равенство с отрицательной правой частью и всеми неотрицательными коэффициентами при переменных в левой части не может быть удовлетворено неотрицателными переменными.
Направляющий столбец r определяется по минимальному . Далее текущая симплекс-таблица пересчитывается так же, как в прямом методе. В результате получается новое базисное решение, в котором, по крайней мере,xk станет неотрицательной.
Очевидно, что в разрешимой задаче такой алгоритм приведет к оптимальному решению за конечное число итераций.
Таким образом, двойственный метод отличается от прямого свойствами начального решения и правилами выбора направляющего элемента.
Пример 4.6. Пусть заготовки вырезаются из прямоугольных листов размером 510. Необходимо наилучшим образом выполнить заказ, включающий два вида прямоугольных заготовок: 650 штук размером 22.5 и 1300 – размером 34.
В качестве критерия возьмем расход материала (листов), а за переменные xj примем количество листов, раскраиваемыхj-м способом.
Все возможные карты раскроя показаны на рис.4.11. Каждой карте соответствует своя переменная и количество получаемых заготовок (в скобках).
Теперь можно записать модель задачи:
L=x1+x2+x3+x4 min
10x1+7x2+5x3+x4 650;
x2+2x3+3x4 1300;
xj 0.
Приведем условия к каноническому виду с помощью дополнительных переменных и затем умножим их на –1:
-10x1 - 7x2 - 5x3-x4 +x5 = - 650;
- x2 - 2x3 - 3x4 + x6 = -1300.
В качестве базисных возьмем переменные x5 и x6 и заполним начальную симплекс-таблицу:
-
Таблица 0
0
1
1
1
1
0
0
Csi
Базис
A0
A1
A2
A3
A4
A5
A6
0
x5
-650
-10
-7
-5
-1
1
0
0
x6
-1300
0
-1
-2
-3
0
1
L, Δj
0
-1
-1
-1
-1
0
0
Zj
0
0
0
0
0
0
0
--
--
1
1/2
1/3
--
--
Как видно из таблицы, начальное базисное решение является недопустимым (отрицательным), но удовлетворяет условиям оптимальности (Δj0). Поэтому последующие действия будут направлены на достижение допустимого решения при сохранении условий оптимальности.
В качестве направляющей берем строку с минимальной базисной переменной (x6= -1300).По формуле (4.40) вычисляем значения, минимальное из которых определяет направляющий столбец. Тем самым определен и направляющий элемент. Выполнив симплекс-преобразование, получаем новое базисное решение (табл. 1).
Таблица 1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 | |
Csi |
Базис |
A0 |
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
0 |
x5 |
-650/3 |
-10 |
-20/3 |
-13/3 |
0 |
1 |
-1/3 |
1 |
x4 |
1300/3 |
0 |
1/3 |
2/3 |
1 |
0 |
-1/3 |
L, Δj |
1300/3 |
-1 |
-2/3 |
-1/3 |
0 |
0 |
-1/3 | |
|
-- |
1/10 |
1/10 |
1/13 |
-- |
-- |
1 |
Так как в этом решении есть отрицательная переменная, проводим следующую итерацию, результаты которой представлены в табл. 2.
Таблица 2 |
0 |
1 |
1 |
1 |
1 |
0 |
0 | |
Csi |
Базис |
A0 |
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
1 |
x3 |
50 |
30/13 |
20/13 |
1 |
0 |
-3/13 |
1/13 |
1 |
x4 |
400 |
-20/13 |
-9/13 |
0 |
1 |
2/13 |
-5/13 |
L, Δj |
450 |
-3/13 |
-2/13 |
0 |
0 |
-1/13 |
-4/13 |
Здесь базисные переменные положительны, значит, решение допустимое. Условия оптимальности, как и в предыдущих решениях, выполняюся. Таким образом, в табл. 2 имеем оптимальное решение задачи раскроя: