- •Основные понятия.
- •1. Безусловная оптимизация (многомерные функции)
- •1.1 Методы первого порядка (градиентные методы)
- •1.1.1. Градиентный метод с постоянным шагом
- •1.1.2. Выпуклые функции и множества
- •Теорема
- •Определение.
- •Без доказательства
- •2.Теорема:
- •1.2. Градиентные методы (продолжение)
- •1.2.1. Градиентный метод с дроблением шага.
- •1.2.2. Метод наискорейшего спуска.
- •Без доказательства
- •1.2.3. Масштабирование
- •1.3. Метод Ньютона.
- •1.4. Многошаговые ( двухшаговые ) методы.
- •1.3.1. Метод тяжелого шарика
- •1.3.2. Метод сопряженных градиентов
- •1.3.3. Модификация Полака-Ривьера
- •1.5. Квазиньютоновские методы
- •1.6. Методы нулевого порядка (методы прямого поиска)
- •1.6.1. Методы аппроксимации
- •Метод покоординатного спуска
- •1.6.3. Метод симплексов (Нелдера-Мида)
- •1.6.4. Метод Пауэлла (сопряженных направлений)
- •1.7. Методы прямого поиска в задачах одномерной минимизации.
- •1.7.1. Метод квадратичной интерполяции.
- •1.7.2. Метод дихотомии ( половинного деления.).
- •1.7.3. Метод «золотого» сечения.
- •1.7.4. Метод Фибоначчи.
- •2. Условная минимизация.
- •2.1 Задача нелинейного программирования.
- •2.1.1. Ограничения типа равенства.
- •2.1.2. Ограничения типа неравенств.
- •2.2. Задача выпуклого программирования
- •2.3. Методы условной минимизации.
- •2.3.1. Метод проекции градиента.
- •2.3.2. Метод условного градиента.
- •2.3.3. Метод модифицированной функции Лагранжа.
- •2.3.4. Метод штрафных функций.
- •2.4. Двойственность звп
- •2.4.1. Двойственность злп
- •3. Линейное программирование
- •3.1. Основные понятия
- •3.2. Геометрическая интерпретация злп.
- •3.3. Условие оптимальности для злп.
- •3.4. Базис и базисное решение.
- •3.5. Симплекс - метод решения злп.
- •3.6 Транспортная задача
- •3.5.1. Построение первоначального опорного плана.
- •3.5.2. Построение оптимального плана. Метод потенциалов.
- •4. Решение переборных задач.
- •4.1. Метод ветвей и границ.
- •4.1.1. Задача о коммивояжере.
- •4.2. Динамическое программирование.
- •4.2.1. Абстрактная схема.
- •4.2.2. Вывод уравнения Беллмана.
- •4.2.3. Методика применения функции Беллмана для решения исходной задачи.
- •4.2.4. Примеры задач динамического программирования
- •5. Вариационное исчисление (ви)
- •5.1. Уравнение Эйлера-Лагранжа.
- •5.1.1. Частные случаи уравнения Эйлера-Лагранжа.
- •5.1.2. Задача о брахистохроне.
- •5.2. Вариационные задачи на условный экстремум.
- •5.2.1. Модельные задачи на условный экстремум.
- •6. Принцип максимума Понтрягина ( на примере задачи оптимального управления ).
- •6.1. Принцип максимума в задаче о быстродействии.
- •Список литературы
4.2.4. Примеры задач динамического программирования
Задача о рюкзаке.
Задано конечное множество предметов, которые имеют вес и стоимость
i
-й предмет
: вес -
![]()
стоимость
-
![]()
Надо выбрать такую совокупность предметов, чтобы суммарный вес был не более наперед заданного значения, а стоимость максимальна.
maxcixi
при
y,где
y
- грузоподъемность (максимально
возможный вес)
Чтобы решить эту задачу с помощью динамического программирования, надо представить ее решение в виде процесса:
Z
(y)
=
(
+Z(y
))
где
=
{i
:
y}
-уравнение
Беллмана для задачи о рюкзаке.
Зная значения Z для малых аргументов, можно вычислить его для любого аргумента.
Процесс построения функции Беллмана не формализуется. Это творческий процесс, т.е. динамическое программирование, это идея, которая в каждой предметной области реализуется по-своему.
2. Задача оптимального распределения ресурсов.
Существует
n
предприятий, между ними надо распределить
средств.
Известно, что выдачаi
-му предприятию
средств дает доход
(
).
Требуется распределить средства так, чтобы суммарный доход был максимальным:
S
=
max
0,
i
=
,
=![]()
Эту задачу удобно решать методом динамического программирования.
Пусть
все
кратны
(
-некоторая
константа),
например:
![]()
![]()
![]()
40
80 120 ...(
=
40)
Представим процесс решения задачи как n -шаговый.
На первом шаге выдадим средства первому предприятию
:
=
- оставшиеся средства (первому
предприятию выдано
средств)
:
=

:
:
n)
:
=
0 (все
средства распределены)
Введем
функцию Беллмана
- максимальный доход, который может быть
получен при распределении средств
между предприятиямиk+1,
... , n.
=
{
(
)
+
(
-
)}
Замечание:
Если разбиение задачи размера n сводит ее к n задачам размера n1 , то рекурсивный алгоритм имеет экспоненциальную сложность. В этом случае часто можно получить более эффективный алгоритм с помощью табличной техники, называемой динамическим программированием.
Динамическое программирование, в сущности, вычислительное решение для всех подзадач. Вычисление идет от малых подзадач к большим, и ответы записываются в таблице. Преимущество этого метода состоит в том, что раз уж подзадача решена, ее ответ где-то хранится и никогда не вычисляется заново.
Задачи динамического программирования называются многоэтапными или многошаговыми.
Недостатки динамического программирования.
В отличие от линейного программирования, в котором симплекс-метод является универсальным, в динамическом программировании такого метода не существует. Каждая задача имеет свои трудности, и в каждом случае необходимо найти наиболее подходящую методику решения.
Трудоемкость решения многомерных задач. При очень большом числе переменных решение задачи ограничивается памятью и быстродействием ЭВМ.
5. Вариационное исчисление (ви)
Вариационное исчисление занимается оптимизацией функционалов, аргументами которых являются функции:
J
(y(x))
=
Будем искать необходимые условия экстремума функционала. Рассмотрим функции с фиксированными концами. Норма:
=
{
+
}
Пусть y*(x) доставляет минимум функционалу J (y(x))
Рассмотрим вариацию :
(y(x))
=
(x)
+ (x)
, где (a)
= (b)
= 0
(x) - вариация
- гладкая, то есть непрерывная вместе со своей производной.
Иллюстрация:

Пусть
=
+
,
тогда:
(т.к.
это min
функционала)
Из этого неравенства можно получить необходимые условия экстремума.
