Метод эллипсоидов

Материал из testwiki
Перейти к навигации Перейти к поиску

Метод эллипсоидов — алгоритм нахождения точки, лежащей в пересечении выпуклых множеств. Разработан А. С. Немировским и доведён до алгоритмической реализации Л. Г. Хачияном в ВЦ АН СССР.

Описание алгоритма

В начале выбирается большой шар, содержащий пересечение выпуклых множеств. Способ построения этого шара зависит от задачи. Далее на каждом шаге имеется эллипсоид, заданный центром v и векторами v1,v2,,vnn. Эллипсоиду принадлежат точки v+c1v1+c2v2++cnvn для которых c12+c22++cn21. Отметим, что один и тот же эллипсоид можно задать несколькими способами. Если центр этого эллипсоида принадлежит всем выпуклым множествам, то искомая точка найдена. Иначе существует гиперплоскость π, проходящая через точку v, такая, что одно из множеств целиком лежит по одну сторону от неё. Тогда можно перейти от исходного базиса vi к другому базису τ,w2,wn такому, что wi параллельны π, а τ направлен в сторону множества. Положим теперь v=v+τn+1, v'1=nτn+1, v'i=winn21 при i2. Этот новый эллипсоид содержит половину старого и имеет меньший объём. Таким образом, объём эллипсоида уменьшается экспоненциально с ростом числа шагов и искомая точка будет найдена за O(n2log(V1/V2)) шагов, где V1 — объем исходного шара, а V2 — объем области пересечения. Общее время работы алгоритма получается равным O(Ntn2log(V1/V2)), где N — число множеств, t — время проверки принадлежности точки множеству.

Применение к задаче линейного программирования

Если в задаче линейного программирования удалось построить шар, содержащий искомое решение, то она может быть решена методом эллипсоидов. Для этого вначале находим какую-нибудь точку u внутри шара, удовлетворяющую ограничениям задачи. Проводим через неё гиперплоскость f(x)<f(u), где f — целевая функция, и находим точку в пересечении исходных и новой гиперплоскостей (начиная с текущего эллипсоида). С новой найденной точкой проделываем то же самое. Процесс сходится к оптимальному решению с экспоненциальной скоростью (поскольку с этой скоростью убывает объём эллипсоида).

Эффективность метода

Полиномиальный алгоритм теоретически мог бы стать новым стандартом, однако, на практике алгоритм Хачияна применять следует с осторожностью: существуют задачи размером в 50 переменных, для которых требуются более 24 тысяч итераций метода Хачияна, количество же существенно более простых итераций симплекс-метода в таких случаях исчисляется сотнями или даже десятками Шаблон:SfnШаблон:Sfn. Однако есть примеры задач, для которых алгоритмы этого класса работают в сотни раз эффективнее стандартных реализаций симплекс-метода.

Примечания

Шаблон:Примечания

Литература

Шаблон:Refbegin

Шаблон:Refend

Шаблон:Нет источников Шаблон:Методы оптимизации