на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Методы синтеза и оптимизации

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

МИ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 // ввод начальных условий

with form1 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))

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

Вывод: Особенностью метода наискорейшего спуска является то, что поиск решения выполняется с оптимальным шагом, который рассчитывается с помощью одномерной минимизации функции. Градиенты в двух соседних точках ортогональны и поэтому траектория к оптимальному решению в виде зигзага с поворотом под прямым углом. При Хо(2,4) количество итераций - 5, а при Хо(-2,-4) количество итераций уменьшилось до 4,а значение целевой функции осталось прежним - F(x)=0,61370564.

Листинг подпрограммы метода.

unit Opt1_4;

interface

uses

Messages, SysUtils, Graphics, Forms, Dialogs;

const n=2;

type Artype =array[1..n] of real;

Funop=function(xi:Artype):real;

ProcMin=Procedure(a,b,e:real; var xm,ym:real);

type

TForm2 = class(TForm)

private

public

procedure Optimiz(k: integer);

end;

var

Form2: TForm2;

Nmax,prn,NN:integer;

e,Fopt:real;

X0,G:artype;

f1:funop;

Pmin:ProcMin;

kAntGrad:real;

function model1(x: Artype): real;

implementation

uses Main,UnitGraph;

// Подпрограмма вычисления заданной функции

function model(x:Artype):real;

begin

model:= exp(x[1])+sqr(x[2])-2*x[1];

end;

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.