А. Выбрать начальную базисную точку и шаг длиной для каждой переменной . В приведенном ниже алгоритме шаг одинаков для всех переменных, однако указанная выше модификация может оказаться полезной, если значения переменных отличаются более чем на порядок.
Б. Выполнить исследующий поиск вокруг базисной точки с целью получения сведений о локальном поведении функции . Эти сведения будут использованы для нахождения подходящего направления поиска по образцу, с помощью которого можно надеяться достичь большего убывания функции. Исследующий поиск выполняется следующим образом:
1. Вычисляется значение функции в базисной точке .
2. К переменной прибавляется длина шага . Таким образом, вычисляется значение функции , где – единичный вектор в направлении оси . Если это приводит к уменьшению функции, то заменяется на . В противном случае вычисляется значение функции , и если ее значение уменьшилось, то заменяется на . Если ни прибавление, ни вычитание шага не приводит к уменьшению значения функции, то точка остается неизменной. Когда будут просмотрены все n переменные, будем иметь новую базисную точку, хранящуюся в векторе .
В. Если в результате исследующего поиска уменьшение целевой функции было достигнуто, т.е. , то производится поиск по образцу. В противном случае выполняется пункт Д.
Г. При поиске по образцу используется информация об убывании целевой функции, полученная в результате исследующего поиска, и минимизация функции завершается поиском в направлении, заданном образцом. Эта процедура производится следующим образом:
1. Разумно двигаться из базисной точки в направлении , поскольку поиск в этом направлении уже привел к уменьшению функции. Поэтому вычислим точку образца
.
2. Запомним базисную точку и значение целевой функции в ней на случай, если исследующий поиск после шага по образцу окажется неудачным.
3. Перейдем в точку образца, выполнив , и вычислим в точке образца значение целевой функции .
4. Отметим выполнение шага по образцу установкой переменной flag=1 и выполним исследующий поиск вокруг точки образца по п. Б.2, как это делалось для базисной точки.
Д. Ситуация, когда исследующий поиск не привел к уменьшению функции.
1. Выполняется проверка, где производился исследующий поиск в базисной точке (flag=0) или в точке образца (flag=1).
2. Если в точке образца, то восстановить базисную точку, сохраненную в п. Г.2 , , установить flag=0 и выполнить исследующий поиск в этой базисной точке.
3. Если в базисной точке, то повторить исследующий поиск, уменьшив длину шага. В практических реализациях метода удовлетворительным является уменьшение шага в десять раз от начальной длины (1).
Е. Завершить процесс, когда длина шага будет уменьшена до заданного малого значения.