Методы одномерной оптимизации Выполнил студент группы АТП -12: Лысогор О. С.
Задачи При разработке проекта ставились следующие задачи : Выполнить литературный обзор по данной теме Программно реализовать алгоритм Создать интерфейс пользователя Разработать руководство по эксплуатации программы Подробно разобрать 2 метода одномерной оптимизации : метод перебора и метод золотого сечения.
Оптимизация Под оптимизацией понимают процесс выбора наилучшего варианта из всех возможных. С точки зрения инженерных расчетов методы оптимизации позво ляют выбрать наилучший вариант конструкции, наилучшее распределение ресурсов и т. п. Одномерная задача оптимизации в общем случае : Найти наименьшее ( или наибольшее ) значение целевой функции у =f( х ), заданной на множестве, и определить значение проектного параметра, при котором целевая функция принимает экстремальное значение. Если на заданном множестве не существует экстремальных значений, находятся значения функции в границах множества. Аргумент функции, значение которой больше становится точкой максимума, аргумент функции, значение которой меньше – точкой минимума.
Методы одномерной оптимизации Дифференцирование Метод перебора Метод золотого сечения Метод деления отрезка пополам Метод деления на три равных отрезка
начало a=get(handles.A,'String') b=get(handles.B,'String') n=get(handles.N,'String') funstr=get(handles.F,'String') fun=inline(funstr) k=0; p=0; j=1; l=1; for i=a+n:n:b-n fun(i)>fun(i+n) & fun(i)>fun(i-n) MAX(1,j)=i j=j+1 k=k+1 fun(i)<fun(i+n) & fun(i)<fun(i-n) MIN(1,l)=i l=l+1 p=p p==0 & k==0 fun(a)>fun(b) fun(b)>fun(a) Вывод MIN, MAX конец MIN(1,1)=min MAX(1,1)=max max=a min=b max=b min=a Блок - схема метода перебора
Метод золотого сечения Пропорция золотого сечения равна Таким образом
1 1 Блок - схема метода золотого сечения
Блок - схема программы
Сравнение аналитического решения с результатами работы программы. Функция f(x)=x^2; A=-1; B=1; n=0.5 Метод перебора. Проход 1. i=-0.5; f(i)=f(-0.5)=0.25; f(i+n)=f(0)=0; f(i-n)=f(-1)=1; Условие максимума не выполнилось т. к. f(i) <f(i- n) Условие минимума также не выполнилось т. к. f(i)>f(i+n) Проход 2. i=0; f(i)=0; f(i+n)=0.25; f(i-n)=0.25; Условие максимума не выполнилось т. к. f(i)<f(i+n) Условие минимума выполнилось, поэтому MIN(1,1)=0; Проход 3. i=0.5; f(i)=f(0.5)=0.25; f(i+n)=f(1)=1; f(i-n)=f(0)=0; Условие максимума не выполнилось т. к. f(i) <f(i+n) Условие минимума также не выполнилось т. к. f(i)>f(i-n) В итоге получился 1 минимум и 0 максимумов, поэтому сравниваются значения функции на концах интервала на выявление точки максимума. В данном случае значения функции на концах отрезка равны, тогда из абсцисс выбирается наибольшая, то есть 1. Ответ : MIN=0; MAX=1
Результаты программы при методе перебора.
Метод золотого сечения P=1.618; Минимизация. 1)abs(B-A)=2<E X1=B- (B-A)/p=-0.236; X2=A+(B-A)/p; Y1=0.0557; Y2=0.0557; Y1=y2 => A=x1= )abs(B-A)=1,236>E X1=0.236; X2=0.5278; Y1=0.556; Y2=0.2786; Y2>y1 => B=x2=0,5278 3)abs(B-A)=0.764>E X1=0.0558; X2=0.236; Y1=0.0031; Y2= Y2>y1 => B= )abs(B-A)=0.472<E Min=( )/2=0; Максимизация 1)abs(B-A)=2>E X1=0.236; x2=0.236; Y1=0.0557; y2= ; Y1=y2 => A=-0.236; 2)abs(B-A)=1.236>E X1=0.236; x2=0.5278; Y1=0.0556; y2=0.2786; Y1 A=0.236; 3)abs(B-A)=0.764>E X1=0.528; x2=0.708; Y1=0.278; y2=0.501; Y1 A=0.528; 4)abs(B-A)=0.472<E Max=0.764;
Результаты программы при методе золотого сечения.
Справка Программа предназначена для нахождения точек экстремума функции одной переменной методами перебора и золотого сечения. Для начала работы Вам необходимо ввести в соответствующее поле функцию, точки экстремумов которой необходимо найти. Далее Вы выбираете нужный Вам метод. Если вы выбрали метод перебора, то в рабочем пространстве появятся новые поля для заполнения : A и B – концы промежутка, на котором будет осуществляться поиск точек экстремума, и N – шаг разбиения. Если вы выбрали метод перебора, то в рабочее пространстве появятся новые поля для заполнения : A и B – концы промежутка, на котором будет осуществляться поиск точек экстремума, и E – погрешность. После ввода нажмите кнопку « Найти точки экстремума » и Вы получите результат Для того, чтобы очистить рабочее пространство необходимо нажать кнопку « Очистить » либо зайти во вкладку меню « Главная » и выбрать пункт « Очистить » Для того, чтобы выйти из программы необходимо зайти во вкладку меню « Главная » и выбрать пункт « Выход ».