Методы оптимизации
Сущность и характеристика метода покоординатного спуска (метод Гаусса-Зейделя). Геометрическая интерпретация метода покоординатного спуска для целевой функции z=(x,y). Блок-схема и алгоритм для написания программы для оптимизации методом Хука-Дживса.
Рубрика | Математика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 26.12.2012 |
Размер файла | 878,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1. Метод покоординатного спуска
Существуют методы оптимизации, которые для своей реализации требуют вычисления первых или вторых производных минимизируемой функции. Однако в практических задачах нередко встречаются случаи, когда минимизируемая функция либо не обладает нужной гладкостью, либо является гладкой, но вычисление ее производных с нужной точностью требует слишком большого объема работ, много машинного времени. В таких случаях желательно иметь методы минимизации, которые требуют лишь вычисления значения функции. Одним из таких методов является метод покоординатного спуска (метод Гаусса-Зейделя).
Сначала опишем этот метод для задачи:
. (1)
Обозначим - единичный координатный вектор, у которого i-я координата равна 1, остальные равны нулю, i = 1,…,n. Пусть - некоторое начальное приближение, а - некоторое положительное число, являющееся параметром метода. Допустим, что нам уже известны точка и число при каком-либо . Положим:
, (2)
где означает целую часть числа . Условие (2) обеспечивает циклический перебор координатных векторов , т. е.
Вычислим значение функции в точке и проверим неравенство
. (3)
Если (3) выполняется, то примем:
. (4)
В том случае, если (3) не выполняется, вычисляем значение функции в точке и проверяем неравенство:
. (5)
В случае выполнения неравенства (5) положим:
. (6)
Назовем -ю итерацию удачной, если справедливо хотя бы одно из неравенств (3) или (5). Если -я итерация неудачная, т. е. не выполняются оба неравенства (3) и (5), то полагаем:
Здесь л, 0<л<1 - фиксированное число, являющееся параметром метода. Условия (7) означают, что если за один цикл из n итераций при переборе направлений всех координатных осей с шагом реализовалась хотя бы одна удачная итерация, то длина шага не дробится и сохраняется на протяжении по крайней мере следующего цикла из n итераций. Если же среди последних n итераций не оказалось ни одной удачной итерации, то шаг дробится. Таким образом, если на итерации с номером произошло дробление , то
(8)
при всех i=1,…,n. Метод покоординатного спуска для задачи (1) описан.
Заметим, что хотя метод (2) - (7) для своей реализации не требует знания градиента минимизируемой функции. Оказывается, если функция не является гладкой, то метод покоординатного спуска может не сходиться ко множеству решений задачи (1).
Описанный выше метод покоординатного спуска нетрудно модифицировать применительно к задаче минимизации функции на параллелепипеде:
,
где - заданные числа, . А именно, пусть k-е приближение и число при некоторомуже найдены. Выберем вектор согласно формуле (2), составим точку и проверим условия:
. (10)
Если оба условия (10) выполняются, то следующее приближение определяем по формулам (4). Если же хотя бы одно условие (10) не выполняется, то составляем точку и проверяем условия:
. (11)
В случае выполнения обоих условий (11) следующее приближение определяем по формулам (6), а если хотя бы одно из условий (11) не выполняется, то следующее приближение находится по формулам (7).
Существуют и другие варианты метода покоординатного спуска. Можно, например, строить последовательность по правилу:
, (12)
где определяется согласно (2), а - условиями:
. (13)
Метод (12), (13) имеет смысл применять в том случае, когда величина из (13) находится в явном виде. Так будет, если функцияквадратичная, т е.
, (14)
где A- симметричная положительно определенная матрица, . Нетрудно убедиться, что для функции (14) метод (12), (13) приводит к хорошо известному методу Зейделя из линейной алгебры.
Хотя скорость сходимости метода покоординатного спуска, вообще говоря, невысокая, благодаря простоте каждой итерации, скромным требованиям к гладкости минимизируемой функции этот метод довольно широко применяется на практике.
Существуют и другие методы минимизации, использующие лишь значения функции и не требующие для своей реализации вычисления производных. Например, используя вместо производных их разностные аппроксимации, можно построить модификации, требующие вычисления лишь значений функции в подходящим образом выбранных точках.
Другой подход для минимизации негладких функций, основанный лишь на вычислении значений функции, дает метод случайного поиска. Метод поиска глобального минимума также относится к методам, не требующим вычисления производных минимизируемой функции.
Рассмотрим еще один вариант описания метода Гаусса-Зейделя.
Пусть требуется найти наименьшее значение целевой функции . В качестве начального приближения выберем в п-мерном пространстве некоторую точку M0 с координатами . Зафиксируем все координаты функции и, кроме первой. Тогда - функция одной переменной x1. Решая одномерную задачу оптимизации для этой функции, мы от точки M0 перейдем к точке, в которой функция и принимает наименьшее значение по координате x1 при фиксированных остальных координатах. В этом состоит первый шаг процесса оптимизации, состоящий в спуске по координате x1.
Зафиксируем теперь все координаты, кроме x2, и рассмотрим функцию этой переменной . Снова решая одномерную задачу оптимизации, находим ее наименьшее значение при , т.е. в точке . Аналогично проводится спуск по координатам , а затем процедура снова повторяется от x1 до xn и т.д. В результате этого процесса получается последовательность точек M0,M1,…, в которых значения целевой функции составляют монотонно убывающую последовательность На любом k-м шаге этот процесс можно прервать, и значениепринимается в качестве наименьшего значения целевой функции в рассматриваемой области.
Таким образом, метод покоординатного спуска сводит задачу о нахождении наименьшего значения функции многих переменных к многократному решению одномерных задач оптимизации по каждому проектному параметру.
Данный метод легко проиллюстрировать геометрически для случая функции двух переменных, описывающей некоторую поверхность в трехмерном пространстве. На рисунке 1 нанесены линии уровня этой поверхности. Процесс оптимизации в этом случае проходит следующим образом. Точка описывает начальное приближение. Проводя спуск по координате х, попадем в точку . Далее, двигаясь параллельно оси ординат, придем в точку и т.д.
Рисунок 1 - Геометрическая интерпретация метода покоординатного спуска для целевой функции.
Важным здесь является вопрос о сходимости рассматриваемого процесса оптимизации. Другими словами, будет ли последовательность значений целевой функции сходиться к наименьшему ее значению в данной области? Это зависит от вида самой функции и выбора начального приближения.
Для функции двух переменных очевидно, что метод неприменим в случае наличия изломов в линиях уровня. Это соответствует так называемому оврагу на поверхности. Здесь возможен случай, когда спуск по одной координате приводит на “дно” оврага. Тогда любое движение вдоль любой координаты ведет к возрастанию функции, соответствующему подъему на “берег” оврага. Поскольку поверхности типа “оврага” встречаются в инженерной практике, то при использовании метода покоординатного спуска следует убедиться, что решаемая задача не имеет этого недостатка.
Для гладких функций при удачно выбранном начальном приближении (в некоторой окрестности минимума) процесс сходится к минимуму. К достоинствам метода покоординатного спуска следует также отнести возможность использования простых алгоритмов одномерной оптимизации.
Пример. Составить программу для расчета минимума целевой функции методом покоординатного спуска.
Алгоритм программы представлен на рисунке 2.
Рисунок 2 - Алгоритм программы для расчета минимума целевой функции методомпокоординатного спуска.
Текст программы приведен ниже.
ProgramKoordinatny_spusk;
usescrt;
var a,z,x,x0,x1,xk,y,y0,y1,yk,zmin,h:real;
i,n:integer;
begin
clrscr;
write(`Ввод X0:');
readln(x0);
write(`ВводXk:');
readln(xk);
write(`„B„r„Ђ„tY0:');
readln(y0);
write(`„B„r„Ђ„tYk:');
readln(yk);
write(`„B„r„Ђ„tH:');
readln(h);
zmin:=100000;
x:=x0; y:=y0;
while (x<=xk) do
begin
z:=sqr(x)+sqr(y);
if(z<zmin) then begin
x1:=x;
zmin:=z;
end;
x:=x+h
end;
while (y<=yk) do
begin
z:=sqr(x1)+sqr(y);
if(z<zmin) then begin
y1:=y;
zmin:=z;
end;
y:=y+h
end;
writeln;
writeln(`Pri X=',x1:4:2,' Y=',y1:4:2,'Zmin=',zmin:4:2);
readkey
end.
2. Метод Хука-Дживса
Метод Хука-Дживса был разработан в 1961 году, но до сих пор является весьма эффективным и оригинальным. Поиск состоит из последовательности шагов исследующего поиска вокруг базисной точки, за которой в случае успеха следует поиск по образцу.
Описание этой процедуры представлено ниже:
А. Выбрать начальную базисную точку и шаг длинойдля каждой переменной , j= 1, 2, …,n. В приведенной ниже программе для каждой переменной используется шаг h, однако указанная выше модификация тоже может оказаться полезной.
Б. вычислитьв базисной точке с целью получения сведений о локальном поведении функции . Эти сведения будут использоваться для нахождения подходящего направления поиска по образцу, с помощью которого можно надеяться достичь большего убывания значения функции. Функция в базисной точке находится следующим образом:
1. Вычисляется значение функции в базисной точке .
2. Каждая переменная по очереди изменяется прибавлением длины шага. Таким образом, мы вычисляем значение функции , где - единичный вектор в направлении оси . Если это приводит к уменьшению значения функции, то заменяется на . В противном случае вычисляется значение функции , и если ее значение уменьшилось, то заменяется на . Если ни один из проделанных шагов не приводит к уменьшению значения функции, то точка остается неизменной и рассматриваются изменения в направлении оси , т. е. находится значение функции и т. д. Когда будут рассмотрены все nпеременные, мы будем иметь новую базисную точку .
3. Если , т. е. уменьшение функции не было достигнуто, то исследование повторяется вокруг той же базисной точки , но с уменьшенной длиной шага. На практике удовлетворительным является уменьшение шага (шагов) в десять раз от начальной длины.
4. Если , то производится поиск по образцу.
В. При поиске по образцу используется информация, полученная в процессе исследования, и минимизация функции завершается поиском в направлении, заданном образцом. Эта процедура производится следующим образом:
1. Разумно двигаться из базисной точки в направлении , поскольку поиск в этом направлении уже привел к уменьшению значения функции. Поэтому вычислим функцию в точке образца:
(1)
В общем случае:
(2)
2. Затем исследование следует продолжать вокруг точки .
3. Если наименьшее значение на шаге В,2 меньше значения в базисной точке (в общем случае ), то получают новую базисную точку (), после чего следует повторить шаг В,1. В противном случае не производить поиск по образцу из точки , а продолжить исследования в точке .
Г. Завершить этот процесс, когда длина шага (длины шагов) будет уменьшена заданного малого значения.
Ниже приведена блок-схема данного метода.
Рисунок - Блок-схема для метода Хука-Дживса
Рисунок - Блок-схема алгоритма для написания программы
10PRINT “МЕТОД ХУКА-ДЖИВСА”
20REM ФУНКЦИЯ ВЫЧИСЛЯЕТСЯ В ВИДЕ Z=F(X1,X2,…,XN) В СТРОКЕ 2000
30PRINT “ВВЕДИТЕ ЧИСЛО ПЕРЕМЕННЫХ”:INPUTN
40 DIM X(N),B(N),Y(N),P(N)
50PRINT “ВВЕДИТЕ НАЧАЛЬНУЮ ТОЧКУ X1,X2,…,XN”
60 FOR I=1 TO N:INPUT X(I):NEXT I
70PRINT “ВВЕДИТЕ ДЛИНУ ШАГА”:INPUTH
80K=H:F E=0
90 FOR I=1 TO N
100 Y(I)=X(I):P(I)=X(I):B(I)=X(I):NEXT I
110GOSUB 2000:FI=Z
120PRINT “НАЧАЛЬНОЕ ЗНАЧЕНИЕ ФУНКЦИИ” Z
130 FOR I=1 TO N:PRINT X(I);“ “;:NEXT I:PRINT””
140PS=0:BS=1
150REM ИССЛЕДОВАНИЕ ВОКРУГ БАЗИСНОЙ ТОЧКИ
180 J=1:FB=FI
200X(J)=Y(J)+K
210 GOSUB 2000
220 IF Z<FI THEN GOTO 280
230X(J)=Y(J)-K
240 GOSUB 2000
250 IF Z<FI THEN GOTO 280
260X(J)=Y(J)
270 GOTO 290
280Y(J)=X(J)
290GOSUB 2000
300FI=Z
310PRINT “ИССЛЕДУЮЩИЙ ПОИСК” Z
320 FOR I=1 TO N:PRINT X(I);“ “;:NEXT I:PRINT””
330 IF J=N THEN GOTO 360
340 J=J+1
350 GOTO 200
360 IF FI<FB-1E-08 THEN GOTO 540
370REM ПОСЛЕ ОПЕРАТОРА 360, ЕСЛИ ФУНКЦИЯ УМЕНЬШИЛАСЬ, ПРОИЗВЕСТИ ПОИСК ПО ОБРАЗЦУ
380 IF PS=1 AND BS=0 THEN GOTO 420
390REM НО ЕСЛИ ИССЛЕДОВАНИЕ ПРОВОДИЛОСЬ ВОКРУГ ТОЧКИ ШАБЛОНА РТ, И УМЕНЬШЕНИЕ ФУНКЦИИ НЕ БЫЛО ДОСТИГНУТО, ТО ИЗМЕНИТЬ БАЗИСНУЮ ТОЧКУ В ОПЕРАТОРЕ 420
400REM В ПРОТИВНОМ СЛУЧАЕ УМЕНЬШИТЬ ДЛИНУ ШАГА В ОПЕРАТОРЕ 490
410 GOTO 490
420 FOR I=1 TO N:P(I)=B(I):Y(I)=B(I):X(I)=B(I):NEXT I
430 GOSUB 2000:BS=1:PS=0
440 FI=Z:FB=Z
450PRINT “ЗАМЕНА БАЗИСНОЙ ТОЧКИ” Z
460 FOR I=1 TO N:PRINT X(I);“ “;:NEXT I:PRINT””
470REM (СЛЕДУЕТ ЗА КОММЕНТАРИЕМ В СТРОКЕ 395) И ПРОВЕСТИ ИССЛЕДОВАНИЕ ВОКРУГ НОВОЙ БАЗИСНОЙ ТОЧКИ
480 J=1:GOTO 200
490 K=K/10
500 PRINT “УМЕНЬШИТЬ ДЛИНУ ШАГА”
510 IF |<< 1E-08 THENGOTO 700
520 REM ИССЛЕДОВАНИЕ ВОКРУГ НОВОЙ БАЗИСНОЙ ТОЧКИ
530 J=1:GOTO 200
535 REM ПОИСК ПО ОБРАЗЦУ
540 FOR I=1 TO N:P(I)=2*Y(I)-B(I)
550 B(I)=Y(I):X(I)=P(I):Y(I)=X(I)
560 NEXT I
570 GOSUB 2000:FB=FI:PS=1:BS=O:FI=Z
580 PRINT “ПОИСК ПО ОБРАЗЦУ” Z
590 FOR I=1 TO N:PRINT X(I);“ “;:NEXT I:PRINT””
600 REM ПОСЛЕ ЭТОГО ПРОИЗВЕСТИ ИССЛЕДОВАНИЕ ВОКРУГ ПОСЛЕДНЕЙ ТОЧКИ ОБРАЗЦА
610 J=1:GOTO 200
700 PRINT “МИНИМУМ НАЙДЕН”
710 FOR I=1 TO N:PRINT “X”I“-”P(I):NEXT I:PRINT
750 PRINT “МИНИМУМ ФУНКЦИИ РАВЕН” FB
760 PRINT “КОЛИЧЕСТВО ВЫЧИСЛЕНИЙ ФУНКЦИИ РАВНО” FE
790 END
2000 Z=(X(1)-2)^2+(X(2)-5)^2+(X(3)+2)^4
2010 FE=FE+1
2020 REM СЧЕСЧИК КОЛИЧЕСТВА ВЫЧИСЛЕНИЙ ФУНКЦИИ
2030 RETURN
Приведенная выше программа реализует описанную процедуру. Одной или двух точек бывает недостаточно для определения начальной точки. Первая точка всегда должна выбираться осмотрительно. ЭВМ работает только с ограниченной точностью, и ошибки могут накапливаться в процессе сложных вычислений, особенно если шаг имеет «неудобную» длину. (Обычно избегают «неудобной» длины, но программа должна быть работоспособна и в таких ситуациях). Поэтому в строке 36, где выясняется вопрос об изменении базисной точки, мы избегаем уменьшения длины шага из-за накапливания ошибки введением длины шага, равной 10-8. Мы отслеживаем, где производится исследование - в базисной точке (BS = 1, PS = 0)или в точке образца (BS = 0, PS = 1). Как можно убедиться на практике, если не принимаются такие меры предосторожности,даже программа с удовлетворительной логикой будет неработоспособна.
В приведенной программе минимальная длина шага равна 10-8, но она может быть изменена (например, в строке 51). Для контроля за выполнением процедуры в программу введена печать промежуточных результатов. Для увеличения скорости счета могут быть удалены строки с номерами 12, 13, 31, 32, 45, 46, 50, 58, 59.
Программа, начинающаяся со строки 20, выполняет значение минимизируемой функции:
.
Минимум, очевидно, находится в точке (2; 5; -2). Для начальной точки (4; -2; 3) и начального шага длиной 1 приведены некоторые промежуточные результаты. По ним можно легко проследить за изменениями в ходе исследований и поиска по образцу. Заметим, что значение 97,0000001 является значением функции в точке, полученной ранее. Количество выполненных вычислений функции запоминается в счетчике. Это часто используется как средство сравнения эффективности различных методов поиска. Чем лучше метол, тем меньше в общем случае требуется вычисления значений функции
Метод Хука-Дживса
введите число переменных 3
введите начальную точку х1,х2,…,xN 4 -2 3
введите длину шага 1
начальное значение функции 678
4 -2 3
исследующий поиск 675
3 -2 3
исследующий поиск 662
3 -1 3
исследующий поиск 293
3 -1 2
Поиск по образцу 106
2 0 1
исследующий поиск 106
2 0 1
исследующий поиск 97
2 1 1
исследующий поиск 32
2 1 0
поиск по образцу 5
1 3 -2
исследующий поиск 4
2 3 -2
исследующий поиск 1
2 4 -2
исследующий поиск 1
2 4 -2
поиск по образцу 20
2 7 -4
исследующий поиск 20
2 7 -4
исследующий поиск 17
2 6 -4
исследующий поиск 2
2 6 -3
Замена базисной точки 1
2 4 -2
исследующий поиск 1
2 4 -2
исследующий поиск 0
2 5 -2
Поиск по образцу 1
2 6 -2
исследующий поиск 1
2 6 -2
исследующий поиск 0
2 5 -2
исследующий поиск 0
2 5 -2
замена базисной точки 0
2 5 -2
исследующий поиск 0
2 5 -2
исследующий поиск 0
2 5 -2
исследующий поиск 0
2 5 -2
уменьшение длины шага
исследующий поиск 0
исследующий поиск 0
2 5 -2
исследующий поиск 0
2 5 -2
исследующий поиск 0
2 5 -2
Уменьшение длины шага
минимум найден
х1=2
х2=5
х3=-2
минимум функции равен 0
количество вычислений функции равно 127
Список использованных источников
метод оптимизация алгоритм
1 Васильев Ф. П. Методы оптимизации: научное издание. /Ф. П. Васильев - М.: Изд-во Факториал Пресс, 2002. - 824 с.
2 Аоки М. Введение в методы оптимизации: учебн. /М. Аоки. перевод с англ., Главная редакция физико-математической литературы М.: изд-во Наука, 1977. - 344 с.
3 Аттетков А. В., Галкин С. В., Зарубин В. С. Методы оптимизации: учеб.для вузов / под ред. В. С. Зарубина, А. П. Крищенко. - 2-е изд., стереотип. - М.: изд-во МГТУ им. Н. Э. Баумана, 2003. - 440 с.
4 Банди Б. Методы оптимизации. Вводный курс: пер. с англ. - М.: Радио и связь, 1988. - 128 с.
5 Корнеенко В. П. Методы оптимизации: Учеб. / В. П. Корнеенко. - М.: Высш. шк., 2007. - 664 с.
6 Пантелеев А. В. Методы оптимизации в примерах и задачах: Учеб.пособие / А. В. Пантелеев, Т. А. Летова. - М.: Высш. шк., 2005. - 544 с.
7 РеклейтисГ.Оптимизация в технике: в 2 кн. / Г. Реклейтис, А. Рейвиндран. - М.: Мир, 1986. - 320 с.
8 Батищев Д. И. Оптимизация в САПР: Учебник/ Д.И. Батищев, Я. Е.Львович, В.Н.Фролов. - Воронеж: Изд-во ВГУ, 1997. - 238 с.
9 Сухарев А..Г., Тимохов А..В., Федоров В.В. Курс методов оптимизации. М.: Наука. 1985. - 254 с
Размещено на Allbest.ru
Подобные документы
Общая схема методов спуска. Метод покоординатного спуска. Минимизация целевой функции по выбранным переменным. Алгоритм метода Гаусса-Зейделя. Понятие градиента функции. Суть метода наискорейшего спуска. Программа решения задачи дискретной оптимизации.
курсовая работа [90,8 K], добавлен 30.04.2011Поиск оптимального решения. Простейший способ исключения ограничений. Многомерные методы оптимизации, основанные на вычислении целевой функции. Метод покоординатного спуска. Модифицированный метод Хука-Дживса. Исследование на минимум функции Розенброка.
курсовая работа [697,6 K], добавлен 21.11.2012Методы нахождения минимума функций градиентным методом наискорейшего спуска. Моделирование метода и нахождение минимума функции двух переменных с помощью ЭВМ. Алгоритм программы, отражение в ней этапов метода на языке программирования Borland Delphi 7.
лабораторная работа [533,9 K], добавлен 26.04.2014Формирование функции Лагранжа, условия Куна и Таккера. Численные методы оптимизации и блок-схемы. Применение методов штрафных функций, внешней точки, покоординатного спуска, сопряженных градиентов для сведения задач условной оптимизации к безусловной.
курсовая работа [1,8 M], добавлен 27.11.2012Численные методы поиска безусловного экстремума. Задачи безусловной минимизации. Расчет минимума функции методом покоординатного спуска. Решение задач линейного программирования графическим и симплексным методом. Работа с программой MathCAD.
курсовая работа [517,9 K], добавлен 30.04.2011Методы нахождения минимума функции одной переменной и функции многих переменных. Разработка программного обеспечения вычисления локального минимума функции Химмельблау методом покоординатного спуска. Поиск минимума функции методом золотого сечения.
курсовая работа [95,1 K], добавлен 12.10.2009Рассмотрение эффективности применения методов штрафов, безусловной оптимизации, сопряженных направлений и наискорейшего градиентного спуска для решения задачи поиска экстремума (максимума) функции нескольких переменных при наличии ограничения равенства.
контрольная работа [1,4 M], добавлен 16.08.2010Понятие и специфические черты системы линейных алгебраических уравнений. Механизм и этапы решения системы линейных алгебраических уравнений. Сущность метода исключения Гаусса, примеры решения СЛАУ данным методом. Преимущества и недостатки метода Гаусса.
контрольная работа [397,2 K], добавлен 13.12.2010Форма для ввода целевой функции и ограничений. Характеристика симплекс-метода. Процесс решения задачи линейного программирования. Математическое описание алгоритма симплекс-метода. Решение задачи ручным способом. Описание схемы алгоритма программы.
контрольная работа [66,3 K], добавлен 06.04.2012Геометрическая интерпретация методов Ньютона, итерации и спуска. Определение корня уравнения с заданной степенью точности. Решение систем нелинейных алгебраических уравнений. Нахождение эквивалентного преобразования для выполнения условия сходимости.
курсовая работа [371,6 K], добавлен 14.01.2015