Применение пакета Optimization toolbox для решения задач оптимизации. Лабораторная работа №2а (1253749), страница 2
Текст из файла (страница 2)
Применение пакета Optimization Toolbox для решения задач оптимизацииМосковский государственный технический университет им.Н.Э.БауманаКафедра “Системы автоматического управления”__________________________________________________________________________________Приложение 2Обращение к отдельным функциям пакета Optimization ToolboxФункция fgoalattain служит для решения задачи многомерной векторной оптимизацииметодом «достижения цели» и записывается в следующем виде:• х=fgoalattain(fun,x0,goal,weight) – решает задачу многомернойоптимизации при заданных векторе целевых функций fun, начальном приближении х0,заданных векторах целей goal и весов weight;• х=fgoalattain(fun,x0,goal,weight,A,b) – то же, что и предыдущаяфункция, но при наличии ограничений в форме линейных неравенств А х ≤ b;• х=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq) – то же, что ипредыдущая функция, но при наличии дополнительных ограничений в форме равенств Aeq x =beq; если ограничения в форме неравенств отсутствуют, задаются А = [] и b = [];• х=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub) – то же, чтои предыдущая функция, но при наличии дополнительных граничных ограничений lb ≤ х ≤ ub;• х=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub, nonlcon) –то же, что и предыдущая функция, но при наличии дополнительных ограничений в форменелинейных неравенств или равенств с(х) ≤ 0, ceq(x) = 0, при отсутствии граничныхограничений задаются lb = [] и ub = [];• х=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,...lb,ub,nonlcon,options) – то же, что и предыдущая функция, но при задании (изменении)опций (см.
ниже);• х=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,...lb,ub,nonlcon,options,P1,P2,...) – то же, что и предыдущая функция, но призадании параметров P1, P2, ..., относящихся к функциям-аргументам;• [x,fval]=fgoalattain(...) – возвращается не только оптимальное значениевекторного аргумента, но и значение целевой функции в точке минимума fval;• [х,fval,attainfactor]=fgoalattain(...) – то же, что и предыдущаяфункция, но возвращается еще и коэффициент достижения цели attainfactor;• [х,fval,attainfactor,exitflag]=fgoalattain(...) – то же, что ипредыдущая функция, но возвращается еще информация о характере завершения вычисленийexitflag;• [х,fval,attainfactor,exitflag,output]=fgoalattain(...) – то же,что и предыдущая функция, но возвращается еще информация о результатах оптимизации(выходная структура) output;• [x,fval,attainfactor,exitflag,output,lambda] = fgoalattaint(...) –то же, что и предыдущаяфункция, но возвращаются еще множители Лагранжа lambda.Аргументы функции:• fun – векторная функция векторного аргумента.
Должна быть задана либо спомощью функции inline, например:>> fun = inline('sin(x.*x)');либо как m-файл, например:function F = myfun(x)F = ...Если задано вычисление градиента (функцией options = optimset('GradObj','on')), то mфайл должен возвращать не только значение функции F, но и значения градиентов G:function[F,G] = myfun(x)F = ...
% Вычисление векторной функцииG = ... % Вычисление градиента• goal – вектор задаваемых целевых значений той же размерности, что и вектор fun;• weight - вектор весов той же размерности, что и вектор целей, часто принимаетсяравным abs(goal).• nonlcon – функция, возвращающая значения функций-ограничений, а принеобходимости (если задано options = optimset ('GradConstr' ,'on')) и их градиентов; должнабыть оформлена в виде m-файла, например:function[c,ceq] = mycon(x)с = ... % Вычисление левых частей нелинейных неравенств________________________________________________________________________________ 6Деменков Н.П. Применение пакета Optimization Toolbox для решения задач оптимизацииМосковский государственный технический университет им.Н.Э.БауманаКафедра “Системы автоматического управления”__________________________________________________________________________________ceq = ...
% Вычисление левых частей нелинейных равенствfunction [c,ceq,GC,GCeq] = mycon(x)с = ... % Вычисление левых частей нелинейных неравенствceq = ... % Вычисление левых частей нелинейных равенствGC = ... % Градиенты неравенствGCeq = ... % Градиенты равенств• Options – опции (их можно изменять, используя функцию optimset):o DerivativeCheck – дает проверку соответствия производных, определенныхпользователем, их вычисленным оценкам в виде первых разностей;o Diagnostics – вод диагностической информации о минимизируемой функции;o DiffMaxChange – максимальные значения изменений переменных при определениипервых разностей;o DiffMinChange – минимальные значения изменений переменных при определениипервых разностей;o Display – уровень отображения: 'off' – вывод информации отсутствует, 'iter' – выводинформации о поиске решения на каждой итерации, 'final' – вывод только итоговойинформации;o GoalExactAchieve – определяет количество целей, которые должны бытьдостигнуты «точно»;o GradConstr – использование градиентов для ограничений (опция имеет смысл в случаеприменения аргумента nonlcon, см.
выше), возможные значения – 'off' и 'on';o GradObj – использование градиента для целевой функции, определяемогопользователем (возможные значения – 'off' и 'on');o MaxFunEvals – максимальное число вычислений функции;o MaxIter – максимальное допустимое число итераций;o MeritFunction – устанавливает вид функции оценки качества достижения цели(возможные значения 'multiobj' или 'singleobj');o TolCon – допуск останова вычислений при нарушении ограничений;o ТоlFun – допуск останова вычислений по величине изменений функции;o TolX – допуск останова вычислений но величине изменений х;• attainfactor – коэффициент достижения цели, усредненное значение несоответствийзаданным целям, выраженное в долевом (процентном) виде.
Если данный коэффициентотрицательный, цели были «перекрыты», если положительный – цели не достигнуты;• exitflag – информация о характере завершения вычислений: если эта величинаположительна, то вычисления завершились нахождением решения х, если она равна нулю, тоостанов произошел в результате выполнения предельного числа итераций, если данная величинаотрицательна, то решение не найдено;• lambda – множители Лагранжа, соответственно, для различных типовограничений:olambda.lower – для нижней границы lb;olambda.upper – для верхней границы ub;olambda.ineqlin – для линейных неравенств;olambda.eqlin – для линейных равенств;olambda.ineqnonlin – для нелинейных неравенств;olambda.eqnonlin – для нелинейных равенств;• output – информация о результатах оптимизации:o output.Iterations – число выполненных итераций;o output.funcCount – число вычислений функции;o output.algorithm – используемый алгоритм.Пример 1.
Пусть некоторая замкнутая динамическая система 3-го порядкаописывается уравнениями:x =A x +B u , y Cx , u Kyгде матрицы010 0.5 01 0 0 ,A 0 2 10 B 2 2 C 0 0 1 0 1 01 2характеризующие свойства объекта, являются заданными, и матрица K регулятора –изменяемой.Качество работы такой системы определяется расположением на комплексной________________________________________________________________________________ 7Деменков Н.П.
Применение пакета Optimization Toolbox для решения задач оптимизацииМосковский государственный технический университет им.Н.Э.БауманаКафедра “Системы автоматического управления”__________________________________________________________________________________плоскости собственных чисел замкнутой системы x =(A+BKC) x .Поставим следующую оптимизационную задачу.
При заданном диапазоне измененияэлементов матрицы K от -4 до +4 подобрать эти элементы таким образом, чтобысобственные числа замкнутой системы равнялись [-5,-3,-1]. В такой постановке задачаявляется многокритериальной (3 критерия) и соответствует задаче достижения цели.Решение:На первом этапе создадим m-файл для вычисления собственных чисел матрицы A+BKC.function F = eigfun(K,A,B,C)% Нахождение собственных чиселF=sort(A+B*K*C)%Упорядочивание собственных чисел.endНа втором этапе создадим оптимизирующую функциюA = [ -0.5 0 0; 0 -2 10; 0 1 -2 ];B = [ 1 0; -2 2; 0 1 ];C = [ 1 0 0; 0 0 1 ];K0=[-1 -1; -1 -1]; % Задание начальных условийgoal=[-5,-3,-1]; % Задание вектора целейweight = abs(goal);% Задание вектора весовых коэффициентовlb=-4*ones(size(K0)); % Нижние границы элементов матрицы Кub=4*ones(size(K0)); % Верхние границы элементов матрицы К% Установка опции вывода информацииoptions = optimset('Display','iter');eigfun = @(K) sort(eig(A+B*K*C));[K,fval,attainfactor,exitflag,output,lambda] = ...fgoalattain(eigfun,K0,goal,weight,[ ],[ ],[ ],[ ],lb,ub,[ ],options);Результаты вычислений:Iter01234567891011F-count61218243036424854606672AttainmentMaxfactorconstraint01.885211.0310.029980.35250.06863-0.17060.1071-0.22360.06654-0.35680.007894-0.36450.000145-0.36450-0.36750.0001549-0.38890.008327-0.38620-0.38634.116e-013Line searchsteplength11111111111Directionalderivative0.745-0.613-0.223-0.234-0.0812-0.164-0.00515-0.00812-0.007510.00568-0.998ProcedureHessian modifiedHessian modified twiceHessianHessianHessianHessianmodifiedmodifiedmodified twicemodifiedHessian modified twiceLocal minimum possible.