Смекни!
smekni.com

Методы синтеза и оптимизации (стр. 1 из 3)

МИHИСТЕРСТВО ОБРАЗОВАHИЯ И НАУКИ УКРАИHЫ

ДОHБАССКАЯ ГОСУДАРСТВЕHHАЯ МАШИHОСТРОИТЕЛЬHАЯ АКАДЕМИЯ

Кафедра компьютерных информационных технологий

Контрольная работа №1, 2

по дисциплине

«Методы синтеза и оптимизации»

Выполнила

студентка группы ИТ 99-1з Александрова А.Н

Проверила

Веремей О.В.

Краматорск 2002


Задание 1

ПРОГРАММИРОВАНИЕ ЧИСЛЕННЫХ МЕТОДОВ ОДНОМЕРНОЙ ОПТИМИЗАЦИИ

Цель задания: закрепить теоретические сведения и приобрести практические навыки разработки алгоритмов и программ для нахождения экстремальных значений функции одной переменной методом перебора с применением ЭВМ.

Найти максимум и минимум функции

при изменении аргумента от -4 до 3 с точностью 0,0001. Функция достигает максимума при меньших значениях аргумента. Постройте график функции.

Исходные данные приведены в таблице 1.

Таблица 1

Номер варианта A B С D
6 1,5 0,4 -5,6 -10,8


Рисунок 1 – блок-схема метода

Решение задачи на ЭВМ с графиком исследуемой функции

На рисунке 2 изображено решение задачи на ЭВМ с графиком функции.


Рисунок 2- результаты работы программы, график функции

Краткие выводы по работе

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

Программареализующаяалгоритм

:


procedure TForm1.SpeedButton1Click(Sender: TObject);

var a,b,c,d,e,y,Ymax,Xmax,

x0,X,Xk,Xmin,Ymin,h,k :real;

i,n,count :integer;

status :integer; // 0-убывание, 1-возрастание

label l1;

Function MOO(x:real):real;

begin

result:=a*x*x*x + b*x*x + c*x + d;

end;

begin

Form1.Series1.Clear;

try // ввод начальных условий

withform1 do

begin

LabelXmin.Caption:='Xmin = 0';

LabelYmin.Caption:='Ymin = 0';

LabelXmax.Caption:='Xmax = 0';

LabelYmax.Caption:='Ymax = 0';

end;

a:=strtofloat(form1.Edit1.Text);

b:=strtofloat(form1.Edit2.Text);

c:=strtofloat(form1.Edit3.Text);

d:=strtofloat(form1.Edit4.Text);

e:=strtofloat(form1.Edit5.Text);

h:=strtofloat(form1.Edit6.Text);

x0:=strtofloat(form1.Edit7.Text);

xk:=strtofloat(form1.Edit8.Text);

k:=10;

Ymin:=1000000000;

Ymax:=-10000000000;

status:=1;

count:=1;

except

showMessage('Неправильно введены начальные условия');

end;

l1: n:=trunc((xk-x0)/h)+1;

x:=x0;

for i:=1 to n do

begin

y:=MOO(x);

case status of

0: if y<Ymin then

begin

Ymin:=y;

Xmin:=x;

X:=x+h;

end;

1: if Y>Ymax then

begin

Ymax:=y;

Xmax:=x;

X:=x+h;

end;

end;

end;

if count <= 2 then

if h <= e then

begin

with form1 do // вывод результата

begin

LabelXmin.Caption:='Xmin = '+floatTostr(Xmin);

LabelYmin.Caption:='Ymin = '+floatTostr(Ymin);

LabelXmax.Caption:='Xmax = '+floatTostr(Xmax);

LabelYmax.Caption:='Ymax = '+floatTostr(Ymax);

end;

status :=(status+1) mod 2; //Следующий экстремум

count:=count+1;

x0:=Xmin;

xk:= strtofloat(form1.Edit8.Text);

h:=strtofloat(form1.Edit6.Text);

goto l1;

end

else

begin

x0:=Xmin-h;

xk:=Xmin+h;

h:=h/k;

goto l1;

end;

x:=strtofloat(form1.Edit7.Text);

while x < strtofloat(form1.Edit8.Text) do

begin

y:=MOO(x);

form1.Series1.AddXY(x,y);

x:=x+0.1;

end;

end;



Задание 2

РЕШЕНИЕ ОДНОМЕРНЫХ ЗАДАЧ ОПТИМИЗАЦИИ МЕТОДАМИ ПОСЛЕДОВАТЕЛЬНОГО ПОИСКА

Цель задания: приобрести практические навыки разработки алгоритмов и программ для решения одномерных задач оптимизации методами последовательного поиска: дихотомии и золотого сечения.

Индивидуальное задание

Найти минимум функции f(x) на промежутке [a,b] с точностью

. Исходные данные и номера вариантов приведены в таблице 2. Построить график минимизируемой функции.

Найдите минимум функции

на промежутке [a,b] c точностью ε = 10-4 , методом «золотого сечения»постройте график минимизируемой функции.

Блок-схема метода «Золотого сечения» представлена на рисунке3.


Рисунок 3 – Блок-схема метода «Золотого сечения»

На рисунке 4 изображено решение задачи на ЭВМ и график минимизируемой функции.

Вывод: Методы последовательного поиска строятся в предположении унимодальности функции на заданном интервале. Исходя из свойств, унимодальности строится такая стратегия последовательного поиска экстремальной точки Х*, при которой любая пара вычислений f(x) позволяет сузить область поиска (интервал неопределённости).

Процедураминимизациифункции:


procedure TForm1.SpeedButton2Click(Sender: TObject);

label l2;

Var a,b,e,x,x1,x2,y,y1,y2,Xmin,Ymin :real ;

n :integer;

t:string;

Function f(x:real):real;

begin

f:=tan(x)+exp(-x)+x;

{ f:=x*x+sin(x);}

end;

begin

Form1.Series1.Clear;

try // ввод начальных условий

a:=strtofloat(form1.Edit9.Text);

b:=strtofloat(form1.Edit10.Text);

e:=strtofloat(form1.Edit11.Text);

except

showMessage('Неправильно введены начальные условия');

end;

x1:=a+0.382*(b-a); x2:=b-0.382*(b-a);

y1:=f(x1); y2:=f(x2);

n:=1;

l2: n:=n+1;

if y1<= y2 then

begin

b:=x2;

if (b-a) >= e then

begin

x2:=x1;

x1:=a+0.382*(b-a);

y2:=y1;

y1:=f(x1);

goto l2;

end;

end

else

begin

a:=x1;

if (b-a)>=e then

begin

x1:=x2;

x2:=b-0.382*(b-a);

y1:=y2;

Y2:=f(x2);

goto l2;

end;

end;

Xmin:=(a+b)/2;

Ymin:=f(Xmin);

str(Xmin:10:4,t);

form1.Label20.Caption:='Xmin = '+t;

str(Ymin:10:4,t);

form1.Label21.Caption:='Ymin = '+t;

form1.Label22.Caption:='n = '+Inttostr(n);

x:=strtofloat(form1.Edit9.Text);

while x < strtofloat(form1.Edit10.Text) do

begin

y:=f(x);

form1.Series1.AddXY(x,y);

x:=x+0.1;

end;

end;



Задание 3

ГРАДИЕНТНЫЕ МЕТОДЫ РЕШЕНИЯ МНОГОМЕРНЫХ ЗАДАЧ ОПТИМИЗАЦИИ

Цель задания: закрепить теоретические сведения и приобрести практические навыки поиска безусловного экстремума функции многих переменных градиентным методом.

Индивидуальное задание

Найдите минимум функции

методом наискорейшего спуска, выбрав начальную точку
.Дать геометрическую иллюстрацию решения задачи.
Решение

1) В точке

f(X0) =
= -14,5

Вычислим координаты градиента функции в точке Х0 :

.

Поскольку

, то Х0 не является точкой экстремума

2) Переместимся изХ0 вдоль градиента -

в новую точкуХ1 по формуле:

т.е.
.

Для определения координат точки Х1 нужно выбрать значение шага

. Получим :

Из соотношения

(
,
)=0 имеем:

(-3-3

)(-3)+(1+
)=10+10
=0

откуда

=

Задание 4

ПРИМЕНЕНИЕ ГРАДИЕНТНЫХ МЕТОДОВ ДЛЯ ОПТИМИЗАЦИИ НА ЭВМ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ ОБЪЕКТОВ

Цель задания: приобрести практические навыки разработки алгоритмов и программ оптимизации математических моделей градиентным методом.

Индивидуальное задание

Найдите минимум функции f(x1,х2) методом наискорейшего спуска, выбрав в качестве начальной точки сначала Хо, а затем точку из противоположного квадраниа. Сравните число итераций. Для определения оптимального шага путём одномерной минимизации вдоль антиградиентного направления примите метод дихотомии в программе, предусмотрите отрисовку траектории наискорейшего спуска.

, при Хо(2,4).

Блок-схема алгоритма решения изображена на рисунке 5



Рисунок 5- блок-схема алгоритма решения методом наискорейшего спуска


Результаты работы программы.

Рисунок 6- Решение задачи на ЭВМ и траектория поиска оптимальных значений (при Хо(2,4))