Решение задачи поиска минимума одномерной функции при помощи программы MATLAB




Методы безусловной оптимизации

Задания для контрольной работы №1 по дисциплине “Оптимальное управление”

Содержание

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

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

Список литературы:

1. Марьясин О.Ю., Цыганков М.П. Оптимальное управление. Часть 1. Задачи конечномерной оптимизации. Учебное пособие / Ярославль. – Изд-во ЯГТУ, 2011. – 171 с.

2. Марьясин О.Ю. Практикум по оптимизации и оптимальному управлению. Учебное пособие / Ярославль. – Изд-во ЯГТУ, 2016. – 196 с.

3. Аттетков А.В., Галкин С.В., Зарубин В.С. Методы оптимизации: Учеб. для ВУЗов / Под ред. В.С. Зарубина, А.П. Крищенко. – М.: Изд-во МГТУ им. Н.Э.Баумана, 2003. – 440 с. (Серия: Математика в техническом университете, том XIV)

4. Пантелеев А.В. Методы оптимизации в примерах и задачах: Учебное пособие / А.В.Пантелеев, Т.А.Летова. – М.: Высш. Шк., 2005. – 544 с.

5. Васильков Ю.В., Василькова Н.Н. Компьютерные технологии вычислений в математическом моделировании. – М.: Финансы и статистика, 2002. – 256 с.

 


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

Задания по изучению методов одномерной оптимизации

1.1) Используя необходимые и достаточные условия найти аналитическим способом минимум функции, заданной в таблице 1.1.

 

Таблица 1.1 – Варианты заданий к/р для функции одномерного поиска

 

Оптимизируемая функция f(x) Диапазон поиска
 
 
 
 
 
 
 
 
 
 

 

1.2) По таблице 1.2 определить численный метод, заданный по фамилии студента и последней цифре зачетной книжки. Изучить принцип поиска минимума данным численным методом (по литературе) и найти минимум функции, заданной в таблице 1.1, численным способом с точностью ширины интервала не более 0,05.

В контрольной работе должен быть представлен график функции, таблицы с результатами исследований поиска (например, в программе Excel), где должны быть отражены границы и длины интервалов на каждой итерации, а также на границы и дины новых участков должны быть отмечены на графике (см. пример оформления на стр. 4-7).

 

1.3) Используя пакет оптимизации Optimization Toolbox программы MATLAB найти минимум функции, заданной в таблице 1.1 (см. стр. 8-9).

Сравнить полученные результаты точки минимума, найденные аналитическим, численным и программным методом.

 

Таблица 1.2 – Распределение методов одномерной оптимизации

 

  Первая буква фамилии студента  
Последняя цифра зачетной книжки   А - В   Г - Е   Ж - Й   К - Н   О - Р   С - У   Ф - Ц   Ч - Щ     Э - Я
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   

 

Номера методов, указанные в таблице 1.2:

 

1) метод равномерного поиска;

2) метод половинного деления;

3) метод золотого сечения;

4) метод чисел Фибоначчи;

5) метод параболической аппроксимации;

6) метод хорд (с использованием производных);

7) метод касательных (Ньютона).

 


Пример поиска минимума одномерной функции численным методом

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


 

Решение задачи поиска минимума одномерной функции при помощи программы MATLAB

 

Optimization Toolbox (пакет оптимизации) – это библиотека функций, расширяющих возможности системы MATLAB по численным методам и предназначенная для решения задач оптимизации и систем нелинейных уравнений. Поддерживает основные методы оптимизации функций многих переменных.

В Optimization Toolbox пакета программ MATLAB для решения задач одномерной нелинейной оптимизации с ограничениями вида x 1 < x <x 2 используется функция fminbnd. Алгоритм поиска базируется на методе золотого сечения и квадратичной интерполяции.

 

Запись функции:

 

x = fminbnd(fun,x1,x2)

x = fminbnd(fun,x1,x2,options)

[x,fval] = fminbnd(…)

[x,fval,exitflag] = fminbnd(…)

[x,fval,exitflag,output] = fminbnd(…)

 

Аргументы функции:

1. fun – целевая функция должна быть задана либо с помощью функции inline, либо как m -файл.

2. options – опции:

2.1. Display – уровень отображения: 'off' – вывод информации отсутствует, 'iter' – вывод информации на каждой итерации, 'final' - вывод только итоговой информации;

2.2. MaxFunEval – максимальное число вычислений функции;

2.3. MaxIter – максимальное допустимое число итераций;

2.4. Tolx – допуск останова вычислений по величине изменений x;

2.5. TolFun – допуск останова вычислений по величине изменений функции.

 

Возвращаемые параметры:

1. x – решение задачи;

2. fval – значение целевой функции в точке минимума;

3. exitflag – информация о характере завершения вычислений. Если эта величина положительная, то вычисления завершились нахождением решения x, если она равна нулю, то останов произошел в результате выполнения предельного числа итераций, если данная величина отрицательна, то решение не найдено;

4. output – информация о результатах оптимизации:

4.1. output.iterations – число выполненных итерации;

4.2. output.funcCount – число вычислений функции;

4.3. output.algorithm – используемый алгоритм.

 

Порядок работы

1.3.1 Поиск минимума функции, заданной в командной строке inline

 

Рассмотрим поиск минимума функции, являющейся элементарной, например f(x) = sin(x).

 

1. Ввести переменную options=optimset('Display','iter').

2. Задать диапазон изменения переменной x на интервале [π/2, 5π/2].

3. Получить значения функции y=sin(x) на заданном интервале.

4. С помощью команды plot(x,y) построить график функции y=sin(x) одной переменной и визуально найти минимум функции.

5. Решить задачу одномерной оптимизации c использованием функции [x,fval,exitflag,output] = fminbnd(‘sin’,pi/2,5*pi/2,options).

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

 

1.3.2 Поиск минимума функции, заданной как m -файл.

 

Рассмотрим поиск минимума функции y=(x-2)2 - 1 на интервале [0,5], которая не является элементарной.

1. Задать диапазон изменения переменной x на интервале [0, 5].

2. Получить значения функции y=(x-2)2 - 1 на заданном интервале.

3. С помощью команды plot(x,y) построить график функции y=(x-2)2 -1 одной переменной и визуально найти минимум функции.

4. Представить данную функцию в виде m-файла:

 

function f = myfun(x)

f = (x – 2)^2 – 1;

 

сохранить функцию в файл myfun.m.

 

5. Вычислить функцию в точке x=0, используя команду myfun(0).

6. Используя функцию

 

[x,fval,exitflag,output] = fminbnd(‘myfun’,0,5,options).

 

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


 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-03-02 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: