Одно- и многомерная оптимизация - файл n1.doc

приобрести
Одно- и многомерная оптимизация
скачать (50.3 kb.)
Доступные файлы (1):
n1.doc108kb.08.12.2008 18:00скачать

n1.doc

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


  1. Одномерная оптимизация.




Зададимся критерием оптимальности в виде унимодальной функции одного переменного:

.



Листинг М-файла для реализации метода простого перебора.

tek=input('Введите значение tek=');//текущему значению ф-ции присваиваем значение 0.

pos=input('Введите значение pos=');//последующему значению ф-ции присваиваем значение 0.

step=input('Введите значение step=');//задаем шаг перебора.

Xmin=input('Введите значение Xmin='); //задаем минимальное значение входной переменной;

Xmax=input('Введите значение Xmax='); // задаем максимальное значение входной переменной;

for x=Xmin:step:Xmax//начинаем цикл (перебираем значения х от 0 до 15 с шагом 0,01).

pred=tek;//предыдущему значению ф-ции присваиваем значение текущего.

tek=pos;//текущему значению ф-ции присваиваем значение последующего.

pos=(10/exp(x))+0.5*x;//считаем последующее значение функции.

if (pred>tek)&(tekпроверяем является ли текущее значение ф-ции минимумом.

Y= tek;//ордината минимума.

X=x- step;//абсцисса минимума.

end

end

[X Y]//выводим координаты точки минимума функции([3;1,9979]).


Используем функцию из метода простого перебора в качестве критерия оптимальности.
Листинг М-файла для реализации метода шагового поиска.

E=input('Введите значение E=');//задаем точность поиска.

n=0;//обнуляем счетчик шагов.

g=input('Введите значение g=');//задаем величину пробного шага.

a=input('Введите значение a=');//задаем величину рабочего шага.

tek=input('Введите значение tek=');//текущему значению ф-ции присваиваем значение (произвольный выбор).

dF=1;//задаем значение разности (произвольный выбор).

while abs(dF)>=E//запускаем цикл с предусловием.

dF=((10/exp(tek+g))+0.5*(tek+g))-((10/exp(tek-g))+0.5*(tek-g));//ищем разность.

pred=tek;

tek=pred-a*sign(dF);

n=n+1;//наращиваем счетчик на единицу.

end

X=tek;

Y=((10/exp(X))+0.5*X);//считаем ординату минимума.

[X Y]//выводим результат([3;1,9979]).


Используем функцию из метода простого перебора в качестве критерия оптимальности.
Листинг М-файла для реализации метода поиска по производной.

clc;//отчищаем рабочее окно.

n=0;//обнуляем счетчик шагов.

E=input('Введите значение E=');//задаем точность.

g=input('Введите значение g=');//задаем значение пробного шага.

c=input('Введите значение c=');

tek=input('Введите значение tek=');

dF=1;

while abs(dF)>=E

dF=((10/exp(tek+g))+0.5*(tek+g))-((10/exp(tek-g))+0.5*(tek-g));//находим разность.

a=dF/(2*g);//находим одну из составляющих рабочего шага.

pred=tek;

tek=pred-c*a;

n=n+1;//наращиваем счетчик на единицу.

end

X=tek;

Y=((10/exp(X))+0.5*X);

[X Y]//выводим результат([2,9884;1,9979]).


Используем функцию из метода простого перебора в качестве критерия оптимальности.

Выберем квадратичную параболу, которой можно заменить исходную ф-цию в районе точки экстремума: .



Листинг М-файла для реализации экстраполяционного метода поиска.

clc;//отчищаем рабочее окно.

n=0;//обнуляем счетчик шагов.

E=input('Введите значение E=');//задаем точность.

g=input('Введите значение g=');//задаем значение пробного шага.

b=0.4;

tek=1;

dF=1;

while abs(dF)>=E

dF=((10/exp(tek+g))+0.5*(tek+g))-((10/exp(tek-g))+0.5*(tek-g));

a=dF/(2*g);

pred=tek;

tek=pred-(1/(2*b))*a;

n=n+1;

end

X=tek;

Y=((10/exp(X))+0.5*X);

[X Y n]


  1. Многомерная оптимизация.




Зададимся критерием оптимальности в виде унимодальной функции двух переменных:

, .


Листинг М-файла для реализации метода простого перебора.

clc;//очищаем рабочую область;

Xmin=input('Введите значение Xmin=');//задаем минимальное значение переменной Х;

Xmax=input('Введите значение Xmax='); //задаем максимальное значение переменной Х;

Ymin=input('Введите значение Ymin='); //задаем минимальное значение переменной У;

Ymax=input('Введите значение Ymax='); //задаем максимальное значение переменной У;

stepX=input('Введите значение stepX='); //задаем шаг по переменной Х;

stepY=input('Введите значение stepY='); //задаем шаг по переменной У;

k=((Ymax-Ymin)/stepY)+1;//определяем число узлов по У;

m=((Xmax-Xmin)/stepX)+1;// определяем число узлов по Х;

mas=zeros(k,m);

i=1;

j=1;

for y=Ymin:stepY:Ymax

i=1;

for x=Xmin:stepX:Xmax

pos=((x-5).^2+(y-3).^2)/50;

mas(j,i)=pos;//значение ф-ции помещаем в массив;

i=i+1;

end

j=j+1;

end

x=Xmin:stepX:Xmax;

y=Ymin:stepY:Ymax;

C=min(mas);//находим вектор минимальных значений по столбцам;

Cmin=min(C);//находим минимальное значение ф-ции;

for i=1:k

for j=1:m

if mas(i,j)==Cmin

X=x(j);//определяем абсциссу точки минимума;

Y=y(i);//определяем ординату точки минимума;

end

end

end

[X Y Cmin]//выводим координаты точки минимума;


Используем функцию из метода простого перебора в качестве критерия оптимальности.
Листинг М-файла для реализации метода простого перебора.

clc;

Xmin=input('Введите значение Xmin=');

Xmax=input('Введите значение Xmax=');

Ymin=input('Введите значение Ymin=');

Ymax=input('Введите значение Ymax=');

a=input('Введите значение рабочего шага a=');

g=input('Введите значение пробного шага g=');

E=input('Введите значение точности E=');

dF=1;

Xpred=0;

Xtek=0.00000001;//задаем предварительные значения переменных Х и У для входа в цикл.

Xpos=0.000000011;

Ypred=0;

Ytek=0.00000001;

Ypos=0.000000011;

while abs(dF)>=E

while ((XpredXtek)&(Xtek>Xpos))

dFx=((((Xtek+g-5).^2+(Ytek-3).^2)/50)-(((Xtek-g-5).^2+(Ytek-3).^2)/50));

Xpred=Xtek;

Xtek=Xpos;

Xpos=Xtek-a*sign(dFx);//определяем направление движения по Х

end

while ((YpredYtek)&(Ytek>Ypos))

dFy=((((Xtek-5).^2+(Ytek+g-3).^2)/50)-(((Xtek-5).^2+(Ytek-g-3).^2)/50));

Ypred=Ytek;

Ytek=Ypos;

Ypos=Ytek-a*sign(dFy);//определяем направление движения по У

end

dF=((((Xpos+g-5).^2+(Ypos+g-3).^2)/50)-(((Xpos-g-5).^2+(Ypos-g-3).^2)/50));

end

X=Xpos;

Y=Ypos;

Z=(((Xpos-5).^2+(Ypos-3).^2)/50);

[X Y Z]


  • Метод градиентного поиска.

Используем функцию из метода простого перебора в качестве критерия оптимальности.
Листинг М-файла для реализации метода простого перебора.

clc;

aX=input('Введите значение параметра настройки аX=');

aY=input('Введите значение параметра настройки аY=');

gX=input('Введите значение шага gX=');

gY=input('Введите значение шага gY=');

E=input('Введите значение точности E=');

dFx=1;

dFy=1;

Xtek=0;

Ytek=0;

Xpred=0;

Ypred=0;

gradFx=0;

gradFy=0;

while (abs(dFx)>=E)&(abs(dFy)>=E)

dFx=((((Xtek+gX-5).^2+(Ytek-3).^2)/50)-(((Xtek-gX-5).^2+(Ytek-3).^2)/50));

gradFx=dFx/(2*gX);//считаем градиент по Х.

dFy=((((Xtek-5).^2+(Ytek+gY-3).^2)/50)-(((Xtek-5).^2+(Ytek-gY-3).^2)/50));

gradFy=dFy/(2*gY);//считаем градиент по У.

Xpred=Xtek;

Ypred=Ytek;

Xtek=Xpred-aX*gradFx;//определяем следующее значение Х.

Ytek=Ypred-aY*gradFy;//определяем следующее значение У.

end

X=Xtek;

Y=Ytek;

Z=((Xtek-5).^2+(Ytek-3).^2)/50;

[X Y Z]

Вывод: в ходе лабораторной работы были исследованы алгоритмы реализующие методы одно- и многомерной оптимизации технологических объектов управления. С помощью всех рассмотренных алгоритмом был получен оптимальный критерий (минимум целевой ф-ции), соответствующий действительному.

Цель работы
Учебный материал
© nashaucheba.ru
При копировании укажите ссылку.
обратиться к администрации