
- •Часть II
- •Глава 6
- •6.1. Понятие оптимального выбора
- •6.2. Задача оптимального выбора
- •6.3. Классификация задач и методов оптимального выбора
- •Глава 7
- •7.1. Выбор в условиях определенности
- •7.2. Задача управления запасами
- •7.3. Математическое программирование
- •7.4. Задача линейного программирования
- •7.5. Геометрический метод решения задачи линейного программирования
- •7.6. Симплексный метод решения задачи линейного программирования
- •Глава 8
- •8.1. Оптимальный выбор по многим критериям
- •8.2. Построение множества эффективных вариантов
- •1. Последовательное сравнение критериев по важности. Лпр упорядочивает все критерии по предпочтительности, допустим, и каждому критерию fk приписы
7.6. Симплексный метод решения задачи линейного программирования
Еще одним общим методом решения задач линейного программирования является симплексный метод (симплекс-метод), или метод последовательного улучшения оценок, разработанный Дж. Данцигом (США, 1947).
Геометрическая идея этого метода проста и состоит в следующем. Пусть имеется п переменных х1, х2, ..., хп и р < n ограничений. Область допустимых решений, задаваемая ограничениями, представляет собой выпуклый многогранник. Если задача линейного программирования имеет оптимальное решение х*, то оно совпадает с опорной точкой, являющейся одной из вершин многогранника, где, по крайней мере, к = п — р переменных равны нулю. Симплекс-метод заключается в таком направленном переборе вершин многогранника, при котором значение целевой функции возрастает от одной вершины к другой. Переходя последовательно из одной опорной точки в другую (изменяя переменные) и постепенно улучшая решение, находим оптимальное. Каждой вершине соответствует система уравнений, выбираемых специальным образом из ограничений.
Поясним идею симплекс-метода на примере.
П
ример
7.4• Требуется
минимизировать значение линейной
функции
1. Приведем задачу линейного
программирования к стандартной
форме. Заменим критерий оптимальности
и введем
дополнительные переменные
в которой имеется n = 7 неотрицательных переменных x1, х2, хз, x4, v1, v2, v3 и р = 3 уравнений-ограничений (7.8). Число свободных переменных к = п — р = 4. Переменные х2, Х4, v1, v2, v3 входят в функцию у' с нулевыми коэффициентами.
Выберем переменные х1,х2,хз,х4 в качестве свободных и выразим все остальные переменные через них. Эти уравнения (7.8) для переменных v1, v2, v3 записаны выше.
Положим все свободные переменные равными нулю: х1 = Х2 = хз = Х4 = 0. Тогда из уравнений (7.8) имеем v1= 2, v2 .= 5, V3 = 7. Получаем опорное решение, для которого у' = 0. Проверим, является ли это значение у' оптимальным.
Если бы в выражении для критерия оптимальности у' все коэффициенты при переменных Хi были отрицательными, то увеличить значение у', повышая значения переменных хi, было бы нельзя. И сразу получили бы оптимальное значение у' *. Однако в выражении для функции у' коэффициент при переменной х3 положителен. Поэтому, повышая значение х3 и переходя к другому опорному решению, можно увеличить и значение у'.
Попробуем увеличить значение переменной Х3. Но для переменных v1 и v2 этого делать не следует. Как видно из уравнений (7.8), в выражениях для v1 и v2 коэффициенты при переменной х3 отрицательны. Поэтому с увеличением значения переменной х3 переменные v1 и v2 тоже могут стать отрицательными, что противоречит условию неотрицательности всех переменных.
Если в выражениях для v1 и v2 коэффициенты при переменной х3 не были бы отрицательными, то значения переменной х3 можно было бы увеличивать беспредельно. В этом случае оптимальное решение не существует.
Выясним, какую из переменных можно сделать свободной, считая по-прежнему, что x1 = Х2 = Х4 = 0. Из уравнений (7.8)
следует, что v1 = 0 при хз = 1, a v2 = 0 при x3= 5. Таким образом, переменная v1 обращается в нуль при меньшем значении x3. Переменная v1 и будет наиболее подходящим кандидатом на роль свободной переменной.
Сделаем v1 новой свободной переменной, а переменную х3 — базисной. Выразим критерий оптимальности у' и новые базисные переменные Х3, v2, V3 через новые свободные переменные x1,x2,v1,x4:
Если бы в выражении для критерия оптимальности у' все коэффициенты при переменных были отрицательными, то имели бы оптимальное значение у'*. Но это не так.
Поэтому положим все свободные переменные равными нулю: x1 = Х2 = v1 = Х4 = 0. Тогда из уравнений (7.9) имеем хз = 1,v2 = 4, v3 = 7. Получаем новое опорное решение, для которого у' = 2. Значение критерия оптимальности (у' = 2) стало уже больше, чем было (у' = 0). Но это еще не оптимальное значение у'*, так как в выражении для функции у' коэффициент при переменной х2 положителен. Если увеличивать значение х2, то будет повышаться и значение у'.
Начнем увеличивать значение переменной х2. Получаем новый цикл. Выясним, какую из переменных можно сделать свободной, считая, что x1 = v1 = Х4 = 0. Наиболее подходящим кандидатом на роль свободной переменной является только одна переменная v2, так как в уравнениях (7.9) переменная х2 входит с отрицательным коэффициентом только в выражение для v2. Поэтому переменная v2 может стать отрицательной при увеличении значения переменной х2. Из уравнений (7.9) следует, что v2 = 0 при х2 = 8.
Сделаем v2 новой свободной переменной, а переменную Х2 — базисной. Выразим критерий оптимальности у1 и новые базисные переменные Х3, Х2, V3 через новые свободные переменные x1, v2, v1, x4:
9. Положим все свободные переменные равными нулю: х1 = = v1= V2 = x4 = 0. Тогда из уравнений (7.10) имеем хз = 5, Х2 = 8, vз = 7. Получаем новое опорное решение, для которого у' = 10. Это решение уже является оптимальным, так как в выражении для критерия оптимальности у' все коэффициенты при переменных отрицательны, а значит, нельзя увеличить значение функции у', повышая значения свободных переменных. Итак, получено следующее оптимальное решение:
Вычислительная процедура симплекс-метода носит итеративный характер и состоит в последовательном решении однотипных систем линейных алгебраических уравнений. Процедура повторяется до тех пор, пока не будет получено оптимальное решение. Метод позволяет также определить число оптимальных вариантов решения и провести анализ чувствительности результата к изменению коэффициентов целевой функции.
Симплекс-метод является вычислительным методом решения задачи линейного программирования, обеспечивающим нахождение оптимального решения за конечное число шагов при произвольном числе свободных переменных. Простота алгоритма делает симплекс-метод удобным для реализации на ЭВМ. Симп- лекс-метод входит во многие современные пакеты прикладных программ.
7.7. Двойственная задача линейного программирования
Изучение свойств задач линейного программирования опирается на теорию двойственности. Напомним, что задачей линейного программирования, которую также называют прямой, является максимизация значения функции (7.4):
Пример 7.5. Обратимся к задаче оптимального планирования производства из примера 7.1. В прямой задаче (7.4) требовалось определить, какой объем Хi каждого вида изделий надо произвести, чтобы при заданных ограничениях на величину bq затрат ресурсов и цене ci единицы i-го вида продукции получить максимальный доход у* = шах у от продажи выпущенной продукции. Двойственная задача имеет следующий смысл. В выражении (7.11) переменная uq > 0, q = 1, ...p обозначает цену единицы используемого q-го вида ресурсов, bq — имеющиеся запасы q-го вида ресурсов, aqi — затраты g-го вида ресурсов на выпуск единицы i-го вида изделий, Сi — цену i-го вида изделий. Вариантом планирования производства является распределение
u =(u1,…,uq) цен используемых видов ресурсов.
Стоимость ресурсов, затраченных на производство i-ro изделия
не может быть меньше цены ci изделия. Общие расходы на выпуск продукции составляют
. Требуется найти
такие оптимальные цены
различных видов ресурсов, чтобы при заданных ограничениях на величины bq имеющихся запасов; ресурсов и цены ci изделий общие расходы на выпуск продукции были минимальны z* = min z. ■
Связь прямой и двойственной
задач состоит в том, что решение одной
из них может быть получено из решения
другой. Как видно из соотношений (7.4) и
(7.11), в прямой и двойственной задачах
линейного программирования используется
одна и та же матрица затрат
.
Коэффициенты
ci
целе вой
функции
у в исходной
задаче являются свободными членами
ограничений в двойственной задаче, а
свободные члены
bq
ограничений
в исходной задаче являются коэффициентами
целевой функции z в
двойственной задаче. Теоретически
доказано, что прямая и двойственная
задачи линейного программирования
либо обе неразрешимы, либо обе имеют
решение, причем значения целевых функций
для оптимальных решений совпадают:
Если целевая функция одной из за дач
линейного программирования не ограничена,
то другая задача не имеет решения.
Для задач линейного программирования разработано большое количество методов решения. Часто используется двойственный симплексный метод, с помощью которого решение прямой задачи получают при решении двойственной задачи. Для решения задач большой размерности, возникающих при моделировании реальных ситуаций, применяются методы декомпозиции, где система ограничений разбивается на ряд подсистем и для каждой из подсистем решается подзадача линейного программирования меньшей размерности. В итеративных асимптотических методах решение ищется путем последовательных приближений к оптимальному.
В реальных задачах исходная информация обычно известна лишь с некоторой точностью. Поэтому даже небольшие погрешности в исходных данных могут вызывать неустойчивость результатов. Кроме того, при численном решении задач большой размерности возникают ошибки округления данных, накопление которых также может приводить к заметным отклонениям в результатах. Для обеспечения устойчивости результатов в методах решения задач линейного программирования используют специальные процедуры регуляризации.
\