Я полагаю, вы говорите о безусловной минимизации. Ваш вопрос должен указать, рассматриваете ли вы конкретную структуру проблемы. В противном случае ответ - нет.
Сначала я должен развеять миф. Классический метод градиентного спуска (также называемый методом наискорейшего спуска ) даже не гарантирует нахождение локального минимизатора. Он останавливается, когда находит критическую точку первого порядка, т. Е. Точку, в которой градиент исчезает. В зависимости от минимизируемой функции и начальной точки, вы вполне можете оказаться в седловой точке или даже в глобальном максимизаторе!
f(x,y)=x2−y2(x0,y0):=(1,0)−∇f(1,0)=(−2,0)(0,0)f(x,y)=x2−10−16y2(0,0)∇2f(x∗,y∗)−10−16+10−16
f(x)=⎧⎩⎨1cos(x)−1if x≤0if 0<x<πif x≥π.
x0=−2
Теперь практически все методы оптимизации на основе градиента страдают от этого из-за замысла. Ваш вопрос действительно о глобальной оптимизации . Опять же, ответ - нет, нет общих рецептов для изменения метода, чтобы гарантировать, что глобальный минимизатор идентифицирован. Просто спросите себя: если алгоритм возвращает значение и говорит, что это глобальный минимизатор, как бы вы проверили, что это правда?
Есть классы методов в глобальной оптимизации. Некоторые вводят рандомизацию. Некоторые используют мультистартовые стратегии. Некоторые используют структуру проблемы, но это для особых случаев. Подберите книгу по глобальной оптимизации. Вам понравится.