Ну например так можно. Задаём четыре параметра: количество попыток на шаге
, минимально допустимый "процент успешности"
, начальный радиус поиска
и коэффициент его уменьшения
. На каждом шаге озираемся по сторонам, смещаясь от текущей точки
раз по случайно выбираемым направлениям на расстояние
от текущего приближения, параллельно подсчитывая, какой процент попыток оказался успешным в том смысле, что значение целевой функции уменьшилось, а не увеличилось. Если успешными оказались более
попыток, то берём в качестве нового приближения наилучшую попытку. Если нет -- уменьшаем
в
раз и повторяем всё заново. Критерием точности может служить, например, отношение приращения целевой функции в двух последних приближениях к расстоянию между ними (на всякий случай можно ещё усреднить их по нескольким последним итерациям).
Это навскидку. Не помню, как там принято в приличном обществе. Во всяком случае, это будет работать.