Реферат: Решение задач - методы спуска

Методы спуска

Общая схема.

Все методы спуска решениязадачи безусловной минимизации различаются либо выбором направления спуска,либо способом движения вдоль направления спуска. Это позволяет написать общуюсхему методов спуска.

Решается задача минимизациифункции <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family: Symbol">j

(x) навсём пространстве En. Методы спуска состоят в следующей процедурепостроения последовательности {xk}. Â качестве начальногоприближения выбирается любая точка x0<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ÎEn.Последовательные приближенияx1, x2, … строятся по следующей схеме:

1) в точке xk выбирают направление спуска — Sk;

2) находят (k+1)-еприближение по формуле xk+1=xk-pkSk.

Направление Skвыбирают таким образом, чтобы обеспечить неравенство <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">j

(xk+1)<<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">j(xk)по крайней мере для малых значений величины pk.На вопрос, какому изспособов выбора направления спуска следует отдать предпочтение при решении конкретнойзадачи, однозначного ответа нет.

Число pkопределяет расстояние от точки xkдо точкихk+1. Это число называется длиной шага или просто шагом.Основная задача при выборе величины <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">b

k — это обеспечить выполнение неравенства <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">j(xk+1)<<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">j(xk). Одним из элементарных способов выбора шага является способ удвоения шага.

Выбирают <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">b

k=<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">bk-1. Если при этом <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">j(xk+1)<<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">j(xk), то либо переходят к следующей (k+2)-й итерации, либо выбирают <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">bk=2<span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family: Symbol">bk-1.Если значение <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">j(х) меньше его предыдущегозначения, то процесс удвоения можно продолжать до тех пор, пока убывание непрекратится. Если <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">j(xk+1)<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">³<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">j(xk), то выбирают <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">bk=0.5<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-ansi-language:EN-US;mso-char-type: symbol;mso-symbol-font-family:Symbol">bk-1. Если <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">j(xk-0.5<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">bk-1Sk)<<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">j(xk), то полагают xk+1=xk-0.5<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">bk-1Skи переходят к следующей (k+2)-йитерации. Если же <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">j(xk-0.5<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">bk-1Sk)<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">³<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">j(xk), то выбирают <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">bk=0.25<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-ansi-language:EN-US;mso-char-type: symbol;mso-symbol-font-family:Symbol">bk-1и т.д.

Метод градиентного спуска.

Одним из самыхраспространённых методов минимизации, связанных с вычислением градиента,является метод спуска по направлению антиградиента минимизируемой функции. Впользу такого выбора направления спуска можно привести следующие соображения.Поскольку антиградиент, то есть <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">j

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

Метод спуска, в котором Sk=<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-ansi-language:EN-US;mso-char-type: symbol;mso-symbol-font-family:Symbol">j

’(xk), называется методомградиентного спуска.

Величина <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">b

kвметоде градиентного спуска традиционно вычисляется путём применения одного изметодов одномерной минимизации функции <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">y(<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">b)=<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">j(xk-<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">b<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">j’(xk)), что не исключает применение и других способов отыскания <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">bk.

Если в качестве <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">b

kвыбирают точку одномерногоминимума функции <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">y(<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">b)=<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">j(xk-<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">bSk)релаксационный процесс называется методом наискорейшего спуска: xk+1=xk-<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-ansi-language:EN-US;mso-char-type: symbol;mso-symbol-font-family:Symbol">bk<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">j’(xk), <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">bk=arg min {<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">y(<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">b)=<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">j(xk-<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">bSk) | <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-ansi-language:EN-US;mso-char-type: symbol;mso-symbol-font-family:Symbol">b<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">³0}.

Метод покоординатного спуска.

Одним из наиболее простыхспособов определения направления спуска является выбор в качестве Skодного из координатных векторов <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">±

e1, <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">±e2, …, <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">±en, вследствие чего у xk на каждой итерацииизменяется лишь одна из компонент.

Существуют многочисленные вариантыпокоординатного спуска. Но в любом из этих методов выбирают в качестве -Sk то из двух направлений, +ej, -ej,которому соответствуетнеравенство

 [<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">j

’(xk), Sk] > 0.

В случае, если <img src="/cache/referats/492/image002.gif" v:shapes="_x0000_i1025">xk+1=xkи переходят кследующей итерации.

Опишем первый цикл метода,состоящий из nитераций. В произвольной точке x0выбирают S0=<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">±

e, иопределяет величину <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">b0способом удвоения так,чтобы было <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">j(x1)=<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">j(x0-<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-ansi-language:EN-US;mso-char-type: symbol;mso-symbol-font-family:Symbol">b0S0)<<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-ansi-language:EN-US;mso-char-type: symbol;mso-symbol-font-family:Symbol">j(x0). Затем выбирают S1=<span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">±e2 и, полагая <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">b=<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">b0, удвоением вычисляют <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">b1и так далее. При этом накаждой итерации стремятся определение величины шага методом удвоения осуществлятьс наименьшим числом вычислений значений функции <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">j(х). Цикл заканчивается при k=n-1,после чего начинают следующий цикл, полагаяSn=<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">±e1и т.д.

Практическое задание

На практике нам нужно былонайти минимум функции z(x)=x2+y2-xy-3yc точностью <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">e

, используя описанные выше методы.

Нахождение минимума моей функции с помощью методапокоординатного спуска.

Для нахождения минимума моейфункции с помощью метода покоординатного спуска я использовал программу,представленную ниже. Входными параметрами этой программы являются координатыначальной точки (я взял х=10, y=10), начальный шаг по х ипо y(я взял <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Symbol">D

х=0.5 и <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">Dy=0.5), а так же точность (<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Symbol">e=10-5; большую точность брать неимеет смысла, поскольку во время выполнения программы накапливается ошибка иискажает данные такой точности). Итак, взяв в качестве начальных условий эти значенияя получил координаты точки минимума:

х=1,00000977

y= 1,99999931

z=-3,00000142

Для получения результатапрограммой было выполнено 24 итерации.

Нахождение минимума с помощью метода градиентногоспуска.

Программа, использованнаямной для выполнения этой задачи представлена ниже.

Поскольку входные параметрыэтой программы совпадают со входными параметрами задачи №1, то я взял их такиеже, что и для первой задачи, чтобы, сравнив полученные результаты и количествоитераций, необходимых для поиска минимума, я смог сделать какие-либо выводы опреимуществах и недостатках обеих задач из практики.

Итак, взяв те же начальныеусловия я получил следующие результаты:

x= 1,00000234

y= 2,00000119

z=-3,00000094

Количество итераций, котороепотребовалось для нахождения точки минимума равно 20. Видно, что количествоитераций, потребовавшееся первой программе больше, чем количество итераций,необходимых второй программе. Это следует из того, что антиградиент указываетнаправление наискорейшего убывания функции.

Ниже также представленграфик сходимости вышеописанного процесса для моей функции и моих начальныхусловий.

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

еще рефераты
Еще работы по математике