
- •Лекции 9-11 Управляемые системы Основные понятия
- •Принципы организации управления
- •2. Принцип компенсации возмущения (принцип инвариантности)
- •5. Принцип ситуационного управления.
- •Пути совершенствования систем с управлением
- •Классификация методов оптимизации
- •1. Метод полного перебора
- •2. Приближенные методы и оптимальные алгоритмы
- •Линейное программирование
- •Квадратичное программирование
- •Выпуклое программирование
- •Теорема Куна - Таккера
- •Динамическое программирование
- •Принцип максимума
- •Оптимизация в многофункциональных пространствах (векторная оптимизация)
Теорема Куна - Таккера
Для того, чтобы точка x минимизировала выпуклую функцию f0 на множестве X1, удовлетворяющем условию Слейтера:
необходимо и
достаточно, чтобы существовало решение
системы
Такое решение
называют множителями Лагранжа, а пару
(
,
)
- точкой Куна - Таккера. Функцию
называют функцией Лагранжа. Пару
называют седловой точкой функции
на множестве
,
если
и выполнены неравенства
.
Теорему Куна - Таккера можно сформулировать
следующим образом: если выполнено
условие Слейтера, то необходимым и
достаточным условием оптимальности
является существование такого вектора
,
при котором пара
является седловой точкой функции
Лагранжа на множестве
.
Динамическое программирование
Динамическое программирование - раздел математического программирования, совокупность приемов, позволяющих находить оптимальные решения, основанные на вычислении последствий каждого решения и выработке оптимальной стратегии для последующих решений.
Процессы принятия решений, которые строятся по такому принципу, называются многошаговыми процессами. Математически оптимизационная задача строится в динамическом программировании с помощью таких соотношений, которые последовательно связаны между собой: например, полученный результат для одного года вводится в уравнение для следующего года (или наоборот, для предыдущего), и т. д. Таким образом, можно получить на вычислительной машине результаты решения задачи для любого избранного момента времени и “следовать” дальше. Динамическое программирование применяется не обязательно для задач, связанных с течением времени. Многошаговым может быть и процесс решения вполне статической задачи. Таковы, например, некоторые задачи распределения ресурсов.
Общим для задач динамического программирования является то, что переменные в модели рассматриваются не вместе, а последовательно, одна за другой. Иными словами, строится такая вычислительная схема, когда вместо одной задачи со многими переменными строится много задач с малым числом (обычно даже одной) переменных в каждой. Это значительно сокращает объем вычислений. Однако такое преимущество достигается лишь при двух условиях: когда критерий оптимальности аддитивен, т.е. общее оптимальное решение является суммой оптимальных решений каждого шага, и когда будущие результаты не зависят от предыстории того состояния системы, при котором принимается решение. Все это вытекает из принципа оптимальности Беллмана, лежащего в основе теории динамического программирования. Из него же вытекает основной прием - нахождение правил доминирования, на основе которых на каждом шаге производится сравнение вариантов будущего развития и заблаговременное отсеивание заведомо бесперспективных вариантов. Когда эти правила обращаются в формулы, однозначно определяющие элементы последовательности один за другим, их называют разрешающими правилами.
Процесс решения при этом складываются из двух этапов. На первом он ведется “с конца”: для каждого из различных предложений о том, чем кончился последний шаг, находится условное оптимальное управление на последнем шаге, т. е. управление, которое надо применить, если предпоследний шаг закончился определенным образом.
Такая процедура приводится до самого начала, а затем - второй раз - выполняется от начала к концу, в результате чего находятся уже не условные, а действительно оптимальные шаговые управления на всех шагах операции.
Несмотря на выигрыш в сокращении вычислений при использовании подобных методов по сравнении с простым переборам возможных вариантов, их объем остается очень большим. Поэтому размерность практических задач динамического программирования всегда незначительна, что ограничивает его применение.
Можно выделить два наиболее общих класса задач, к которым в принципе мог бы быть применим этот метод, если бы не “проклятие размерности”. (На самом деле на таких задачах, взятых в крайне упрщенном виде, пока удается лишь продемонсрировать общие основы метода и анализировать экономико-математические модели.) Первый - задачи планирования деятельности экономического объекта (предприятия, отрасли и т.п.) с учетом изменения потребности в производимой продукции во времени. Второй класс задач - оптимальное распределение ресурсов между различными направлениями во времени.