Максимизация функции f(x) без оценки производной

Я физик-экспериментатор, пытаюсь автоматизировать относительно простую (но чувствительную) оптимизацию моих измерений, которая в настоящее время выполняется полностью вручную и отнимает у меня много времени. После некоторых размышлений и советов в комментариях я сократил проблему до следующего:

Есть некоторая функция f (x), которую я хочу максимизировать. Тем не менее, я могу только оценить f (x); Я не могу оценить его производную явно. Более того, я не могу выбрать большой диапазон х; если f (x) <порог, у меня проблемы (и на восстановление у меня уходит целый день). К счастью, у меня есть одно начальное значение x_0 такое, что f (x_0)> порог, и я могу угадать некоторый начальный размер шага eps, для которого также имеет место порог f(x_0 + eps) > (однако, я не знаю, если f (x_0) + eps)> или

В настоящее время я делаю это вручную следующим образом: я оцениваю f (x_0), а затем f (x_0 + eps). Если это приводит к снижению, я вместо этого оцениваю f(x_0-eps). Основываясь на градиенте (по сути, я просто смотрю, есть ли большие шаги или большие шаги с порогом, который я не могу пересечь), я увеличиваю или уменьшаю eps и продолжаю поиск в том же направлении, пока не будет найден максимум, который я замечаю, потому что f (х) начинает уменьшаться. Затем я возвращаюсь к этому максимуму. Таким образом, я всегда прощупываю верхнюю часть максимума и таким образом остаюсь в безопасном диапазоне.

1 ответ

Я бы сказал, что вам нужно определить проблему или разбить ее, например, найти локальный оптимум. Или градиентный спуск

Другие вопросы по тегам