В математической оптимизации ограниченная оптимизация (в некоторых контекстах называемая оптимизацией ограничений ) — это процесс оптимизации целевой функции относительно некоторых переменных при наличии ограничений на эти переменные. Целевая функция — это либо функция стоимости или функция энергии , которая должна быть минимизирована , либо функция вознаграждения или функция полезности , которая должна быть максимизирована . Ограничения могут быть либо жесткими ограничениями , которые устанавливают условия для переменных, которые должны быть удовлетворены, либо мягкими ограничениями , которые имеют некоторые значения переменных, которые штрафуются в целевой функции, если и на основе степени, в которой условия для переменных не удовлетворены.
Задача ограниченной оптимизации (COP) является значительным обобщением классической модели задачи ограничения-удовлетворения (CSP). [1] COP — это CSP, которая включает целевую функцию , подлежащую оптимизации. Для обработки части оптимизации используется множество алгоритмов.
Общую задачу ограниченной минимизации можно записать следующим образом: [2]
где и — ограничения, которые необходимо соблюдать (они называются жесткими ограничениями ), а — целевая функция, которую необходимо оптимизировать с учетом ограничений.
В некоторых задачах, часто называемых задачами оптимизации ограничений , целевая функция на самом деле является суммой функций затрат, каждая из которых штрафует за степень (если таковая имеется), в которой нарушается мягкое ограничение (ограничение, которое является предпочтительным, но не обязательным для соблюдения).
Многие алгоритмы оптимизации с ограничениями могут быть адаптированы к случаю без ограничений, часто с помощью метода штрафа . Однако шаги поиска, предпринимаемые методом без ограничений, могут быть неприемлемы для проблемы с ограничениями, что приводит к отсутствию сходимости. Это называется эффектом Маратоса. [3]
Для очень простых задач, скажем, функции двух переменных, подчиняющейся одному ограничению равенства, наиболее практично применять метод подстановки. [4] Идея состоит в том, чтобы подставить ограничение в целевую функцию, чтобы создать составную функцию , которая включает эффект ограничения. Например, предположим, что цель состоит в том, чтобы максимизировать при условии . Ограничение подразумевает , которое можно подставить в целевую функцию, чтобы создать . Необходимое условие первого порядка дает , которое можно решить относительно и, следовательно, .
Если ограниченная задача имеет только ограничения-равенства, метод множителей Лагранжа может быть использован для преобразования ее в неограниченную задачу, число переменных которой равно исходному числу переменных плюс исходное число ограничений-равенств. В качестве альтернативы, если все ограничения являются ограничениями-равенствами и все линейны, их можно решить для некоторых переменных в терминах других, и первые можно подставить из целевой функции, оставив неограниченную задачу с меньшим числом переменных.
При наличии ограничений типа неравенства задачу можно охарактеризовать в терминах геометрических условий оптимальности, условий Фрица-Джона и условий Каруша–Куна–Таккера , при которых простые задачи могут быть решены.
Если целевая функция и все жесткие ограничения линейны, а некоторые жесткие ограничения являются неравенствами, то задача является задачей линейного программирования . Это можно решить симплексным методом , который обычно работает за полиномиальное время в задаче размера, но не гарантирует этого, или методами внутренней точки, которые гарантированно работают за полиномиальное время.
Если целевая функция или некоторые из ограничений нелинейны, а некоторые ограничения представляют собой неравенства, то задача является задачей нелинейного программирования .
Если все жесткие ограничения линейны, а некоторые являются неравенствами, но целевая функция квадратичная, то задача является задачей квадратичного программирования . Это один из видов нелинейного программирования. Ее все еще можно решить за полиномиальное время методом эллипсоида , если целевая функция выпуклая ; в противном случае задача может быть NP-трудной .
Допуская ограничения типа неравенства, подход ККТ к нелинейному программированию обобщает метод множителей Лагранжа. Он может применяться в условиях дифференцируемости и выпуклости.
Оптимизация ограничений может быть решена с помощью алгоритмов ветвей и границ . Это алгоритмы обратного отслеживания, сохраняющие стоимость лучшего решения, найденного во время выполнения, и использующие ее для избежания части поиска. Точнее, всякий раз, когда алгоритм сталкивается с частичным решением, которое не может быть расширено для формирования решения с лучшей стоимостью, чем сохраненная лучшая стоимость, алгоритм возвращается назад, вместо того чтобы пытаться расширить это решение.
Если предположить, что стоимость должна быть минимизирована, эффективность этих алгоритмов зависит от того, как оценивается стоимость, которая может быть получена при расширении частичного решения. Действительно, если алгоритм может вернуться от частичного решения, часть поиска пропускается. Чем ниже предполагаемая стоимость, тем лучше алгоритм, поскольку более низкая предполагаемая стоимость, скорее всего, будет ниже лучшей стоимости решения, найденного до сих пор.
С другой стороны, эта предполагаемая стоимость не может быть ниже эффективной стоимости, которая может быть получена путем расширения решения, поскольку в противном случае алгоритм может вернуться назад, пока существует решение, лучшее, чем лучшее из найденных до сих пор. В результате алгоритм требует верхнюю границу стоимости, которая может быть получена путем расширения частичного решения, и эта верхняя граница должна быть как можно меньше.
Разновидность этого подхода, называемая методом Хансена, использует интервальные методы . [5] По сути, он реализует прямоугольные ограничения.
Один из способов оценки этой верхней границы для частичного решения — рассмотреть каждое мягкое ограничение отдельно. Для каждого мягкого ограничения предполагается максимально возможное значение для любого назначения неназначенным переменным. Сумма этих значений является верхней границей, поскольку мягкие ограничения не могут предполагать более высокое значение. Она точна, поскольку максимальные значения мягких ограничений могут быть получены из разных оценок: мягкое ограничение может быть максимальным для , в то время как другое ограничение является максимальным для .
Этот метод [6] запускает алгоритм ветвей и границ для задач, где — число переменных. Каждая такая задача — это подзадача, полученная путем отбрасывания последовательности переменных из исходной задачи вместе с ограничениями, содержащими их. После решения задачи с переменными ее оптимальная стоимость может использоваться в качестве верхней границы при решении других задач,
В частности, оценка стоимости решения, имеющего неназначенные переменные, добавляется к стоимости, которая выводится из оцененных переменных. Фактически, это соответствует игнорированию оцененных переменных и решению задачи на неназначенных переменных, за исключением того, что последняя задача уже решена. Точнее, стоимость мягких ограничений, содержащих как назначенные, так и неназначенные переменные, оценивается, как указано выше (или с использованием произвольного другого метода); стоимость мягких ограничений, содержащих только неназначенные переменные, вместо этого оценивается с использованием оптимального решения соответствующей задачи, которое уже известно на данный момент.
Существует сходство между методом поиска матрешки и динамическим программированием . Как и динамическое программирование, поиск матрешки решает подзадачи, чтобы решить всю задачу. Но, в то время как динамическое программирование напрямую объединяет результаты, полученные на подзадачах, чтобы получить результат всей задачи, поиск матрешки использует их только как границы во время поиска.
Алгоритм исключения контейнера может быть адаптирован для оптимизации ограничений. Заданная переменная действительно может быть удалена из задачи путем замены всех мягких ограничений, содержащих ее, на новое мягкое ограничение. Стоимость этого нового ограничения вычисляется с учетом максимального значения для каждого значения удаленной переменной. Формально, если — переменная, подлежащая удалению, — мягкие ограничения, содержащие ее, и — их переменные, за исключением , новое мягкое ограничение определяется следующим образом:
Исключение блока работает с (произвольным) порядком переменных. Каждая переменная связана с блоком ограничений; блок переменной содержит все ограничения, имеющие переменную, имеющую наивысшее значение в порядке. Исключение блока продолжается от последней переменной к первой. Для каждой переменной все ограничения блока заменяются, как указано выше, чтобы удалить переменную. Затем полученное ограничение помещается в соответствующий блок.