matlab中的优化问题.doc_第1页
matlab中的优化问题.doc_第2页
matlab中的优化问题.doc_第3页
matlab中的优化问题.doc_第4页
matlab中的优化问题.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章 优化问题第5章 优化问题5.1 线性规划问题线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB6.0解决的线性规划问题的标准形式为:min sub.to: 其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵。其它形式的线性规划问题都可经过适当变换化为此标准形式。在MATLAB6.0版中,线性规划问题(Linear Programming)已用函数linprog取代了MATLAB5.x版中的lp函数。当然,由于版本的向下兼容性,一般说来,低版本中的函数在6.0版中仍可使用。函数 linprog格式 x = linprog(f,A,b) %求min f *x sub.to 线性规划的最优解。x = linprog(f,A,b,Aeq,beq) %等式约束,若没有不等式约束,则A= ,b= 。x = linprog(f,A,b,Aeq,beq,lb,ub) %指定x的范围,若没有等式约束 ,则Aeq= ,beq= x = linprog(f,A,b,Aeq,beq,lb,ub,x0) %设置初值x0x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) % options为指定的优化参数x,fval = linprog() % 返回目标函数最优值,即fval= f *x。x,lambda,exitflag = linprog() % lambda为解x的Lagrange乘子。x, lambda,fval,exitflag = linprog() % exitflag为终止迭代的错误条件。x,fval, lambda,exitflag,output = linprog() % output为关于优化的一些信息说明 若exitflag0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大数字,exitflagf = -5; -4; -6;A = 1 -1 1;3 2 4;3 2 0;b = 20; 42; 30;lb = zeros(3,1);x,fval,exitflag,output,lambda = linprog(f,A,b,lb)结果为:x = %最优解 0.0000 15.0000 3.0000fval = %最优值 -78.0000exitflag = %收敛 1output = iterations: 6 %迭代次数 cgiterations: 0 algorithm: lipsol %所使用规则lambda = ineqlin: 3x1 double eqlin: 0x1 double upper: 3x1 double lower: 3x1 double lambda.ineqlinans = 0.0000 1.5000 0.5000 lambda.lowerans = 1.0000 0.0000 0.0000表明:不等约束条件2和3以及第1个下界是有效的5.2 foptions函数对于优化控制,MATLAB提供了18个参数,这些参数的具体意义为:options(1)-参数显示控制(默认值为0)。等于1时显示一些结果。 options(2)-优化点x的精度控制(默认值为1e-4)。 options(3)-优化函数F的精度控制(默认值为1e-4)。 options(4)-违反约束的结束标准(默认值为1e-6)。 options(5)-算法选择,不常用。 options(6)-优化程序方法选择,为0则为BFCG算法,为1则采用DFP算法。 options(7)-线性插值算法选择,为0则为混合插值算法,为1则采用立方插算法。 options(8)-函数值显示 (目标达到问题中的Lambda ) options(9)-若需要检测用户提供的梯度,则设为1。 options(10)-函数和约束估值的数目。 options(11)-函数梯度估值的个数。 options(12)-约束估值的数目。 options(13)-等约束条件的个数。 options(14)-函数估值的最大次数(默认值是100变量个数) options(15)-用于目标 达到问题中的特殊目标。 options(16)-优化过程中变量的最小有限差分梯度值。 options(17)- 优化过程中变量的最大有限差分梯度值。 options(18)-步长设置 (默认为1或更小)。Foptions已经被optimset和optimget代替,详情请查函数optimset和optimget。5.3 非线性规划问题5.3.1 有约束的一元函数的最小值单变量函数求最小值的标准形式为 sub.to 在MATLAB5.x中使用fmin函数求其最小值。函数 fminbnd格式 x = fminbnd(fun,x1,x2) %返回自变量x在区间上函数fun取最小值时x值,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄。x = fminbnd(fun,x1,x2,options) % options为指定优化参数选项x,fval = fminbnd() % fval为目标函数的最小值x,fval,exitflag = fminbnd() %xitflag为终止迭代的条件x,fval,exitflag,output = fminbnd() % output为优化信息说明 若参数exitflag0,表示函数收敛于x,若exitflag=0,表示超过函数估计值或迭代的最大数字,exitflag x,fval,exitflag,output=fminbnd(x3+cos(x)+x*log(x)/exp(x),0,1)x = 0.5223fval = 0.3974exitflag = 1output = iterations: 9 funcCount: 9 algorithm: golden section search, parabolic interpolation例5-3 在0,5上求下面函数的最小值解:先自定义函数:在MATLAB编辑器中建立M文件为:function f = myfun(x)f = (x-3).2 - 1;保存为myfun.m,然后在命令窗口键入命令: x=fminbnd(myfun,0,5)则结果显示为:x = 35.3.2 无约束多元函数最小值多元函数最小值的标准形式为其中:x为向量,如在MATLAB5.x中使用fmins求其最小值。命令 利用函数fminsearch求无约束多元函数最小值函数 fminsearch格式 x = fminsearch(fun,x0) %x0为初始点,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄。x = fminsearch(fun,x0,options) % options查optimsetx,fval = fminsearch() %最优点的函数值x,fval,exitflag = fminsearch() % exitflag与单变量情形一致x,fval,exitflag,output = fminsearch() %output与单变量情形一致注意:fminsearch采用了Nelder-Mead型简单搜寻法。例5-4 求的最小值点解:X=fminsearch(2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2, 0,0)结果为X = 1.0016 0.8335或在MATLAB编辑器中建立函数文件function f=myfun(x)f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2;保存为myfun.m,在命令窗口键入 X=fminsearch (myfun, 0,0) 或 X=fminsearch(myfun, 0,0)结果为:X = 1.0016 0.8335命令 利用函数fminunc求多变量无约束函数最小值函数 fminunc格式 x = fminunc(fun,x0) %返回给定初始点x0的最小函数值点x = fminunc(fun,x0,options) % options为指定优化参数x,fval = fminunc() %fval最优点x处的函数值x,fval,exitflag = fminunc() % exitflag为终止迭代的条件,与上同。x,fval,exitflag,output = fminunc() %output为输出优化信息x,fval,exitflag,output,grad = fminunc() % grad为函数在解x处的梯度值x,fval,exitflag,output,grad,hessian = fminunc() %目标函数在解x处的海赛(Hessian)值注意:当函数的阶数大于2时,使用fminunc比fminsearch更有效,但当所选函数高度不连续时,使用fminsearch效果较好。例5-5 求的最小值。 fun=3*x(1)2+2*x(1)*x(2)+x(2)2; x0=1 1; x,fval,exitflag,output,grad,hessian=fminunc(fun,x0)结果为:x = 1.0e-008 * -0.7591 0.2665fval = 1.3953e-016exitflag = 1output = iterations: 3 funcCount: 16 stepsize: 1.2353 firstorderopt: 1.6772e-007 algorithm: medium-scale: Quasi-Newton line searchgrad = 1.0e-006 * -0.1677 0.0114hessian = 6.0000 2.0000 2.0000 2.0000或用下面方法: fun=inline(3*x(1)2+2*x(1)*x(2)+x(2)2)fun = Inline function: fun(x) = 3*x(1)2+2*x(1)*x(2)+x(2)2 x0=1 1; x=fminunc(fun,x0)x = 1.0e-008 * -0.7591 0.26655.3.3 有约束的多元函数最小值非线性有约束的多元函数的标准形式为:sub.to 其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数。在MATLAB5.x中,它的求解由函数constr实现。函数 fmincon格式 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 = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)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()参数说明:fun为目标函数,它可用前面的方法定义;x0为初始值;A、b满足线性不等式约束,若没有不等式约束,则取A= ,b= ;Aeq、beq满足等式约束,若没有,则取Aeq= ,beq= ;lb、ub满足,若没有界,可设lb= ,ub= ;nonlcon的作用是通过接受的向量x来计算非线性不等约束和等式约束分别在x处的估计C和Ceq,通过指定函数柄来使用,如:x = fmincon(myfun,x0,A,b,Aeq,beq,lb,ub,mycon),先建立非线性约束函数,并保存为mycon.m:function C,Ceq = mycon(x)C = % 计算x处的非线性不等约束的函数值。Ceq = % 计算x处的非线性等式约束的函数值。lambda是Lagrange乘子,它体现哪一个约束有效。output输出优化信息;grad表示目标函数在x处的梯度;hessian表示目标函数在x处的Hessiab值。例5-6 求下面问题在初始点(0,1)处的最优解min sub.to 解:约束条件的标准形式为sub.to 先在MATLAB编辑器中建立非线性约束函数文件:function c, ceq=mycon (x)c=(x(1)-1)2-x(2);ceq= ; %无等式约束然后,在命令窗口键入如下命令或建立M文件:fun=x(1)2+x(2)2-x(1)*x(2)-2*x(1)-5*x(2); %目标函数x0=0 1;A=-2 3; %线性不等式约束b=6;Aeq= ; %无线性等式约束beq= ;lb= ; %x没有下、上界ub= ;x,fval,exitflag,output,lambda,grad,hessian=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,mycon)则结果为x = 3 4fval = -13exitflag = %解收敛 1output = iterations: 2 funcCount: 9 stepsize: 1 algorithm: medium-scale: SQP, Quasi-Newton, line-search firstorderopt: cgiterations: lambda = lower: 2x1 double %x下界有效情况,通过lambda.lower可查看。 upper: 2x1 double %x上界有效情况,为0表示约束无效。 eqlin: 0x1 double %线性等式约束有效情况,不为0表示约束有效。 eqnonlin: 0x1 double %非线性等式约束有效情况。 ineqlin: 2.5081e-008 %线性不等式约束有效情况。 ineqnonlin: 6.1938e-008 %非线性不等式约束有效情况。grad = %目标函数在最小值点的梯度 1.0e-006 * -0.1776 0hessian = %目标函数在最小值点的Hessian值 1.0000 -0.0000 -0.0000 1.0000例5-7 求下面问题在初始点x=(10, 10, 10)处的最优解。Min Sub.to 解:约束条件的标准形式为sub.to fun= -x(1)*x(2)*x(3); x0=10,10,10; A=-1 -2 -2;1 2 2; b=0;72; x,fval=fmincon(fun,x0,A,b)结果为:x = 24.0000 12.0000 12.0000fval = -34565.3.4 二次规划问题二次规划问题(quadratic programming)的标准形式为:sub.to 其中,H、A、Aeq为矩阵,f、b、beq、lb、ub、x为向量其它形式的二次规划问题都可转化为标准形式。MATLAB5.x版中的qp函数已被6.0版中的函数quadprog取代。函数 quadprog格式 x = quadprog(H,f,A,b) %其中H,f,A,b为标准形中的参数,x为目标函数的最小值。x = quadprog(H,f,A,b,Aeq,beq) %Aeq,beq满足等约束条件。x = quadprog(H,f,A,b,Aeq,beq,lb,ub) % lb,ub分别为解x的下界与上界。x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) %x0为设置的初值x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) % options为指定的优化参数x,fval = quadprog() %fval为目标函数最优值x,fval,exitflag = quadprog() % exitflag与线性规划中参数意义相同x,fval,exitflag,output = quadprog() % output与线性规划中参数意义相同x,fval,exitflag,output,lambda = quadprog() % lambda与线性规划中参数意义相同例5-8 求解下面二次规划问题sub.to 解:则,在MATLAB中实现如下:H = 1 -1; -1 2 ;f = -2; -6;A = 1 1; -1 2; 2 1;b = 2; 2; 3;lb = zeros(2,1);x,fval,exitflag,output,lambda = quadprog(H,f,A,b, , ,lb)结果为:x = %最优解 0.6667 1.3333fval = %最优值 -8.2222exitflag = %收敛 1output = iterations: 3 algorithm: medium-scale: active-set firstorderopt: cgiterations: lambda = lower: 2x1 double upper: 2x1 double eqlin: 0x1 double ineqlin: 3x1 double lambda.ineqlinans = 3.1111 0.4444 0 lambda.lowerans = 0 0说明 第1、2个约束条件有效,其余无效。例5-9 求二次规划的最优解max f (x1, x2)=x1x2+3sub.to x1+x2-2=0解:化成标准形式: sub.to x1+x2=2在Matlab中实现如下:H=0,-1;-1,0;f=0;0;Aeq=1 1;b=2;x,fval,exitflag,output,lambda = quadprog(H,f, , ,Aeq,b)结果为:x = 1.0000 1.0000fval = -1.0000exitflag = 1output = firstorderopt: 0 iterations: 1 cgiterations: 1 algorithm: 1x58 charlambda = eqlin: 1.0000 ineqlin: lower: upper: 5.4 “半无限”有约束的多元函数最优解“半无限”有约束多元函数最优解问题的标准形式为sub.to 其中:x、b、beq、lb、ub都是向量;A、Aeq是矩阵;C(x)、Ceq(x)、是返回向量的函数,f(x)为目标函数;f(x)、C(x)、Ceq(x)是非线性函数;为半无限约束,通常是长度为2的向量。在MTALAB5.x中,使用函数seminf解决这类问题。函数 fseminf格式 x = fseminf(fun,x0,ntheta,seminfcon)x = fseminf(fun,x0,ntheta,seminfcon,A,b)x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options)x,fval = fseminf()x,fval,exitflag = fseminf()x,fval,exitflag,output = fseminf()x,fval,exitflag,output,lambda = fseminf()参数说明:x0为初始估计值;fun为目标函数,其定义方式与前面相同;A、b由线性不等式约束确定,没有,则A= ,b= ;Aeq、beq由线性等式约束确定,没有,则Aeq= ,beq= ;Lb、ub由变量x的范围确定;options为优化参数;ntheta为半无限约束的个数;seminfcon用来确定非线性约束向量C和Ceq以及半无限约束的向量K1,K2,Kn,通过指定函数柄来使用,如:x = fseminf(myfun,x0,ntheta,myinfcon)先建立非线性约束和半无限约束函数文件,并保存为myinfcon.m:function C,Ceq,K1,K2,Kntheta,S = myinfcon(x,S)%S为向量w的采样值% 初始化样本间距if isnan(S(1,1),S = % S 有ntheta行2列endw1 = %计算样本集w2 = %计算样本集wntheta = % 计算样本集K1 = % 在x和w处的第1个半无限约束值K2 = %在x和w处的第2个半无限约束值Kntheta = %在x和w处的第ntheta个半无限约束值C = % 在x处计算非线性不等式约束值Ceq = % 在x处计算非线性等式约束值如果没有约束,则相应的值取为“ ”,如Ceq=fval为在x处的目标函数最小值;exitflag为终止迭代的条件;output为输出的优化信息;lambda为解x的Lagrange乘子。例5-10 求下面一维情形的最优化问题sub.to 解:将约束方程化为标准形式:先建立非线性约束和半无限约束函数文件,并保存为mycon.m:function C,Ceq,K1,K2,S = mycon(X,S)% 初始化样本间距:if isnan(S(1,1), S = 0.2 0; 0.2 0;end% 产生样本集:w1 = 1:S(1,1):100;w2 = 1:S(2,1):100;% 计算半无限约束:K1 = sin(w1*X(1).*cos(w1*X(2) - 1/1000*(w1-50).2 -sin(w1*X(3)-X(3)-1;K2 = sin(w2*X(2).*cos(w2*X(1) - 1/1000*(w2-50).2 -sin(w2*X(3)-X(3)-1;% 无非线性约束:C = ; Ceq= ;% 绘制半无限约束图形plot(w1,K1,-,w2,K2,:),title(Semi-infinite constraints)然后在MATLAB命令窗口或编辑器中建立M文件:fun = sum(x-0.5).2);x0 = 0.5; 0.2; 0.3; % Starting guessx,fval = fseminf(fun,x0,2,mycon)结果为:x = 0.6673 0.3013 0.4023fval = 0.0770C,Ceq,K1,K2 = mycon (x,NaN); % 利用初始样本间距max(K1)ans = -0.0017max(K2)ans = -0.0845图5-1例5-11 求下面二维情形的最优化问题sub.to 初始点为x0=0.25, 0.25, 0.25。解:先建立非线性和半无限约束函数文件,并保存为mycon.m:function C,Ceq,K1,S = mycon(X,S)% 初始化样本间距:if isnan(s(1,1), s = 2 2;end% 设置样本集w1x = 1:s(1,1):100;w1y = 1:s(1,2):100;wx, wy = meshgrid(w1x,w1y);% 计算半无限约束函数值 K1 = sin(wx*X(1).*cos(wx*X(2)-1/1000*(wx-50).2 -sin(wx*X(3)-X(3)+sin(wy*X(2).*cos(wx*X(1)-1/1000*(wy-50).2-sin(wy*X(3)-X(3)-1.5;% 无非线性约束C = ; Ceq= ;%作约束曲面图形m = surf(wx,wy,K1,edgecolor,none,facecolor,interp);camlight headlighttitle(Semi-infinite constraint)drawnow然后在MATLAB命令窗口下键入命令:fun = sum(x-0.2).2);x0 = 0.25, 0.25, 0.25; x,fval = fseminf(fun,x0,1,mycon)结果为(如图)x = 0.2926 0.1874 0.2202图5-2fval = 0.0091c,ceq,K1 = mycon(x,0.5,0.5); % 样本间距为0.5max(max(K1)ans = -0.00275.5 极小化极大(Minmax)问题极小化极大问题的标准形式为sub.to 其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)和F(x)是返回向量的函数,F(x)、C(x)、Ceq(x)可以是非线性函数。在MATLAB5.x中,它的求解由函数minmax实现。函数 fminimax格式 x = fminimax(fun,x0)x = fminimax(fun,x0,A,b)x = fminimax(fun,x0,A,b,Aeq,beq)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval,maxfval = fminimax()x,fval,maxfval,exitflag = fminimax()x,fval,maxfval,exitflag,output = fminimax()x,fval,maxfval,exitflag,output,lambda = fminimax()参数说明:fun为目标函数;x0为初始值;A、b满足线性不等约束,若没有不等约束,则取A= ,b= ;Aeq、beq满足等式约束,若没有,则取Aeq= ,beq= ;lb、ub满足,若没有界,可设lb= ,ub= ;nonlcon的作用是通过接受的向量x来计算非线性不等约束和等式约束分别在x处的值C和Ceq,通过指定函数柄来使用,如:x = fminimax(myfun,x0,A,b,Aeq,beq,lb,ub,mycon),先建立非线性约束函数,并保存为mycon.m:function C,Ceq = mycon(x)C = % 计算x处的非线性不等约束的函数值。Ceq = % 计算x处的非线性等式约束的函数值。options为指定的优化参数;fval为最优点处的目标函数值;maxfval为目标函数在x处的最大值;exitflag为终止迭代的条件;lambda是Lagrange乘子,它体现哪一个约束有效。output输出优化信息。例5-12 求下列函数最大值的最小化问题其中:解:先建立目标函数文件,并保存为myfun.m:function f = myfun(x)f(1)= 2*x(1)2+x(2)2-48*x(1)-40*x(2)+304; f(2)= -x(1)2 - 3*x(2)2;f(3)= x(1) + 3*x(2) -18;f(4)= -x(1)- x(2);f(5)= x(1) + x(2) - 8;然后,在命令窗口键入命令:x0 = 0.1; 0.1; % 初始值x,fval = fminimax(myfun,x0)结果为:x = 4.0000 4.0000fval = 0.0000 -64.0000 -2.0000 -8.0000 -0.0000例5-13 求上述问题的绝对值的最大值最小化问题。目标函数为:解:先建立目标函数文件(与上例相同)然后,在命令窗口或编辑器中建立M文件:x0 = 0.1; 0.1; % 初始点options = optimset(MinAbsMax,5); % 指定绝对值的最小化x,fval = fminimax(myfun,x0, , , , , , , ,options)则结果为x = 4.9256 2.0796fval = 37.2356 -37.2356 -6.8357 -7.0052 -0.99485.6 多目标规划问题多目标规划是指在一组约束下,对多个不同目标函数进行优化。它的一般形式为sub.to 其中:。在同一约束下,当目标函数处于冲突状态时,不存在最优解x使所有目标函数同时达到最优。此时,我们使用有效解,即如果不存在,使得,i=1,2,m, 则称x*为有效解。在MATLAB中,多目标问题的标准形式为sub.to 其中:x、b、beq、lb、ub是向量;A、Aeq为矩阵;C(x)、Ceq(x)和F(x)是返回向量的函数;F(x)、C(x)、Ceq(x)可以是非线性函数;weight为权值系数向量,用于控制对应的目标函数与用户定义的目标函数值的接近程度;goal为用户设计的与目标函数相应的目标函数值向量;为一个松弛因子标量;F(x)为多目标规划中的目标函数向量。在MATLAB5.x中,它的最优解由attgoal函数实现。函数 fgoalattain格式 x = fgoalattain(fun,x0,goal,weight)x = fgoalattain(fun,x0,goal,weight,A,b)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval = fgoalattain()x,fval,attainfactor = fgoalattain()x,fval,attainfactor,exitflag = fgoalattain()x,fval,attainfactor,exitflag,output = fgoalattain()x,fval,attainfactor,exitflag,output,lambda = fgoalattain()参数说明:x0为初始解向量;fun为多目标函数的文件名字符串,其定义方式与前面fun的定义方式相同;goal为用户设计的目标函数值向量;weight为权值系数向量,用于控制目标函数与用户自定义目标值的接近程度;A、b满足线性不等式约束,没有时取A= ,b= ;Aeq、beq满足线性等式约束,没有时取Aeq= ,beq= ;lb、ub为变量的下界和上界:;nonlcon的作用是通过接受的向量x来计算非线性不等约束和等式约束分别在x处的值C和Ceq,通过指定函数柄来使用。如:x = fgoalattain(myfun,x0,goal,weight,A,b,Aeq,beq,lb,ub,mycon),先建立非线性约束函数,并保存为mycon.m:function C,Ceq = mycon(x)C = % 计算x处的非线性不等式约束的函数值。Ceq = % 计算x处的非线性等式约束的函数值。options为指定的优化参数;fval为多目标函数在x处的值;attainfactor为解x处的目标规划因子;exitflag为终止迭代的条件;output为输出的优化信息;lambda为解x处的Lagrange乘子例5-14 控制系统输出反馈器设计。设如下线性系统其中: 要求设计输出反馈控制器K,使闭环系统在复平面实轴上点-5,-3,-1的左侧有极点,并要求 解:上述问题就是要求解矩阵K,使矩阵(A+BKC)的极点为-5,-3,-1,这是一个多目标规划问题。先建立目标函数文件,保存为eigfun.m:function F = eigfun(K,A,B,C)F = sort(eig(A+B*K*C); % 估计目标函数值然后,输入参数并调用优化程序: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); % 设置显示参数:显示每次迭代的输出K,fval,attainfactor = fgoalattain(eigfun,K0,goal,weight,lb,ub,options,A,B,C)结果为:weight = 5 3 1 Attainment Directional Iter F-count factor Step-size derivative Procedure 1 6 1.885 1 1.03 2 13 1.061 1 -0.679 3 20 0.4211 1 -0.523 Hessian modified 4 27 -0.06352 1 -0.053 Hessian modified twice 5 34 -0.1571 1 -0.133 6 41 -0.3489 1 -0.00768 Hessian modified 7 48 -0.3643 1 -4.25e-005 Hessian modified 8 55 -0.3645 1 -0.00303 Hessian modified twice 9 62 -0.3674 1 -0.0213 Hessian modified 10 69 -0.3806 1 0.00266 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论