Применение пакета Optimization toolbox для решения задач оптимизации. Лабораторная работа №2а (1253749), страница 3
Текст из файла (страница 3)
Constraints satisfied.fgoalattain stopped because the size of the current search direction is less than twicethe default value of the step size tolerance and constraints are satisfied to withinthe default value of the constraint tolerance.Здесь: Iter – число итераций, F-count –количество вычислений функций, Attainment factor –коэффициент (уровень) достижения цели, Max constraint - , Line search steplength – шаг поиска ,Directional derivative – норма градиента .Конечное значение матрицы KK = -4.0000-0.2564-4.0000-4.0000Итоговые значения собственных чисел eigfun(K)ans = -6.9313 -4.1588 -1.4099Итоговое значение коэффициента достижения цели attainfactorattainfactor = -0.3863,что говорит о перевыполнении заданных целей в среднем на 38% (сравнение итоговыхсобственных значений с заданными это подтверждает)/Для получения более приемлемого результата зададим опцию точного достижения всехтрех целей:Options = optimset(options,'GoalsExactAchieve',3);после чего повторим поиск оптимального решения.В результате получим.K = -1.59531.2040________________________________________________________________________________ 8Деменков Н.П.
Применение пакета Optimization Toolbox для решения задач оптимизацииМосковский государственный технический университет им.Н.Э.БауманаКафедра “Системы автоматического управления”__________________________________________________________________________________-0.4201-2.9047eigfun(K)ans = -5.0000 -3.0000 -1.0000attainfactor = -1.5410e-022.Промоделируем поведение замкнутой системы при начальных условиях x0 = [1;1;1];[Times, xvals] = ode45(@(u,x)((A + B*K*C)*x),[0,4],x0);plot(Times,xvals)legend('x_1(t)','x_2(t)','x_3(t)','Location','best')xlabel('t');ylabel('x(t)');1.4x 1(t)1.2x 2(t)x 3(t)1x(t)0.80.60.40.2000.511.52t2.533.54Функция fmincon предназначена для поиска минимума скалярной функции многихпеременных при наличии линейных ограничений видас(х) < 0, ceq(x) = 0,А х < b, Aeq x = beq,lb < x < ub(задача нелинейною программирования).
Функция записывается в видеx = fmincon(fun,x0,A,b)x = fmincon(fun,x0,A,b,Aeq,beq)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)Если отсутствуют ограничения на отдельные компоненты x(i) сверху или снизу, тосоответствующие компоненты векторов lb и ub задаются как - (lb(i)=-Inf) или + (ub(i)=Inf).Нелинейное условие может быть задано с помощью двухкомпонентной функции[c,ceq]=nonlcon(x),для которой искомая точка минимума должна удовлетворять двум ограничениям: c(x)0 иceq(x)=0. Обращениеx = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)Если какой-то параметр не используется, вместо него задается пустой аргумент ([ ]).Можно передавать минимизируемой функции fun и функции ограничений nonlcon, кромеаргумента список дополнительных параметров P1,P2 и т.д.x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, ...)[x,fval] = fmincon(...)[x,fval,exitflag] = fmincon(...)[x,fval,exitflag,output] = fmincon(...)[x,fval,exitflag,output,lambda] = fmincon(...)[x,fval,exitflag,output,lambda,grad] = fmincon(...)Ускорение вычислительного процесса может быть достигнуто заданием формулвычисления градиента и /или гессиана.[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(...)Аргументы и возвращаемые величины практически аналогичны рассмотренным дляфункции fgoalattain за следующими исключениями:1) имеется дополнительная возвращаемая величина grad – градиент функции в точкеминимума;2) имеется возможность задания вычисления гессиана Н (вводом функции options =optimset ('Hessian','on'), что должно быть отражено в m-файле:function [f,g,H] = myfun(x)f = … % Вычисление целевой функцииg = … % Вычисление градиента________________________________________________________________________________ 9Деменков Н.П.
Применение пакета Optimization Toolbox для решения задач оптимизацииМосковский государственный технический университет им.Н.Э.БауманаКафедра “Системы автоматического управления”__________________________________________________________________________________Н = … % Вычисление гессиана3) имеется дополнительная возвращаемая величина hessian – гессиан Н функции в точкеминимума;Если действительно найден минимум, то компоненты градиента достаточно малы, агессиан – положительно определенная матрица, в чем можно убедиться с помощью критерияСильвестраdet(hes)>0.4) возможны дополнительные опции и имеются различия в их использовании:o LargeScale – может принимать значения 'off' (no умолчанию) и 'on'.
В первомслучае используется алгоритм средней размерности, во втором – алгоритмбольшой размерности.Следующие опции используются только при работе с алгоритмом средней размерности:o DerivativeCheck;o DiffWaxChange;o DiffMinChange;o LineSearchType – задание вида алгоритма одномерной оптимизации.Опции, используемые только в алгоритме большой размерности:o Hessian – гессиан (в случае матрицы Гессе, задаваемой пользователем);o HessPattern – задание гессиана как разреженной матрицы (это можетпривести к существенному ускорению поиска минимума);o MaxPCGIter – максимальное число итераций PCG-алгоритма (preconditionedconjugate gradient);o PrecondBandWidth – верхняя величина начальных условий для PCG-алгоритма;o TolPCG – допуск на завершение РСG-итераций;o TypicalX – типовые величины х;5) возвращаемая величина output в данном случае имеет дополнительные компоненты:o output.cgiterations – число PCG-итераций (только при использовании алгоритмабольшой размерности);o output.stepsize – величина конечного шага поиска (только при использованииалгоритма средней размерности);o output.firstorderopt – мера оптимальности первого порядка (норма вектораградиента в точке минимума) – только при использовании алгоритма большойразмерности).Пример 2.
Требуется найти минимум функции f(х)= –x1x2x3 при начальном значениих=[10;10;10] и при наличии ограничении 0 ≤ x1+2x2+2x3 ≤ 72.Решение:Вначале создадим m-файл, определяющий целевую функцию:Function=myfun(x)F=-x(1)*x(2)*x(3);Затем запишем ограничения в виде неравенств:– x1 – 2x2 – 2x3 ≤ 0,x1 + 2x2 + 2x3 ≤ 72,или в матричной форме:А х ≤ b,где 1 2 20A, b .22172Теперь нахождение решения представляется следующим образом:>> A=[-1 -2 -2; 1 2 2];>> b=[0;72];>> x0=[10;10;10]; % стартовое значение>> [x,fval]=fmincon(‘myfun’,x0,A,b)х=24.000012.000012.0000fval =-3.4560е+003________________________________________________________________________________ 10Деменков Н.П.
Применение пакета Optimization Toolbox для решения задач оптимизацииМосковский государственный технический университет им.Н.Э.БауманаКафедра “Системы автоматического управления”__________________________________________________________________________________Функция fminsearch позволяет найти минимум функции нескольких переменных безограничений, то есть решение задачи безусловной оптимизации с использованием симплексногометода.Формы записи, аргументы и возвращаемые величины аналогичны рассмотренным ранее:x = fminsearch(fun,x0)x = fminsearch(fun,x0,options)x = fminsearch(fun,x0,options,P1,P2,...)[x,fval] = fminsearch(...)[x,fval,exitflag] = fminsearch(...)[x,fval,exitflag,output] = fminsearch(...)Пример 3.
Найти минимум функции одного аргумента f(x) = sin(x) + 3:Решение:>> f = inline('sin(x)+3');>> x = fminsearch(f,2)x = 4.712402343750007________________________________________________________________________________ 11Деменков Н.П. Применение пакета Optimization Toolbox для решения задач оптимизации.