数学软件matlab,lindo lingo-优化工具箱处理_第1页
数学软件matlab,lindo lingo-优化工具箱处理_第2页
数学软件matlab,lindo lingo-优化工具箱处理_第3页
数学软件matlab,lindo lingo-优化工具箱处理_第4页
数学软件matlab,lindo lingo-优化工具箱处理_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

TOC\o"1-4"\h\z\u第5章优化问 foptions函 5章优化问, 6.0解决的线性规,

f

xRnsub.to:AxAeqxlbxf、x、b、beq、lb、ub为向量,A、Aeq 6.0函数格式x= f'

Axbx=linprog(f,A,b,Aeq,beq) %AeqxbeqAxb,A=[],b=[]。x= 指定xlbxub,若没有等式约束Aeqx

Aeq,beqx= x=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,fvallambda,exitflag,output outputexitflag>0x,exitflag=0表示超过函数估值或迭代的最大数元素表示对应的约束是有效约束;output=iterations表示迭代次数,output=algorithm表示使用的运算规则,output=cgiterationsPCG迭代次数。 求下面的优化问

x1x2x3203x12x24x30x1,0x2,0>>f=[-5;-4;->>A=[1-11;324;32>>b=[20;42;>>lb=x= fval -exitflag= outputiterations:6%迭代次algorithmlipsol'%所使用规则lambda=ineqlin:[3x1double]eqlin:[0x1double]upper:[3x1double]lower:[3x1>>lambda.ineqlinans=>>lambda.lowerans=231foptions对于优化控制 提供了18个参数,这些参数的具体意义为options(2)-优化点x的精度控制(默认值为1e-4)。 约束的结束标准(默认值为1e-6)。options(6)-0BFCG1DFP算法。options(7)-01则采用立方插算法。options(8)-函数值显示(Lambda)options(15)-用于目标—达到问题中的特殊目标。options(17)-优化过程中变量的最大有限差分梯度值。options(18)-步长设置(1或更小)。Foptions已经被optimset和optimget代替 单变量函数求最小值的标准形式为x

x1x 5.x中使用fmin函数求其最小值函数格式x=fminbnd(fun,x1,x2)%xx1xx2fun取最小x值,fun为目标函数的表达式字符串或自定义函数的函数柄。x=fminbnd(fun,x1,x2,options) %options为指定优化参数选项[x,fval]=fminbnd(…) %fval为目标函数的最小值[x,fval,exitflag]=fminbnd(…) %xitflag为终止迭代的条件[x,fval,exitflag,output]=fminbnd(…) %output为优化信息exitflag>0xexitflag=0,表示超过函数估计值或迭代的最大数字,exitflag<0xoutput=iterations表示迭代次数,output=funccount表示函数赋值次数,output=algorithm表示所使用的算法。 f(x)x3cosxxlog解:xfvalexitflag1outputiterations:funcCount:algorithm:'goldensectionsearch,parabolic 在[0,5]上求下面函数的最小值f(x)(x3)3解:先自定义函数: 编辑器中建立M文件为functionf=myfun(x)f=(x-3).^2-1;>>x3多元函数最小值的标准形式为x

其中:xxx1x2,xn] 5.x中使用fmins求其最小值命令fminsearch函数格式x=fminsearch(fun,x0) %x0为初始点,fun为目标函数的表达式字符串或x=fminsearch(fun,x0,options) %options查optimset[x,fval]=fminsearch(…) [x,fval,exitflag] exitflag[x,fval,exitflag,output %output注意:fminsearch采用了Nelder-Mead 求y2x34xx310xxx2的最小值 1 1 X functionf=myfun(x)X=fminsearchmyfun',[0,0])X=fminsearch(@myfun,[X 命令fminunc函数格式x= %返回给定初始点x0的最小函数值x= options[x,fval %fvalx[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处的海赛注意:2fminunc比fminsearch更有效,但当所选函数高度不连续时,使用fminsearch效果较好。 求f(x)3x22xxx2的最小值 1 >>>>x0=[1>>x1.0e-008 fvalexitflag1outputiterations:funcCount:stepsize:1.2353firstorderopt:1.6772e-007algorithm:'medium-scale:Quasi-Newtonlinegrad1.0e-006hessian >>fun=inline('3*x(1)^2+2*x(1)*x(2)+x(2)^2')fun=Inlinefun(x)=>>x0=[1>>x=fminunc(fun,x0)x=1.0e-008 x

C(x)Ceq(x)0AxbAeqxbeqlbx 5.x中,它的求解由函数constr实现。函数fmincon格式xx=x=x=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,hessianfmincon(…)参数说明:fun为目标函数,它可用前面的方法定义;x0为初始值;A、b满足线性不等式约束AxbA=[,b=[];Aeq、beqAeqxbeqAeq=[],beq=[];lb、ub满足lbxublb=[],ubnonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)0和等式约束Ceq(x0分别在x处的估计C和Ceq,通过指定函数柄来使用,如:>>x=fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon),先建立非线性约束函数,并保存为mycon.m:function[C,Ceq]=mycon(x)C= %x处的非线性不等约束C(x)0Ceq= %x处的非线性等式约束Ceq(x0lambdaLagrangeoutputgradxhessianxHessiab

x2x2xx2x 1

(x11)2x2

(x11)2x22x13x2先 编辑器中建立非线性约束函数文件function[c,ceq]=mycon(x)ceq M >>x0=[0>>A=[-2 >>Aeq >>beq=[>>lb %x没有下、上>>ub=[x fvalexitflag= outputiterations:funcCount:stepsize:algorithm:'medium-scale:SQP,Quasi-Newton,line-search'firstorderopt:[]cgiterations:[]lambda=lower2x1 %x下界有效情况,通过lambda.lower可查看upper2x1 %x0eqlin0x1 eqnonlin:[0x1double] ineqlin:2.5081e-008 ineqnonlin:6.1938e-008 grad= 1.0e-006*0hessian %目标函数在最小值点的Hessian - 求下面问题在初始点x=(10,10,10)处的最优解

f(x) x1x22x3

x12x22x3x12x22x3>>fun='->>>>A=[-1-2-2;12>>>>x fval

1xHxfx

AxAeqxbeqlbxub其中,H、A、Aeq为矩阵,f、b、beq、lb、ub、x为向量5.xqp6.0quadprog函数格式x=quadprog(H,f,A,b) %其中H,f,A,b为标准形中的参数,x为目标函数的最x= %Aeq,beqAeqxbeqx= lb,ubxx= %x0x= options[x,fval %fval[x,fval,exitflag]=quadprog(…) %exitflag与线性规划中参数意义相同[x,fval,exitflag,output]=quadprog(…) %output与线性规划中参数意义相同[x,fval,exitflag,output,lambda]=quadprog(…) %lambda与线性规划中参数意义相同 求解下面二次规划问 f(x)1x2x2x

2x1x2x12x22x1x2

1 0 0f(x1xHxfx则H 1,f2,xx1 2

x2 中实现如下>>H=[1-1;-12]>>f=[-2;->>A=[11;-12;2>>b=[2;2;>>lb=>>[x,fval,exitflag,output,lambda]=quadprog(H,f,A,b,[],[x= fval exitflag= outputiterations:algorithm:'medium-scale:active-set'firstorderopt:[]cgiterations:[]lambda=lower:[2x1double]upper:[2x1double]eqlin:[0x1double]ineqlin:[3x1>>lambda.ineqlinans=0>>lambda.lowerans=00说明1、2 求二次规划的最优 f(x1,x2)=x1x2+3

x2 中实现如下

>>Aeq=[1>>[x,fval,exitflag,output,lambda]=quadprog(H,f,[],[xfvalexitflag1outputfirstorderopt:iterations:cgiterations:algorithm:[1x58lambdaeqlin:1.0000ineqlin:[]lower:[upper:[x

C(x)Ceq(x)0AxbAeqxK1(x,w1)0K2(x,w2)…Kn(x,wn)其中:x、b、beq、lb、ub都是向量;A、Aeq是矩阵;C(x)、Ceq(x)Ki(xwi)()w1w2,wn2函数格式xx=x=x=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为初始估计值;funA、b由线性不等式约束AxbA=[,bAeq、beqAeqxbeqAeq,beq=[];Lb、ubx的范围lbxub确定;optionsnthetax=先建立非线性约束和半无限约束函数文件,并保存为function[C,Ceq,K1,K2,…,Kntheta,S]=%S为向量w% S= Sntheta2w1= w2= …wntheta= %K1= %xw1K2= %xw2…Kntheta=…%xwnthetaC=… %在x处计算非线性不等式约束值Ceq=… %在x处计算非线性等式约束值如果没有约束,则相应的值取为“[],如Ceq=[]fval为在x处的目标函数最小值;exitflagoutputlambdaxLagrange 求下面一维情形的最优化问x

f(x)(x10.5)2(x20.5)2(x3K1(x,w1)sin(w1x1)cos(w1x2)1(w150)2sin(w1x3)x3K2(x,w2)sin(w2x2)cos(w2x1)1(w250)2sin(w2x3)x31w11w2K1(x,w1)sin(w1x1)cos(w1x2)1(w150)2sin(w1x3)x31K2(x,w2)sin(w2x2)cos(w2x1)1(w250)2sin(w2x3)x31先建立非线性约束和半无限约束函数文件,并保存为function[C,Ceq,K1,K2,S]=%初始化样本间距ifS=[0.20;0.2%产生样本集w1=w2=%计算半无限约束K1=sin(w1*X(1)).*cos(w1*X(2))-1/1000*(w1-50).^2-sin(w1*X(3))-X(3)-K2=sin(w2*X(2)).*cos(w2*X(1))-1/1000*(w2-50).^2-sin(w2*X(3))-X(3)-%C=[];Ceq=[%然后 命令窗口或编辑器中建立M文件fun='sum((x-x0=[0.5;0.2;0.3]; %Startingguess[x,fval]=fseminf(fun,x0,2,@mycon)xfval>>[C,Ceq,K1,K2mycon %利用初始样本间ans=-ans

-

5- x

f(x)(x10.2)2(x20.2)2(x3K1(x,w)sin(w1x1)cos(w2x2)1(w150)2sin(w1x3)x3sin(w2x2)cos(w1x1)1(w250)2sin(w2x3)x31w11w2x0=[0.25,0.25,0.25]解:先建立非线性和半无限约束函数文件,并保存为function[C,Ceq,K1,S]=%初始化样本间距ifisnan(s(1,1)),s=[22];%w1x=w1y=[wx,wy]=%计算半无限约束函数%无非线性约C=[];Ceq=[m=camlighttitle('Semi-infiniteconstraint')然后 命令窗口下键入命令>>fun='sum((x->>x0=[0.25,0.25,>>[x,fval]=结果为(如图x fval>>[c,ceq,K1]mycon(x,[0.5,0.5]);%样本间距为ans=-

5-x

C(x)Ceq(x)0AxbAeqxbeqlbxub 5.x中,它的求解由函数minmax实现函数格式xfminimax(fun,x0)x=fminimax(fun,x0,A,b)x=x=x=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为目标函数;x0A、b满足线性不等约束AxbA=[],b;Aeq、beqAeqxbeqAeq,beq;lb、ub满足lbxublb=[],ub=[];nonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)0和等式约束Ceq(x0分别在x处的值C和Ceq,通过指定函数柄来使用,如:>>x=fminimax(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon),先建立非线性约束函数,并保存为mycon.m:function[C,Ceq]=mycon(x)C= %x处的非线性不等约束C(x)0Ceq= %x处的非线性等式约束Ceq(x0optionsfval为最优点处的目标函数值;maxfvalx处的最大值;exitflag为终止迭代的条件;lambdaLagrangeoutput 求下列函数最大值的最小化问[f1(x),f2(x),f3(x),f4(x),f5(x)其中f1(x2x2x248x

f2(x)x2 f3(x)x13x2f4(x)x1f5(x)x1x2myfun.m:functionff(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)-f(4)=-x(1)-f(5)=x(1)+x(2)-x00.1; %初始[x,fval]=xfval0.0000- - -例5-13 目标函数为:[|f1(x)|,|f2(x)|,|f3(x)|,|f4(x)|,|f5(x)|M文件:>>x00.1; %>>options %>>[x,fval]=fminimax(@myfun,x0,[],[],[],[],[],[],[xfval37.2356- - - [f1(x),f2(x),,fm(x)

gj(x)

x(x1x2,xn) 最优。此时,我们使用有效解,即如果不存在xS,使得fi(x)fi(x*),i=1,2,…m,则称 中,多目标问题的标准形式 x,

F(x)weightC(x)Ceq(x)0AxbAeqxbeqlbx标函数与用户定义的目标函数值的接近程度;goal数值向量;为一个松弛因子标量;F(x)为多目标规划中的目标函数向量。 5.x中,它的最优解由attgoal函数实现。函数格式xfgoalattain(fun,x0,goal,weight)x=fgoalattain(fun,x0,goal,weight,A,b)x=x=x=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(…)x0funfungoalA、b满足线性不等式约束AxbA=[,bAeq、beqAeqxbeqAeq,beq=[];lb、ublbxub;nonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)0和等式约束Ceq(x0xCCeq性约束函数,并保存为mycon.m:function [C,Ceq]=mycon(x)C= %x处的非线性不等式约束C(x)0Ceq= %x处的非线性等式约束Ceq(x0optionsfvalx处的值;attainfactorx处的目标规划因子;exitflag为终止迭代的条件;outputlambdaxLagrange例5-14 y

0

0其中:A

B

C

00yCx

4Kij

(i,j1,2)functionF=eigfun(K,A,B,C)F=sort(eig(A+B*K*C)); %估计目标函数值A=[-0.500;0-210;01-B=[10;-22;0C=[100;00K011;-1 %初始化控制器矩goal53 %为闭合环路的特征值(极点)设置目标值向weight %lb %ub %设置控制器的上options %设置显示参数:显示每次迭代的输[K,fval,attainfactor]=weight 16121-31-41-Hessianmodified5-1-6-17-18-1Hessianmodified9-1--1-1Hessianmodified-1HessianmodifiedOptimizationterminatedSearchdirectionlessthan2*options.TolXand umconstraintviolationislessthanActive1249K fvalattainfactorx

1Cxd

AxAeqxbeqlbxub其中:C、A、Aeq为矩阵;d、b、beq、lb、ub、x是向量。 5.x中,约束线性最小二乘用函数conls求解。函数lsqlin格式x=lsqlin(C,d,A,b) %求在约束条件Axb下方程Cx=d的最小二乘解x。x= %Aeq、beq满足等式约束Aeqxbeq,若没有不等A=[,bx= %lb、ub满足lbxubAeq,beqx=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0) %x0xlb=[],ub=[]。x=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options) %options为指定优化参数[x,resnorm]=lsqlin(…) %resnorm=norm(C*x-d)^2,即2-范数。[x,resnorm,residual]=lsqlin(…) [x,resnorm,residual,exitflag]=lsqlin(…) %exitflag为终止迭代的条件 %output表示输出优化信息= %lambda为解x的例5-15 AxblbxxC=d=[0.0578;0.3528;0.8131;0.0098;A=[b=[0.5251;0.2026;lb=-0.1*ones(4,1);ub=2*ones(4,1);[x,resnorm,residual,exitflag,output,lambda]=lsqlin(C,d,A,b,[],[xresnormresidualexitflag %说明解xoutputiterations:algorithm:'medium-scale:active-set'firstorderopt:[]cgiterations:[]lambda=lower:[4x1double]upper:[4x1double]eqlin:[0x1ineqlin:[3x1非线性数据(曲线)xdataydata,并且知道输入与输出的函数ydata=F(x,xdata)xx使得下式成立: 1F(x,xdata)ydata21(F(x,xdatai)ydatai 2 5.x中,使用函数curvefit解决这类问题函数格式xlsqcurvefit(fun,x0,xdata,ydata)x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub)x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)[x,resnorm]=lsqcurvefit(…)[x,resnorm,residual]=lsqcurvefit(…)[x,resnorm,residual,exitflag]=lsqcurvefit(…)[x,resnorm,residual,exitflag,output]=lsqcurvefit(…)[x,resnorm,residual,exitflag,output,lambda]=lsqcurvefit(…)[x,resnorm,residual,exitflag,output,lambda,jacobianlsqcurvefit(…)x0为初始解向量;xdata,ydataydata=F(x,xdata)lb、ub为解向量的下界和上界lbxublb=[],ub=[];options为指定的优化参数;fun为拟合函数,其定义方式为:x=其中myfun已定义 functionF=F=… %xfun的用法与前面相同;resnorm=sumfun(x,xdata)-ydata).^2)x处残差的平方和;residual=fun(x,xdata)-ydatax处的残差;exitflagoutputlambdaxLagrangejacobianxfunjacobian 求解如下最小二乘非线性拟合问xdataydata,且长度都是nn即目标函数为x

1(F(x,xdatai)22x0=[0.3,0.4,0.1]functionF=F=x(1)*xdata.^2+x(2)*sin(xdata)+xdata>>xdata=[3.67.79.34.18.62.81.37.910.0>>ydata=[16.5150.6263.124.7208.59.92.7163.9325.0>>x01010 >>[x,resnorm]=OptimizationterminatedRelativefunctionvaluechangingbylessthanOPTIONS.TolFunx= resnormx

f(x)f1(x)2f2(x)2fm(x)2其中:L f1(x)f2(x)设F(x) fm(x) 则目标函数可表达为 1F(x)21fi 2其中:x为向量,F(x)函数格式x=lsqnonlin(fun,x0) %x0为初始解向量;fun为fi(x),i=1,2,…,m,fun返回向量值F,而不是平方和值,平方和隐含在算法中,fun的定义与前面相同。x= %lb、ubxlbxubx=lsqnonlin(fun,x0,lb,ub,options) %optionsxlb,ub=[]。[x,resnorm]=lsqnonlin(…) %resnorm=sum(fun(x).^2),即解x处目标函数值。[x,resnorm,residual]=lsqnonlin(…) %residual=fun(x),即解x处fun的值。[x,resnorm,residual,exitflag]=lsqnonlin(…) %exitflag为终止迭代条件。[x,resnorm,residual,exitflag,output]=lsqnonlin(…) %output输出优化信息。[x,resnorm,residual,exitflag,output,lambda]=lsqnonlin(…) %lambda为Lagrage乘]= %funx例5- 求下面非线性最小二乘问题(22kekx1ekx2)2初始解向量为myfun.mlsqnonlinfun为向量形式而不是平方和形式,因此,myfun函数应由fi(x)建立:fk(x)22kekx1 F=myfun(x)k=1:10;

F=2+2*k-exp(k*x(1))-x0=[0.3[x,resnorm]=Optimizationter

温馨提示

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

评论

0/150

提交评论