- •1. Введение 4
- •1.1. Основные методологические принципы
- •1.2. Основные определения
- •1.3. Этапы моделирования
- •5. Модели с обратной связью, динамическое проектирование.
- •2. О принципах принятия решений
- •2.1. Принятие решений в условиях неопределенности критерия.
- •Самостоятельная работа №1.
- •2.2. Принятие решения в условиях неопределенности состояния окружающей среды
- •Самостоятельная работа №2
- •3. Задачи выпуклого векторного программирования1.
- •3.1. Некоторые сведения выпуклого анализа
- •3.2. Понятие оптимальности по Слейтеру и Парето
- •3.3. Возможные (допустимые) и подходящие направления.
- •3.4. Задача выпуклого векторного программирования с ограничениями типа неравенства. Поиск подходящих направлений.
- •Самостоятельная работа №3.
- •3.4. Теорема Куна–Таккера для задачи выпуклого векторного программирования
- •Самостоятельная работа № 4.
- •4. Некоторые задачи теория игр
- •4.1. Анализ матричных антагонистических игр двух игроков .
- •Самостоятельная работа № 5.
- •4.2. Анализ матричных игр двух игроков с нулевой суммой в смешанных стратегиях.
- •Самостоятельная работа №6
- •4.3. Биматричные неантагонистические игры.
- •Самостоятельная работа № 7.
- •4.4. Взаимосвязь равновесий по Нешу и Парето в играх.
- •Самостоятельная работа № 8.
- •4.5. Динамические игры с полной информацией
- •Самостоятельная работа № 9
- •5. Задачи дискретного программирования.
- •5.1. Методы отсечения для решения задач целочисленного линейного программирования.
- •Самостоятельная работа № 10.
- •5.2. Комбинаторные методы решения задач целочисленного линейного программирования.
- •5.3. Алгоритм Ленд–Дойг.
- •Самостоятельная работа № 11.
- •5.4. Метод ветвей и границ для решения задачи о коммивояжере.
- •Самостоятельная работа № 12.
- •6.Транспортные задачи линейного программирования
- •6.1. Транспортная задача в сетевой постановке
- •Самостоятельная работа 13.
- •6.2. Транспортная задача в матричной постановке.
- •Самостоятельная работа 14.
- •7. Динамическое программирование и потоки в сетях
- •7.1. Задача оптимизации многошаговых процессов, задача о ранце.
- •Самостоятельная работа 15.
- •7.2 .Задача отыскания кратчайшего расстояния в сети между парами вершин
- •Самостоятельная работа 16.
- •7.2. Задача о максимальном потоке в сети.
- •Самостоятельная работа 17.
- •Литература.
5.2. Комбинаторные методы решения задач целочисленного линейного программирования.
Комбинаторные методы решения задач дискретного программирования основаны на полном переборе, в котором включены правила оценивания и отбраковки целых подмножеств решений, заведомо не содержащих оптимального решения. Классическая схема этого метода называется метод ветвей и границ.
Общая схема метода ветвей и границ .
Рассмотрим вновь задачу дискретного программирования в виде
, xХ |
(5.1) |
Если об этой задаче ничего неизвестно, то кроме как полного перебора для ее решения применить нельзя. Для ее решения методом ветвей и границ достаточно:
1. Уметь разбивать множество X(переобозначим его черезX0,1) на некоторые подмножестваX1,1, , X1,2, , X1,3 ,....Каждое из полученных подмножеств, в свою очередь, может быть разбито на подмножестваX2,1, X2,2, X2,3,..., и так далее, вплоть до получения одноэлементных подмножеств. Индексы (i,j) у подмножествXi,jозначают следующее:i– номер уровня разбиения,j–порядковый номер в уровне. В результате такого разбиения получается дерево подмножеств:
2. На каждом из таких подмножеств Xi,jуметь строить верхние оценки максимального значения функционала, т.е. определять значениеi,jтакое, что
i,j max{ (x) | xXi,j} . |
(5. 4) |
Алгоритм метода ветвей и границ.
0 – шаг. Полагаемx'– пустой элемент (в него пока ничего не помещено), Fx' =M=–,. В дальнейшемx' будем называть рекордом,Fx' – рекордным значением функционала. Строим верхнюю оценку0,1функционала(x) на подмножествеX0,1, полагаемV=0,1(V– наименьшая из всех нижних оценок на всех подмножествах). Если в результате этого построения получаем некотороеxX0,1, тоx':=x, Fx':= (x), в противном случаеx'иFx'оставляем без изменения. ЕслиFx'=V, тоx'искомое решение иFx'– оптимальное значение функционала, в противном случае переходим к следующему шагу.
k–ый шаг. Среди всех подмножеств, не подвергнутых разбиению (на дереве разбиения они концевые), ищем подмножествоXr,t, у которого r,t=V.Разбиваем его на подмножестваXr+1,m+1, Xr+1,m+2, Xr+1,m+3,..., гдеm– номер последнего подмножества на (r+1)–ом уровне. Для каждого из этих подмножеств строим оценкиr+1,m+1, r+1,m+2, r+1,m+3,.... . Обычно эти оценки находятся пересчетом (уточнением) изr,t. Легко понять, что должно выполняться :
(r,t) (r+1,t) , t=m+1,m+2,m+3,... . |
(5. 5) |
Если в результате этих построений получаем некоторое xXr,t и (x)>Fx', тоx':=x, Fx':= (x). Отбраковываем все подмножестваXr,t, для которыхr,t Fx'.
Если в результате оказались отбракованными все подмножества, то x'иFx'дают искомое решение и алгоритм заканчивает работу. В противном случае полагаемV:=max(r,t), где максимум берется по всем неотбракованным и не подвергнутым разбиению подмножествам, и переходим к следующему шагу.
Замечание 1.Нетрудно видеть, что в работе алгоритма участвуют только подмножества, не подвергнутые разбиению (концевые вершины дерева разбиения), которые можно организовывать в виде списка. Если подмножество подвергается разбиению, то оно исключается из списка и заменяется своим разбиением.
Замечание 2.Если в исходной задаче функционал минимизируется, то строятся нижние оценкиr,t, т.е.r,tmax{ (x) | x Xr,t}, иM=+.