Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
21
Добавлен:
02.05.2014
Размер:
57.86 Кб
Скачать

Федеральное агентство по образованию Российской Федерации

Уфимский государственный авиационный технический университет

Кафедра АПрИС

Лабораторная работа №2

Многомерная безусловная оптимизация

Выполнил: студент группы САПР-327 Абдрафиков М.А.

Проверила: Колоденкова А.Е.

Уфа 2006

Многомерная безусловная оптимизация

1. Цель работы

Знакомство с методами многомерной безусловной оптимизации первого и нулевого порядка и их освоение, сравнение эффективности применения этих методов конкретных целевых функций.

2. Условие задачи

Вариант 1:

Составить программы, реализующие следующие методы поиска:

- градиентный метод с постоянным шагом;

- метод покоординатного спуска с постоянным шагом.

Найти точку минимума функции

Начальное приближение: (1;0)

Точность решения: 0,0001

4.1 Текст программы:

Program Grad_ConstStep;

Uses crt,graph;

Var

x,y,e,a,x1,x2,g: real;

k,dr,md: integer;

function realst(r:real; dig,deg:integer):string;

var Buf:string[20];

begin str(r:dig:deg,buf); realst:=Buf; end;

Function f(x1,x2: real): real;

Begin f:=x1-1.4*x2+exp(0.01*x1*x1+0.11*x2*x2); end;

Function p1(x1,x2: real): real;

Begin p1:=1+exp(0.01*x1*x1+0.11*x2*x2)*0.02*x1; end;

Function p2(x1,x2: real): real;

Begin p2:=-1.4+exp(0.01*x1*x1+0.11*x2*x2)*0.22*x2; end;

begin

clrscr;

write('vvedite nachalnoe priblisenie Xo1 '); readln(x1);

write('vvedite nachalnoe priblisenie Xo2 '); readln(x2);

write('vvedite postoianij shag a '); readln(a);

write('vvedite uslovie ostanova e '); readln(e);

k:=0; dr:=detect;

initgraph(dr,md,''); setGraphmode(md);

line(399,0,399,470); line(0,200,640,200);

outtextxy(620,210,'x1'); outtextxy(410,455,'x2');

setcolor(black); lineto(399,455); setcolor(white);

repeat

x1:=x1-a*p1(x1,x2);x2:=x2-a*p2(x1,x2);

g:=sqrt(p1(x1,x2)*p1(x1,x2)+p2(x1,x2)*p2(x1,x2));

k:=k+3; lineto(round(x1*30)+400,round(x2*30)+200);

until (abs(g)<e)or(abs(g)=e);

outtextxy(40,20,'tochka minimuma imeet koordinati: ');

outtextxy(40,30,'x1= ' + realst(x1,10,5));

outtextxy(40,40,'x2= ' + realst(x2,10,5));

outtextxy(40,50,'y= ' + realst(f(x1,x2),10,10));

outtextxy(40,60,'chislo vichislenij ravno '+realst(k,5,0));

Readkey; closegraph;

end.

4.2 Текст программы:

Program Grad_ConstStep;

Uses crt,graph;

Var

x,y,e,a,x1,x2,g: real;

i,k,dr,md: integer;

function realst(r:real; dig,deg:integer):string;

var Buf:string[20];

begin str(r:dig:deg,buf); realst:=Buf;

end;

Function f(x1,x2: real): real;

Begin f:=x1-1.4*x2+exp(0.01*x1*x1+0.11*x2*x2); end;

Function p1(x1,x2: real): real;

Begin p1:=1+exp(0.01*x1*x1+0.11*x2*x2)*0.02*x1; end;

Function p2(x1,x2: real): real;

Begin p2:=-1.4+exp(0.01*x1*x1+0.11*x2*x2)*0.22*x2; end;

begin

clrscr;

write('vvedite nachalnoe priblisenie Xo1 '); readln(x1);

write('vvedite nachalnoe priblisenie Xo2 '); readln(x2);

write('vvedite postoianij shag a '); readln(a);

write('vvedite uslovie ostanova e '); readln(e);

k:=0; dr:=detect; initgraph(dr,md,''); setGraphmode(md);

line(399,0,399,470); line(0,200,640,200);

outtextxy(620,210,'x1'); outtextxy(410,455,'x2');

setcolor(black); lineto(399,455); setcolor(white);

repeat

if (i mod 2)=0 then x1:=x1-a*p1(x1,x2);

if (i mod 2)<>0 then x2:=x2-a*p2(x1,x2);

i:=i+1; g:=sqrt(p1(x1,x2)*p1(x1,x2)+p2(x1,x2)*p2(x1,x2));

k:=k+1; lineto(round(x1*30)+400,round(x2*30)+200);

until (abs(g)<e)or(abs(g)=e);

outtextxy(40,20,'tochka minimuma imeet koordinati: ');

outtextxy(40,30,'x1= ' + realst(x1,10,5));

outtextxy(40,40,'x2= ' + realst(x2,10,5));

outtextxy(40,50,'y= ' + realst(f(x1,x2),10,10));

outtextxy(40,60,'chislo vichislenij ravno '+realst(k,5,0));

Readkey; closegraph;

end.

5.1 график траектории промежуточных приближений

5.2 график траектории промежуточных приближений

6. Результаты сравнения рассмотренных методов поиска

Метод поиска

Полученная точка минимума

Значение f(x1,x2)

Кол-во итераций

X1

Х2

1

градиентный метод с постоянным шагом

-11.25108

1.43208

-8.8124053445

135

2

метод покоординатного спуска с постоянным шагом

-11.25108

1.43211

-8.8124053443

89

Вывод:

В данной работе были изучены два метода многомерной безусловной оптимизации:

- градиентный метод с постоянным шагом;

- метод покоординатного спуска с постоянным шагом.

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

Соседние файлы в папке №2