
- •Системный анализ и принятие решений
- •14.1. Постановка задачи 87
- •Лекция 1. Введение в методологию системного анализа
- •1.1. Предмет и содержание курса. Основные определения
- •1.2. Классификация систем
- •1.3. Сущность системного подхода
- •Лекция 2. Задачи системного анализа
- •2.1. Характеристика задач системного анализа
- •Внедрение результатов анализа.
- •2.2. Основные приемы формализации задач системного анализа
- •2.3. Внедрение результатов анализа
- •2.4. Примеры задач системного анализа
- •Методика по Оптнеру
- •Лекция 3. Основные понятия и определения теории принятия решений
- •3.1. Основные принципы теории принятия решений
- •3.2. Постановка задач принятия оптимальных решений
- •3.3. Этапы принятия решений
- •Лекция 4. Построение (выбор) моделей системы
- •4.1. Классификация видов моделирования систем
- •4.2. Возможности и эффективность моделирования систем на вычислительных машинах
- •Лекция 5. Математическое программирование
- •5.1. Структура оптимизационных задач
- •5.2. Математические постановки задач, приводящие к моделям линейного программирования
- •Лекция 6. Содержательные постановки задач линейного программирования. Методы решения задач линейного программирования
- •6.1. Содержательные постановки задач, приводящие к моделям линейного программирования.
- •6.2. Численные методы математического программирования
- •Лекция 7. Решение задач линейного программирования симплекс-методом
- •Симплекс-таблица
- •Лекция 8. Двойственная задача линейного программирования
- •Лекция 9. Транспортные задачи линейного программирования
- •9.1. Постановка задачи
- •9.2. Методы составления начального опорного плана
- •9.3. Понятие потенциала и цикла
- •9.4. Критерий оптимальности базисного решения транспортной задачи. Методы отыскания оптимального решения
- •8.5. Усложненные задачи транспортного типа
- •Лекция 10. Дискретное программирование.
- •10.1. Постановка задачи дискретного программирования
- •10.2. Математические модели задач дискретного программирования
- •10.3. Метод ветвей и границ для задачи целочисленного программирования
- •Лекция 11. Нелинейное программирование
- •11.1. Постановка задачи нелинейного программирования
- •11.2.Решение задач нелинейного программирования в системе matlab
- •Лекция 12. Динамическое программирование
- •Лекция 13. Принятие решений в условиях неопределенности. Введение в матричные игры.
- •14.1. Основные понятия теории игр. Введение в матричные игры
- •14.2. Формальное описание матричной антагонистической игры
- •Лекция 14. Решение игр в смешанных стратегиях
- •14.1. Постановка задачи
- •14.2. Основные понятия теории статистических решений
- •15.3. Выбор критерия принятия решения
- •14.3.1. Критерий Лапласа
- •15.3.2. Критерий Вальда
- •14.3.3. Критерий Гурвица
- •14.3.4. Критерий Cэвиджа
10.3. Метод ветвей и границ для задачи целочисленного программирования
Рассмотрим частично целочисленную задачу ЛП:
минимизировать
(10.23)
при условиях
;
(10.24)
;
(10.25)
-
целые числа. (10.26)
Процесс
поиска оптимального решения начинают
с решения непрерывной задачи ЛП. Если
полученный при этом оптимальный план
не
удовлетворяет условию (10.26), то значение
целевой функции
дает нижнюю оценку
для искомого решения, т.е.
.
Пусть некоторая переменная хi0 (1≤ i0 ≤ т) не получила в плане целочисленного решения. В целочисленном плане значение хi0 следует либо уменьшить, по крайней мере до [хi0], либо увеличить, по крайней мере до [хi0]+ 1.
Если границы изменения хi0 заранее не заданы, то их можно вычислить, решив для этого две вспомогательные задачи ЛП. Эти задачи состоят в максимизации и минимизации хi0 при условиях (10.24) и (10,25).
Теперь для каждого фиксированного целочисленного значения хi0 в найденном отрезке [хi0min, хi0max] находят min z, решая задачу ЛП с ограничениями (10.24), (10.25) и с дополнительным ограничением хi0≤ki0..
Таким
образом, все указанные выше возможности
можно представить в виде некоторого
дерева, в котором вершина 0 отвечает
плану
,
а каждая из соединенных с ней вершин
отвечает оптимальному плану следующей
задачи: минимизировать z
при условиях (10.24),
(10.25) и дополнительном условии, что
переменной хi0
дано значение хi0
≤ кi0,
где кio
- целое число. Каждой
из таких вершин приписывают оценку ,
которая равна min
z
при указанных выше ограничениях.
Очевидно,
,
для всех k.
Если оптимальные планы полученных задач удовлетворяют условиям целочисленности, то план с минимальной оценкой и будет оптимальным планом исходной задачи. В противном случае возникает необходимость в продолжении ветвления. При этом каждый раз для очередного ветвления выбирают вершину с наименьшей оценкой.
Любой маршрут в дереве от начальной вершины 0 до некоторой вершины определяет допустимую последовательность выбора целочисленных решений для переменных. Процесс продолжают до тех пор, пока продолжение ветвления становится невозможным.
Каждая конечная вершина отвечает некоторому допустимому целочисленному плану. Вершина с минимальной оценкой дает оптимальный план.
Рассмотрим алгоритм решения задачи целочисленного программирования.
На первом этапе необходимо задать множество G(0), определяемое условиями (10,24), (10.25).
На
втором этапе формируются
множества
задаваемые условиями (10.24), (10.25) и
дополнительным условием
xj≤[xj0] или xj≥[ xj0] +1 (10.27)
где [xj0] - целая часть хj0.
На
третьем этапе
осуществляется вычисление оценок. Для
множества G(0)
оценку
определяют как
=f(
),
где
- оптимальный план непрерывной задачи
ЛП. Для множества
оценку
определяют аналогично:
где
-оптимальный
план задачи с условиями (10.24), (10.25) и с
дополнительным условием (10.27).
Если множество оказывается пустым, ему приписывают оценку = ∞.
На четвертом этапе осуществляется нахождение планов. Если план удовлетворяет условию целочисленности (10.26), -оптимальный план задачи. Если удовлетворяет условию целочисленности (10.26), он является оптимальным планом задачи с условиями (10.24), (10.25), (10.27) и некоторым планом исходной задачи (10.23) - (10.26).
На пятом этапе выполняют ветвление. Ветвление производят в том случае, когда план не удовлетворяет условию целочисленности (10.26).
Пусть
- одна из нецелочисленных
компонент плана, где 1 ≤ρ≤n1,
тогда множество
разбивают на два подмножества:
.причем
;
(10.28)
(10.29)
Укажем некоторые особенности метода ветвей и границ для задач ЦП.
1. Если
все коэффициенты сj
целевой функции - целые при 1 ≤j≤ni
и равны нулю при
j
> ni,
то оценку
можно
заменить на более
сильную оценку
,
где ]а[ обозначено
наименьшее целое, но не меньшее, чем а,
т.е. округленное до
ближайшего целого с избытком.
2. Алгоритм метода в вычислительном отношении представляет собой последовательность задач ЛП, причем конечность алгоритма следует из предполагаемой ограниченности множества G.
3. Из описания -алгоритма следует, что в применении метода ветвей и границ для полностью целочисленных и для частично .целочисленных задач нет никакой разницы.
Геометрически этот метод можно интерпретировать таким образом. Гиперплоскость, определяемая функцией задачи, вдавливается внутрь многогранника планов соответствующей задачи ЛП до встречи с ближайшей целочисленной точкой этого многогранника.
■ Пример 1 применения метода ветвей и границ для решения задач дискретного программирования.
Возьмем задачу
Максимизировать 3x1+3x2 +13x3 (8)
При ограничениях -3 x1+6 x2+7 x3≤8; (9)
6 x1-3 x2 +7 x3≤8; (10)
где каждая переменная xj должна быть неотрицательным целым. Предположим, что заданы границы на каждую переменную:
0≤xj≤5, j=1,2,3.
Как принято, обозначим x0t значение целевой функции.
На итерации 1 примем нижнюю границу x01 , поскольку при всех xj=0 имеем допустимое решение. Основой список содержит лишь одну задачу линейного программирования (8, ) (9) и (10) , которую назовем задачей 1. Выберем эту задачу на шаге 1 и найдем ее оптимальное решение на шаге 2:
x0=16,
x1=x2=
,
x3=0.
Поскольку решение не является целочисленным, перейдем от шага 3 к шагу 4 и выберем x1. Внесем далее в основной список
Задачу 2: ограничения (9)
3≤x1≤5; 0≤x2≤5; 0≤x3≤5;
Задачу 3: ограничения (9)
0≤x1≤2; 0≤x2≤5; 0≤x3≤5;
Допустимое решение задачи 2 отсутствует. Поэтому выберем x02= x03=0 и вернемся к шагу 1. выберем теперь задачу 3 и получим на шаге 2 оптимальное решение
x0=
,
x1=x2=2,
x3=
,
не являющееся
целочисленным. Дальнейший ход решения
задачи показан на рис.