Помощь в написании студенческих работ
Антистрессовый сервис

Методы спуска. 
Приближенное решение задач выпуклого программирования градиентным методом

РефератПомощь в написанииУзнать стоимостьмоей работы

В качестве исходной берем точку (1; 1), которая лежит в области решений. Так как Z является выпуклой функцией, то для нахождения точек Хк, будем пользоваться формулой (10.16'), в которой, возможно, вместо VZ/; будем брать вектор 1к с тем же направлением, но более простыми координатами (см. замечание). Длина шага? находится по формуле (10.17'), на каждом шаге производятся аналогичные вычисления… Читать ещё >

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом (реферат, курсовая, диплом, контрольная)

Общая схема решения задач математического программирования методами спуска состоит в построении последовательности.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. (10.14).

решений системы ограничений данной задачи по следующему принципу: в качестве Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. выбирается, вообще говоря, любая точка области решений и затем каждая последующая точка получается из предыдущей по формуле.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. (10.15).

где Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. — некоторое направление (т.е. вектор),.

а? — число. При этом направление? и «длина шага»? выбираются так, чтобы обеспечить сходимость последовательности (10.14) к оптимальному решению Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.. В общем случае процесс получения последовательных приближений Хк бесконечен (и тогда некоторое Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. берется за приближенное значение оптимального решения X*), однако иногда процесс может завершиться и за конечное число шагов, приводя к локальному, а в задачах ВП и глобальному оптимуму.

Находя производную по направлению Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом., мы можем определять, является ли направление? «невыгодным» или «выгодным» в смысле приближения к оптимуму.

10.6. В задаче ВП нужно найти минимум функции.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. при ограничениях: Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Взяв за Х0 точку (1; 1), проверить, приблизимся ли мы контимуму по направлению: а)? = (2; 1); б) /, = (-2; 1).

Решение. По критерию Сильвестра (10.5) нетрудно убедиться, что функция ? является выпуклой при .г, > 0,.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. Находим Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом., значит, Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Отсюда, учитывая, что, по формуле (10.1) по лучаем: Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Таким образом, в направлении? функция Z убывает, и по этому направлению мы приближаемся к оптимуму, а в направлении /, функция возрастает, т. е. мы удаляемся от оптимума. >

Так как направление градиента VZ целевой функции является направлением ее наискорейшего роста, то при отыскании максимума вогнутой функции (минимума выпуклой функции) в качестве? часто берется VZ (-VZ) и тогда формула (10.15) принимает вид.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. (10.16).

ил и.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. (10.16').

Методы спуска, в которых итерационная последовательность (10.14) находится по формуле (10.16) (или (10.16')), называются градиентными. Друг от друга они отличаются способами выбора длины шага? и алгоритмами нахождения точки Хк+1, если Хк находится на границе области решений и формула (10.16) выводит Хкн за пределы этой области. Выбор длины шага? очень важен. Как видно из рис. 10.6, перемещаясь из точки Х0 в направлении VZ, мы в некоторый момент можем «проскочить» мимо точки Л', в которой достигается искомый максимум. Если величина? выбирается так, чтобы приращение функции VZ при перемещении из точки Хк в точку Хк+1 было наибольшим (при отыскании Zma! i) или наименьшим (при отыскании ??), то градиентный метод называется методом скорейшего спуска. Таким образом, по методу скорейшего спуска длина шага? в формуле (10.16) (или (10.16') выбирается так, чтобы при этом? достигался экстремум функции.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.. Обратите внимание на то, что при нахождении точки Хк+{ предыдущая точка Хк считается уже известной, т. е. Z (XA) и kZ (Xk) являются постоянными величинами, a VZ — функцией одной переменной ?. Продифференцировав функцию ?? с учетом выражения Хк+1.

по формуле (10.16)и выражения градиента в точке ,.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом., получим, что необходимое условие экстремума Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. примет вид.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. (10.17).

Ему можно придать более компактную форму, если использовать скалярное произведение векторов:

  • src="/imag/econom/krem_islopek/image1043.jpg" >(10.17')
  • (Напомним, что скалярное произведение векторов в прямоугольной системе координат равно сумме произведений их соответствующих координат. Например, если? = (2,-1) и /, = (3, 5), то? • /j = 2 • 3 + (-1) •5 = 1. Скалярное произведение векторов равно нулю тогда и только тогда, когда они ортогональны.)

Если оптимум достигается внутри области решений системы ограничений данной задачи ВП, то нет опасности, что точка Хк+х, найденная по формуле (10.16) или (10.16'), выйдет за пределы этой области, и длину шага? определяем по формуле (10.17) без каких-либо дополнительных ограничений. Рассмотрим примеры решения таких задач, а к случаю, когда оптимум достигается на границе области, обратимся позднее. Вместо VZ (X0), VZ (Z,) и т. д. будем писать VZ (), VZ]t … Заметим также, что для различных к длина шага? по формуле (10.16), вообще говоря, различна и для строгости нужно было бы писать ??, но это сделало бы запись решения более громоздкой.

10.7. Используя метод скорейшего спуска, найти максимум функции Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. при ограничениях:

Решение. Функция (-?) является выпуклой при любых ?? х2 (проверьте это самостоятельно, см. (10.4) и задачу 10.2), значит, по свойству 1 выпуклых функций ? – вогнутая функция и поэтому се локальный максимум совпадает с глобальным. Область решений системы ограничений данной задачи изображена на рис. 10.6 (хотя, вообще говоря, ее построение для решения задачи необязательно).

Решение. Функция (-?) является выпуклой при любых ?? х2 (проверьте это самостоятельно, см. (10.4) и задачу 10.2), значит, по свойству 1 выпуклых функций ? — вогнутая функция и поэтому се локальный максимум совпадает с глобальным. Область решений системы ограничений данной задачи изображена на рис. 10.6 (хотя, вообще говоря, ее построение для решения задачи необязательно).

В качестве исходной точки возьмем точку Х,(1; 2). Найдем частные производные функции ?:

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Запишем общее выражение градиента:

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. (10.18).

Рис. 10.6.

Рис. 10.6.

Подставляя в (10.18) координаты точки Х0, получим VZp=(6;6). По формуле (10.16) X, = Х0 + ??? = (1; 2)+ +?(6; 6) = (? + 6?; 2 + 6?). Подставляя координаты точки X, в (10.18), получаем.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Теперь можем записать уоавнение (10.17') для нахождения Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом., откуда Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

т.е. Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.. Подставив это значение в выражения X, и VZ, через? (см. выше), получаем Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

и Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. Так как градиент в точ ке (4; 5) равен нулю, то X, является точкой максимума, Zmajt = 5. (За один шаг мы достигли точного оптимума. Это не является общей закономерностью; есть задачи, в которых оптимальное решение получается за большее число шагов, и задачи, в которых за любое конечное число шагов мы получаем лишь приближенное решение.) >

Для случая функции двух переменных метод скорейшего спуска имеет простую геометрическую интерпретацию: для любого к луч, идущий от точки Хк к точке Х/;+), перпендикулярен к линии уровня функции Z, проходящей через точку Хк (так как направлен по градиенту), и касается линии уровня, проходящей через точку Хк+{ (так как ввиду условия (10.16') он перпендикулярен к следующему лучу, который в свою очередь перпендикулярен к этой линии уровня). Таким образом, па плоскости скорейший спуск происходит по двум взаимно перпендикулярным направлениям так, как показано на рис. 10.7.

Замечание. Для упрощения счета можно в формулах (10.16) и (10.17') брать вместо XZk любой вектор с тем же направлением, т. е. координаты XZk можно умножать или делить на положительное число.

10.8. Найти методом скорейшего спуска с точностью до 0,01 минимум функции Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. при ограничениях Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Решение. Найдем частные производные.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. и общее выражение градиента целевой функции:

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Рис. 10.7.

Рис. 10.7.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

В качестве исходной берем точку (1; 1), которая лежит в области решений. Так как Z является выпуклой функцией, то для нахождения точек Хк, будем пользоваться формулой (10.16'), в которой, возможно, вместо VZ/; будем брать вектор 1к с тем же направлением, но более простыми координатами (см. замечание). Длина шага? находится по формуле (10.17'), на каждом шаге производятся аналогичные вычисления, которые подробно объяснены в предыдущем примере.

I шаг.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

II шаг. Вместо VZ, возьмем /, =(0; 1). Тогда.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

откуда Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

III шаг. Вместо VZ2 возьмем /2 = (1; 0). Тогда.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

IV шаг. Берем /3 = (0; 1). Тогда Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

V шаг. Берем. Тогда.

V шаг. Берем Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.. Тогда.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

откуда Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. и Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Таким образом, Х5 =(0,4 296 875; 0,71 875). Сравнение X4 и X- показывает, что координаты этих точек отличаются меньше чем на 0,01, и поэтому («правда, не совсем строго) можно положить А» (0,43; 0,72). Нетрудно убедиться, что все точки Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. лежат в области решений системы ограничений. >

Рассмотрим теперь задачу ВП, когда оптимум целевой функции достигается на границе области решений системы ограничений. В этом случае, взяв, как и ранее, в качестве исходной точки Х0 любую точку из области решений и находя последующие точки по формуле (10.16) или (10.16'), мы на некотором шаге получим, что Хк уже не лежит в области решений (рис. 10.8, а). Тогда вместо Хк берем точку Х'к, которая лежит на пересечении направления спуска с границей области решений, а последующие точки находятся путем проецирования на эту границу точек, получаемых обычным методом скорейшего спуска. Поскольку общий оператор проецирования не изучается в нашем курсе, ограничимся случаем, когда система ограничений линейная, т. е. область решений задачи для случая двух переменных ограничена отрезками прямых (рис. 10.8, б).

В этом случае система ограничений данной задачи примет вид.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. (10.19).

Пусть по методу скорейшего спуска мы построили точки Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. и убедились (подставляя в (10.19) координаты.

Рис. 10.8.

Рис. 10.8.

этих точек), что Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. лежат в области решений, а точка Xk+i уже не лежит в ней. Значит, координаты точки Х1/+{ не удовлетворяют хотя бы одному неравенству системы (10.19), например неравенству Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. (здесь i — номер конкретного неравенства). Пусть Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. и Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом., т. е.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. (10.20)

Здесь Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. — направление спуска, которое совпадает с направлением Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. при отыскании максимума или с направлением — Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. при отыскании минимума.

Чтобы остаться в пределах области решений, следует вместо точки Х.+. взять точку, лежащую на том же направлении спуска, т. е. с координатами, удовлетворяющими условию (10.20), но с меньшей длиной шага ?. Значение? нужно выбирать так, чтобы точка оказалась на границе области решений, т. е. чтобы выполнялось равенство Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. Учитывая (10.20), получаем Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.. Отсюда.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. (10.21).

Формула (10.21) дает значение ?, при котором направление спуска пересекает границу области решений. Если координаты точки Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. нс удовлетворяют нескольким неравенствам системы (10.19), то нужно найти? по формуле (10.21) для каждого из этих неравенств и взять наименьшее из найденных значений. Подставляя его в (10.20), найдем координаты точки Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом., которая будет исходной для следующего шага решения. Так как проекция градиента Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. задачи с линейными ограничениями лежит на границе области решений, а для случая двух переменных просто на прямой Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. ,.

то направление спуска? на следующем шаге берется на этой.

Рис. 10.9.

Рис. 10.9.

границе. Оптимум достигается в той точке, в которой градиент перпендикулярен границе области решений.

Замечание. Если прямая на плоскости имеет уравнение Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом., то ее направление задается вектором Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. или вектором Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. (рис. 10.9).

10.9. Используя методскорейшего спуска, найти максимум функции Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. при ограничениях:

Решение. Отметим, что функция Z вогнутая, т.е. данная задача является задачей ВП. Находим частные производные функции Z и записываем общее выражение ее градиента:

Решение. Отметим, что функция Z вогнутая, т. е. данная задача является задачей ВП. Находим частные производные Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. функции Z и записываем общее выражение ее градиента:

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

I шаг. В качестве исходной возьмем точку Х0 = (1; 1) (ее координаты удовлетворяют системе ограничений). Далее, используя формулы (10.15) и (10.16'), также, как и в задачах 10.6 и 10.7, находим точку Ху? Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. . Тогда Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Рис. 10.10.

Рис. 10.10.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Отсюда? = -, т. е. 37?(4,5; 0,3). Так как 4,5 + 0,6<10 и 4,5+0,3<6, то X, находится внутри области ношений Хннс.^Ш.ШЛ, .,.

II шаг. Находим Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.. Мож, но не производить этих вычислений. Достаточно убедиться, что первая компонента положительна, и тогда взять /[ = (l; 5). В самом деле, 1^ 1/0, так как /, • /0 = 1 • 5 + 5 • (-1) = 0, и /, имеет то же направление, что VZr Теперь.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. откуда Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. ,.

т.е.? ? 0,50 и Х2 ? (5,01; 2,78). Мы видим, что Х2 лежит уже вне области решений, причем не выполняются первое и второе неравенства. По формуле (10.21) находим? для обоих неравенств:

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Берем Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. и теперь получаем.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Нетрудно убедиться, что эта точка лежит на границе области X, + х2 = 16.

III шаг. Попав на границу области, мы должны двигаться по ней в сторону увеличения функции Z. Ввиду замечания, сделанного перед этим примером, направление прямой х,+.г2 = 16 задается вектором /'= (1; -1) или /" = (-1; 1). По формуле (10.1) находим производную функции Z по направлению Г в точке X.;.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Значит, в этом направлении функция Z убывает, и в качестве направления спуска следует взять Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Итак,.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Далее поступаем, как и на предыдущих шагах:

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Отсюда Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом. и Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом.

Так как (4,6 + 2,8) < 10, то точка Х3 является решением данной задачи.

Поскольку Методы спуска. Приближенное решение задач выпуклого программирования градиентным методом., проекция градиента на это направление равна нулю, значит, мы достигли оптимального значения функции при данных ограничениях.

Таким образом,.

Показать весь текст
Заполнить форму текущей работой