ebook img

Оптимизация в среде MATLAB PDF

192 Pages·02.677 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Оптимизация в среде MATLAB

Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Пермский национальный исследовательский политехнический университет» А.Л. Гольдштейн ОПТИМИЗАЦИЯ В СРЕДЕ MATLAB Утверждено Редакционно-издательским советом университета в качестве учебного пособия Издательство Пермского национального исследовательского политехнического университета 2015 УДК 004.422.8:519.873(075.8) Г63 Рецензенты: д-р физ.-мат. наук, директор по корпоративному обучению и научной деятельности А.Н. Румянцев (ООО «Парма-Телеком») д-р техн. наук, профессор Ю.Н. Хижняков (Пермский национальный исследовательский политехнический университет) Гольдштейн, А.Л. Г63 Оптимизация в среде MATLAB: учеб. пособие / А.Л. Гольд- штейн. – Пермь: Изд-во Перм. нац. исслед. политехн. ун-та, 2015. – 192 с. ISBN 978-5-398-01361-0 Рассмотрены возможности системы компьютерной математики MATLAB в части решения оптимизационных задач. Достаточно под- робно описаны функции пакетов расширения Toolbox Optimization и Toolbox Global Optimization. Приведены многочисленные примеры ре- шения задач оптимизации в режиме командной строки, иллюстрирован- ные двумерными и трехмерными графиками, а также задания для вось- ми лабораторных работ. Предназначено для студентов (бакалавров и магистров), изучаю- щих курс «Методы оптимизации». Также может быть полезно тем, кто сталкивается с необходимостью решать задачи оптимизации. УДК 004.422.8:519.873(075.8) ISBN 978-5-398-01361-0 © ПНИПУ, 2015 2 ОГЛАВЛЕНИЕ Введение........................................................................................................5 1. Одномерная минимизация в MATLAB..................................................7 2. Безусловная минимизация функций многих переменных.................................................................................................11 2.1. Функция fminunc.............................................................................11 2.2. Функция fminsearch.........................................................................17 Лабораторная работа № 1. Одномерная и безусловная оптимизация............................................................................................20 3. Условная оптимизация..........................................................................21 Лабораторная работа № 2. Условная оптимизация.............................40 4. Глобальная оптимизация.......................................................................41 4.1. Метод GlobalSearch.........................................................................41 4.2. Метод MultiStart...............................................................................50 Лабораторная работа № 3. Исследование методов GlobalSearch и MultiStart..............................................................................................69 4.3. Метод Direct Search.........................................................................70 4.4. Метод Simulated Annealing.............................................................87 Лабораторная работа № 4. Исследование методов прямого поиска и отжига.......................................................................98 4.5. The Genetic Algorithm....................................................................100 4.6. Сравнительная характеристика решателей.................................116 Лабораторная работа № 5. Генетический алгоритм..........................117 5. Многокритериальная оптимизация....................................................119 5.1. Функция gamultiobj.......................................................................119 5.2. Метод достижения цели. Функция fgoalattain............................128 5.3. Функция fminimax.........................................................................135 Лабораторная работа № 6. Решение многокритериальных задач.......................................................................................................137 6. Линейное программирование. Функция linprog................................139 7. Целочисленное программирование. Функция bintprog ...................148 3 8. Квадратичное программирование. Функция quadprog.....................152 Лабораторная работа № 7. Решение задач математического программирования...............................................................................157 9. Другие функции пакета Toolbox Optimization...................................159 9.1. Нахождение корней функции одной переменной......................159 9.2. Решение системы нелинейных уравнений..................................160 9.3. Нелинейная задача наименьших квадратов................................164 9.4. Задача аппроксимации..................................................................166 9.5. Неотрицательный линейный метод наименьших квадратов........................................................................168 9.6. Линейная задача наименьших квадратов с ограничениями...................................................................................170 Лабораторная работа № 8. Решение уравнений и метод наименьших квадратов .........................................................172 Список рекомендуемой литературы.......................................................174 Приложение 1. Параметры fminunc........................................................175 Приложение 2. Параметры fmincon........................................................177 Приложение 3. Параметры GlobalSearch и MultiStart...........................180 Приложение 4. Параметры Direct Search...............................................182 Приложение 5. Параметры Simulated Annealing...................................184 Приложение 6. Параметры Genetic Algorithm (ga и gamultiobj)........................................................................................185 Приложение 7. Параметры fgoalattain и fminimax................................187 Приложение 8. Параметры quadprog......................................................189 Приложение 9. Параметры fsolve...........................................................190 4 ВВЕДЕНИЕ MATLAB (MATrix LABoratore) – одна из наиболее мощных сис- тем компьютерной математики, построенная на расширенном приме- нении матричных вычислений. Она включает пакеты расширения Simulink, Toolbox и Blockset, ориентированные на самые разнообраз- ные задачи, где требуются математические расчеты, глубокий анализ и моделирование. MATLAB имеет развитый высокоуровневый язык программирова- ния и прекрасную двумерную и трехмерную графику, позволяющую наглядно представлять результаты расчетов, экспериментов и процес- сы моделирования. Пакеты расширения Toolbox (ящик инструментов) специализи- руются на решении задач в различных предметных областях: в физике и астрономии, в специальных разделах математики и математическом моделировании, в проектировании и управлении технических систем и т.д. Основным инструментом MATLAB являются функции, которые реализуют определенные операции и алгоритмы. Имеются встроенные функции, в том числе все элементарные, и внешние, оформленные в виде так называемых m-файлов. Внешние функции могут пополняться собственными функциями пользователя. В расширения Toolbox входят два пакета, предназначенные для решения задач оптимизации: Toolbox Optimization и Toolbox Global Optimization. Настоящее пособие посвящено описанию этих пакетов. Первый пакет включает набор функций, в которых реализованы методы и алгоритмы одномерной и многомерной безусловной и услов- ной минимизации, линейного, булевого и квадратичного программи- рования, наименьших квадратов и решения уравнений, а также алго- ритмы многокритериальной оптимизации. Функции пакета Global Optimization ориентированы на поиск глобального минимума или многих минимумов. Здесь используются методы прямого поиска, мультистарта, моделирования отжига, генети- ческий алгоритм. В этот пакет также включена функция многокрите- риального генетического алгоритма. Пакеты предлагают два способа решения задач: с использованием командной строки и с использованием графического пользовательско- 5 го интерфейса (GUI). Второй способ проще, но уступает первому в гибкости и функциональности. Режим командной строки предостав- ляет пользователю всю мощь системы MATLAB, поэтому в пособии описывается использование именно этого режима решения задач. При умении решать задачи в командном окне использование GUI не вызо- вет никаких затруднений (для обращения к нему в меню соответст- вующего Toolbox следует выбрать Optimtool). MATLAB, включая рассматриваемые пакеты, имеет мощную и удобную систему помощи, содержащую многие тысячи страниц доку- ментации. Для быстрого доступа к интересующему объекту достаточно набрать help и имя объекта, например оператора или функции. В пособии рассматриваются функции обоих пакетов, приводятся многочисленные примеры их использования, во многих случаях они сопровождаются наглядным графическим представлением результатов. Для практического освоения и использования методов оптимизации, реализованных в пакетах, предлагается выполнить восемь лаборатор- ных работ, охватывающих большинство функций пакетов. Для тех, кто не работал с MATLAB, обратим внимание на два ва- рианта некоторых арифметических операторов: традиционный опера- тор (*, ^, /), определяющий матричную операцию, и оператор с точкой впереди (.*, .^, ./), задающий поэлементные действия с операндами. 6 1. ОДНОМЕРНАЯ МИНИМИЗАЦИЯ В MATLAB Toolbox Optimization содержит специальные функции, каждая из которых ориентирована на определенный тип задачи оптимизации. Для одномерной минимизации непрерывных функций предназначена функция пакета fminbnd. Решаемая задача имеет вид min f(x), a < x < b. Алгоритм минимизации базируется на методах золотого сечения и квадратичной аппроксимации (параболической интерполяции). Варианты обращения к функции fminbnd: x = fminbnd(fun,x1,x2) x = fminbnd(fun,x1,x2,options) x = fminbnd(problem) [x,fval] = fminbnd(...) [x,fval,exitflag] = fminbnd(...) [x,fval,exitflag,output] = fminbnd(...) Слева от знака равенства записываются выходные величины, и ес- ли их больше одной, то они перечисляются через запятую в квадрат- ных скобках. Справа от имени функции в круглых скобках указывают- ся входные величины (аргументы функции). В приведенных записях приняты следующие обозначения: x – значение x, соответствующее локальному минимуму функции f(x); fval – значение f(x) в точке найденного локального минимума; exitflag – признак, идентифицирующий причину завершения ал- горитма, его возможные значения: 1 – сходимость алгоритма к минимуму; 0 – число итераций превысило максимально установленное; –1 – причина в функции вывода (решение не достигнуто); –2 – границы несовместны. Output – структура, содержащая информацию о процессе, имеет поля: Iterations – число итераций; funcCount – число вычислений целевой функции; algorithm – используемый алгоритм; message – конечное сообщение. 7 Входные аргументы: fun – целевая функция, может быть определена как m-файл (m-фун- кция), например: function f = myfun(x) f = sin(x^2); (файл сохраняется под именем myfun.m), и тогда на месте fun записы- вается @myfun, где myfun – имя функции и соответствующего ей m-файла; также fun можно представить непосредственно формулой (без использования имени) как конструкцию @(x)sin(x^2) или как строковое выражение ‘sin(x^2)’; x1,x2 – значения левой и правой границ переменной x; options – опции алгоритма, исходно все установлены по умолчанию; применяетcя, если необходимо изменить какие-либо параметры опти- мизации; при этом перед обращением к функции fminbnd вносятся изменения в настройки опций options с помощью функции optim- set, аргументами которой являются пары «имя параметра, устанавли- ваемое значение параметра», например установка options=optimset(‘Display’, ‘off’) исключит вывод на экран (в командное окно) промежуточных данных. При значении 'iter' будут выводиться результаты каждой итерации. Другие значения параметра – 'final' и 'notify' (вывод итогов и вывод только при отсутствии сходимости). Указание параметра 'Out- putfcn', в качестве значения которого записывается имя функции, приводит к вызову этой функции на каждой итерации алгоритма. Зна- чение параметра 'PlotFcn' определяет функцию вывода графики. В пакете это функции @optimplotx (рисует текущую точку), @optimplotfunccount (выводит количество вычислений функции), @optimplotfval (выводит текущее значение целевой функции). Функции вывода и графики могут быть написаны пользователем. При включении параметра FunValCheck ('on') выводится сообщение при возврате целевой функцией комплексного значения или Inf и NaN. Problem – сохраненное из GUI Optimization Tool описание зада- чи, а именно: f – целевая функция, x1 – левая граница, x2 – правая граница, 8 solver – 'fminbnd', options – структура параметров, создается optimset. Результатом выполнения функции fminbnd является локальное решение (локальный минимум). Пример 1. Найти минимум функции y = x + 25/x в интервале 2 < x < 9. Для решения задачи в командное окно записываем программу: >> x=2:0.1:9;y=x+25./x; plot(x,y);xlabel('x'); ylabel('y');... title('Minimization by fminbnd');hold on; ... options=optimset('Outputfcn', @outmy);... [x,fval,exitflag,output]=fminbnd('x+25./x',2,9,options) Примечание. Многоточие позволяет перейти на следующую стро- ку, иначе при нажатии Enter выполнится введенная перед ним часть программы. Также многоточие позволяет разрывать выражение для переноса на следующую строку. Пояснения к программе: в 1-й строке выводится график функции и обозначения осей, во 2-й выводится заголовок и дается указание на удержание графического окна, в 3-й функция outmy во время работы алгоритма выводит точки, соответствующие итерациям, в то же графи- ческое окно. Эта функция записана в виде m-файла function stop = outmy(x,optimValues,state) stop = false; switch state case 'init' hold on case 'iter' y=x+25./x; plot(x,y,'red.'); % Label points with iteration number. text(x,y+.15,num2str(optimValues.iteration+1)); case 'done' hold off end end Результаты выполнения программы, выводимые в командное и графическое окна, представлены ниже и на рис. 1. 9 Рис. 1. Поиск минимума одномерной функции x = 5.0000 fval = 10.0000 exitflag = 1 output = iterations: 9 funcCount: 10 algorithm: 'golden section search, parabolic interpolation' message: [1x112 char] 10

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.