matlab极值与优化.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

函数的极值与优化2MATLAB在优化中的应用在研究与解决具体问题中,经常遇到有关优化问题,它起源于工业生产组织管理的决策问题。本节的目的是学会用MATLAB软件求解一些优化问题,包括求解线性规划和非线性规划问题。1、线性规划求解多变量线性函数在变量满足线性约束条件下的最优值。随着计算机的发展,出现了如单纯形法等有效算法,它在工农业、军事、交通运输、决策管理与规划等领域中有广泛的应用。3某厂每日8小时的产量不低于1800件。为了进行质量控制,计划聘请两种不同水平的检验员。一级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15件/小时,正确率95%,计时工资3元/小时。检验员每错检一次,工厂要损失2元。为使总费用最省,该工厂应聘一级、二级检验员各几名?121284833224xxxx解设需要一级和二级检验员的人数分别为x1、x2人,则应付检验员的工资为:因检验员错检而造成的损失为:1212(8252%8155%)2812xxxx121212min(3224)(812)4036zxxxxxx故目标函数为:例14约束条件为:线性规划模型:121212min40365345..0,0zxxxxstxx121282581518000,0xxxx5一般线性规划问题的数学表达式:max(min)f=nnxcxcxc2211s.t.11212111),(bxaxaxann22222121),(bxaxaxann……mnmnmmbxaxaxa),(22110,,,21nxxx.用矩阵向量符号表示:max(min)f=cX.(,)stAXb0X6MATLAB优化工具箱解线性规划1.模型:minz=cTXs.tAX≤b命令:x=linprog(c,A,b)2.模型:minz=cTXs.tAX≤bAeqX=beq命令:x=linprog(c,A,b,Aeq,beq)如果没有不等式:AX≤b不存在,则令A=[],b=[].7命令:x=linprog(c,A,b,Aeq,beq,vlb,vub)如果没有等式约束存在,则令Aeq=[],beq=[].4.命令:x=linprog(c,A,b,Aeq,beq,vlb,vub,x0)也用于求模型3,其中x0表示初始值。5.命令:[x,fval]=linprog(…)返回最优解x及x处的目标函数值fval.3.模型:minz=cTXs.tAX≤bAeqX=beqvlb≤x≤vub8max6543216.064.072.032.028.04.0xxxxxxz85003.003.003.001.001.001.0..654321xxxxxxts70005.002.041xx10005.002.052xx90008.003.063xx6,2,10jxj解编写M文件xxgh1.m如下:c=[-0.4;-0.28;-0.32;-0.72;-0.64;-0.6];A=[0.010.010.010.030.030.03;0.02000.0500;00.02000.050;000.03000.08];b=[850;700;100;900];Aeq=[];beq=[];vlb=[0;0;0;0;0;0];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)9例用MATLAB求解例1:编写M文件xxgh2.m如下:c=[40;36];A=[-5-3];b=[-45];Aeq=[];beq=[];vlb=[0;0];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)121212min40365345..0,0zxxxxstxx10结果为:x=9.00000.0000fval=360即只需聘用9个一级检验员。注:本问题应还有一个约束条件:x1、x2取整数。故它是一个整数线性规划问题。这里把它当成一个线性规划来解,求得其最优解刚好是整数:x1=9,x2=0,故它就是该整数规划的最优解。若用线性规划解法求得的最优解不是整数,将其取整后不一定是相应整数规划的最优解,这样的整数规划应用专门的方法求解。Matlab中,求一元函数极值的函数为fminbnd此函数最简输入格式为:x=fminbnd(f,a,b)含义为:求函数f在区间[a,b]上的极小值点(自变量值).2.非线性优化问题的求法非线性一元函数极值的求法常用格式如下:(1)x=fminbnd(fun,x1,x2)(2)x=fminbnd(fun,x1,x2,options)(3)[x,fval]=fminbnd(...)(4)[x,fval,exitflag]=fminbnd(...)非线性优化问题指的是目标函数或者约束函数中至少有一个非线性函数的优化问题非线性函数极值的求法函数fminbnd的算法要求目标函数必须是连续函数,并可能只给出局部最优解。对于极大值问题,需转化为极小值问题来处理。(-f(x)在区间[a,b]上取极小值的点就是f(x)在[a,b]上取极大值的点)例1求f=2xexsin在0x8中的极小值与极大值运行结果:xmin=3.9270ymin=-0.0279xmax=0.7854y=-0.6448ymax=-y解在matlab命令窗口中输入:f='2*exp(-x)*sin(x)';ezplot(f,[0,8]);%作图语句[xmin,ymin]=fminbnd(f,0,8)f1='-2*exp(-x)*sin(x)';[xmax,y]=fminbnd(f1,0,8)非线性函数极值的求法多元函数的无约束极小值问题,在Matlab中有2个经常使用的函数:1、fminsearch2、fminunc注意:(1)在使用这两个函数时,必须首先用M文件的形式存储待求最值的函数,该函数需以向量函数的形式表达;(2)极大值问题需转化为极小值问题。多元函数极值的求法非线性函数极值的求法使用格式:[x,fval,exitflag,output]=fminsearch(@f,x0)输入参数:@f:目标函数;x0:初始点(向量).输出参数:x:最优解;fval:最优解对应的函数值;exitflag:函数退出优化运算的原因:1,收敛于最优解;0,迭代次数超过优化属性设置;-1,迭代算法被output函数终止;output:有关优化的属性信息,如优化迭代次数和优化算法等.例:fminsearch(@f,[1,2])含义为:从点[1,2]开始搜寻函数f的最小值。fminsearch非线性规划的单纯型法搜索最值非线性无约束优化问题例:求函数在x=1,y=2附近的最小值点。解决步骤:1、建立M文件,保存函数f;M文件内容为:functionf2=fun2(x)f2=-(x(1)+x(2))+(x(1)^2+x(2)^2+1);2、调用fminsearch函数求最值.在命令窗口中,输入:x0=[1,2];[x,fval]=fminsearch(@fun2,x0)3、输出结果为:x=0.50000.5000fval=0.5000非线性无约束优化问题22()(1)fxyxy此函数与fminsearch不同的地方在于使用的搜索方法,它使用牛顿法(拟牛顿)搜索最值,在效率上有所提高;使用格式与fminsearch类似:[x,fval]=fminunc(@f,x0)其中f为待求极值的向量函数,x0为搜索过程开始时自变量的初始值。例:fminunc(@f,[1,2])含义为:从点[1,2]开始搜寻函数f的极小值。fminunc非线性无约束优化问题例求解二元函数的最小值.输入目标函数的程序代码:functionf=optfun(x)f=3*x(1)^2+2*x(1)*x(2)+x(2)^2;将上述代码保存为optfun.m文件。[x,fval]=fminunc(@optfun,x0)或[x1,fval1]=fminsearch(@optfun,x0)221122()32fxxxxx非线性无约束优化问题Matlab默认的二次规划用MATLAB软件求解,其输入格式如下:[x,fval]=quadprog(H,c,A,b);[x,fval]=quadprog(H,c,A,b,Aeq,beq);[x,fval]=quadprog(H,c,A,b,Aeq,beq,LB,UB);[x,fval]=quadprog(H,c,A,b,Aeq,beq,LB,UB,X0);1min(),2..,,.TTfxxHxcxstAxbAeqxbeqlbxub二次规划问题20例①写成标准形式:1212112.12200xstxxx2212121122121212min(,)2622.2220,0fxxxxxxxxstxxxxxx212121624222),(21minxxxxxxzT二次规划问题21H=[2-2;-24];c=[-2;-6];A=[11;-12];b=[2;2];Aeq=[];beq=[];VLB=[0;0];VUB=[];[x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)③运算结果为:x=0.80001.2000z=-7.2000②输入命令:二次规划问题求解约束非线性优化问题Matlab求解约束非线性优化问题fmincon常用调用格式如下:[x,fval]=fmincon(fun,x0,A,b,Ae,be,lb,ub,nonlcon)min(),..()0,()0,,,.fxstcxcexAxbAexbelbxub约束非线性优化问题[x,fval]=fmincon(fun,x0,A,b,Ae,be,lb,ub,nonlcon)输入参数:fun表示优化目标函数,x0表示优化的初始值A,b表示满足线性关系式的系数矩阵和右端项Ae,be表示线性等式约束的系数矩阵和右端项lb,ub表示取值范围的上限和下限nonlcon表示需要参数满足的非线性关系式和AxbAexbelbxub()0cx()0cex24例1221212212121212min()(42421)0.1.50100xfxexxxxxxxstxxxxxx1)先建立M文件fun3.m,定义目标函数:functionf=fun3(x);f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);2)再建立M文件myc.m定义非线性约束:function[c,ceq]=myc(x)c=[1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];ceq=[];253)主程序youh.m为:x0=[-1;1];A=[];b=[];Aeq=[11];beq=[0];vlb=[];vub=[];[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,vlb,vub,'myc')3.运算结果为:x=-1.22471.2247fval=1.8951上机作业1.求解如下问题2.求函数在区间[-10,10]内的极大极小值点.3.求函数在区间[-10,10]内的极小值点,并通过该函数的图象体会局部极小值的含义.12121212min()612..3734,0fxxxstxxxxxx2()32fxxx2()sin()fxxx4.求解5.求解二

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功