- •Основные понятия.
- •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 функционала)
Из этого неравенства можно получить необходимые условия экстремума.