《matlab极值与优化PPT课件》由会员分享,可在线阅读,更多相关《matlab极值与优化PPT课件(36页珍藏版)》请在金锄头文库上搜索。
1、函数的极值与优化2021/3/912MATLAB在优化中的应用在优化中的应用 在研究与解决具体问题中,经常遇到有关优化问在研究与解决具体问题中,经常遇到有关优化问题,它起源于工业生产组织管理的题,它起源于工业生产组织管理的决策问题决策问题。本节的。本节的目的是学会用目的是学会用MATLAB软件求解一些优化问题,包软件求解一些优化问题,包括求解括求解线性规划和非线性规划线性规划和非线性规划问题。问题。 1、线性规划求解、线性规划求解多变量线性函数多变量线性函数在变量满足在变量满足线性约束线性约束条件下的条件下的最优最优值值。随着计算机的发展,出现了如单纯形法等有效。随着计算机的发展,出现了如单纯
2、形法等有效算法,它在工农业、军事、交通运输、决策管理与算法,它在工农业、军事、交通运输、决策管理与规划等领域中有广泛的应用。规划等领域中有广泛的应用。2021/3/923某厂每日某厂每日8小时的产量不低于小时的产量不低于1800件。为了进行质量控制,计件。为了进行质量控制,计划聘请两种不同水平的检验员。一级检验员的标准为:速度划聘请两种不同水平的检验员。一级检验员的标准为:速度25件件/小时,正确率小时,正确率98%,计时工资,计时工资4元元/小时;二级检验员的小时;二级检验员的标准为:速度标准为:速度15件件/小时,正确率小时,正确率95%,计时工资,计时工资3元元/小时。小时。检验员每错检
3、一次,工厂要损失检验员每错检一次,工厂要损失2元。为使总费用最省,该工元。为使总费用最省,该工厂应聘一级、二级检验员各几名?厂应聘一级、二级检验员各几名?解解 设需要一需要一级和二和二级检验员的人数分的人数分别为x1x1、x2x2人人, , 则应付付检验员的工的工资为:因因检验员错检而造成的损失检验员错检而造成的损失为:为:故故目目标函数函数为:例例12021/3/934约束条件束条件为:线性规划模型:线性规划模型:2021/3/945一般线性规划问题的数学表达式:一般线性规划问题的数学表达式: max(min) f =s.t . .用矩阵向量符号表示:用矩阵向量符号表示: max(min)f
4、=cX2021/3/956MATLAB优化工具箱解线性规划优化工具箱解线性规划1. 模型:模型: min z=cTX s.t AXb 命令:命令:x=linprog(c,A,b) 2. 模型:模型: min z=cTX s.t AXb Aeq X=beq 命令:命令:x=linprog(c,A,b,Aeq,beq)如果没有不等式:如果没有不等式:AXb不存在,不存在,则令令A=,b=.2021/3/967 命令:命令:x=linprog(c,A,b,Aeq,beq,vlb,vub)如果没有等式如果没有等式约束束存在,存在,则令令Aeq=,beq=.4. 命令:命令:x=linprog(c,A,
5、b,Aeq,beq,vlb,vub,x0)也用于求模型也用于求模型3,其中,其中x0表示初始值。表示初始值。5. 命令:命令:x,fval=linprog()返回最优解及处的目标函数值返回最优解及处的目标函数值fval. 3. 模型:模型: min z=cTX s.t AXb Aeq X=beq vlb x vub 2021/3/978解解 编写编写M文件文件xxgh1.m如下:如下:c =-0.4;-0.28;-0.32;-0.72;-0.64;-0.6;A=0.01 0.01 0.01 0.03 0.03 0.03; 0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;
6、 0 0 0.03 0 0 0.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)2021/3/989例例 用用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)2021/3/9910结果为:结果为:x = 9.0000 0.0000fval
7、 =360即只需聘用即只需聘用9个一级检验员。个一级检验员。 注:本问题应还有一个约束条件:注:本问题应还有一个约束条件:x1、x2取整数取整数。故它是。故它是一个一个整数线性规划问题整数线性规划问题。这里把它当成一个线性规划来解,。这里把它当成一个线性规划来解,求得其最优解刚好是整数:求得其最优解刚好是整数:x1=9,x2=0,故它就是该整数,故它就是该整数规划的最优解。规划的最优解。若用线性规划解法求得的最优解不是整数,若用线性规划解法求得的最优解不是整数,将其取整后不一定是相应整数规划的最优解将其取整后不一定是相应整数规划的最优解,这样的整数,这样的整数规划应用专门的方法求解。规划应用专
8、门的方法求解。2021/3/910Matlab中,求一元函数极值的函数为中,求一元函数极值的函数为 fminbnd l此函数最简输入格式为:此函数最简输入格式为:x=fminbnd(f,a,b)含义为:含义为:求函数求函数f在区间在区间a,b上的极小值点上的极小值点(自变量值自变量值).2. 非线性优化问题的求法非线性优化问题的求法n 非线性一元函数极值的求法非线性一元函数极值的求法l常用格式如下:常用格式如下:(1)x= fminbnd(fun,x1,x2)(2)x= fminbnd(fun,x1,x2,options)(3)x,fval= fminbnd(.)(4)x,fval,exitf
9、lag= fminbnd(.)n 非线性优化问题指的是目标函数或者约束函数非线性优化问题指的是目标函数或者约束函数中至少有一个非线性函数的优化问题中至少有一个非线性函数的优化问题2021/3/911非线性函数极值的求法非线性函数极值的求法l函数函数fminbnd的算法要求目标函数必须是连续函的算法要求目标函数必须是连续函数,并可能只给出局部最优解。数,并可能只给出局部最优解。l对于对于极大值问题极大值问题,需,需转化为极小值问题转化为极小值问题来处理。来处理。 ( -f(x)在区间在区间a,b上取极小值的点就是上取极小值的点就是f(x)在在a,b上取极大值的点)上取极大值的点) 2021/3/
10、912运行结果:运行结果: xmin = 3.9270 ymin = -0.0279 xmax = 0.7854 y = -0.6448 ymax = -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)非线性函数极值的求法非线性函数极值的求法2021/3/913 多元函数的无约束极小值问题,在多元函数的无约束极小值问题,在Matlab中有中有2个经常使用的函数
11、:个经常使用的函数: 1、fminsearch 2、fminunc 注意注意: (1)在使用这两个函数时,必须首先用)在使用这两个函数时,必须首先用M文件文件的形式存储待求最值的函数,该函数需以向量函数的形式存储待求最值的函数,该函数需以向量函数的形式表达;的形式表达; ( 2)极大值问题需转化为极小值问题。)极大值问题需转化为极小值问题。n多元函数极值的求法多元函数极值的求法非线性函数极值的求法非线性函数极值的求法2021/3/914u使用格式:使用格式:x,fval,exitflag,output=fminsearch(f,x0)u输入参数:输入参数:f: 目标函数;目标函数;x0: 初始
12、点初始点(向量向量).u输出参数:输出参数:x: 最优解;最优解;fval: 最优解对应的函数值;最优解对应的函数值;exitflag: 函数退出优化运算的原因:函数退出优化运算的原因:1,收敛于最优解;收敛于最优解;0,迭迭代次数超过优化属性设置;代次数超过优化属性设置;-1,迭代算法被迭代算法被output函数终止;函数终止;output:有关优化的属性信息,如优化迭代次数和优化算法有关优化的属性信息,如优化迭代次数和优化算法等等.例:例:fminsearch(f,1,2) 含义为:从点含义为:从点1,2开始开始 搜寻函数搜寻函数f 的最小值。的最小值。 n fminsearch 非线性规
13、划的单纯型法搜索最值非线性规划的单纯型法搜索最值非线性无约束优化问题非线性无约束优化问题2021/3/915例:求函数例:求函数 在在x=1,y=2附近的最小附近的最小值点。值点。解决步骤:解决步骤:1、建立、建立M文件,保存函数文件,保存函数f; M文件内容为:文件内容为: function f2=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.50
14、00 0.5000 fval =0.5000非线性无约束优化问题非线性无约束优化问题2021/3/916u 此函数与此函数与fminsearch不同的地方在于使用的搜索方法,不同的地方在于使用的搜索方法,它使用它使用牛顿法(拟牛顿)牛顿法(拟牛顿)搜索最值,在搜索最值,在效率上有所提高效率上有所提高;u 使用格式与使用格式与fminsearch类似:类似: x,fval= fminunc(f,x0) 其中其中f为待求极值的向量函数,为待求极值的向量函数,x0为搜索过程开始时自为搜索过程开始时自变量的初始值。变量的初始值。例例:fminunc(f,1,2)含义为:从点含义为:从点1,2开始开始搜
15、寻函搜寻函数数f的极小值。的极小值。 n fminunc非线性无约束优化问题非线性无约束优化问题2021/3/917n 例例 求解二元函数求解二元函数 的最小值的最小值.n 输入目标函数的程序代码:输入目标函数的程序代码: function f=optfun(x) f=3*x(1)2+2*x(1)*x(2)+x(2)2;将上述代码保存为将上述代码保存为 optfun.m 文件。文件。n x,fval=fminunc(optfun,x0)或或 x1,fval1=fminsearch(optfun,x0)非线性无约束优化问题非线性无约束优化问题2021/3/918n Matlab默认的二次规划默认
16、的二次规划n 用用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); 二次规划问题二次规划问题2021/3/91920例例 写成标准形式:写成标准形式:二次规划问题二次规划问题2021/3/92021H=2 -2; -2 4; c=-2 ;-6;A=1 1; -1 2;b=2;2;Aeq=;beq=; VLB
17、=0;0;VUB=;x,z=quadprog(H,c,A,b,Aeq,beq,VLB,VUB) 运算结果为:运算结果为:x = 0.8000 1.2000z = -7.2000 输入命令:输入命令:二次规划问题二次规划问题2021/3/921n求解约束非线性优化问题求解约束非线性优化问题n Matlab 求解约束非线性优化问题求解约束非线性优化问题 fminconn 常用调用格式如下:常用调用格式如下:nx,fval = fmincon(fun,x0,A,b,Ae,be,lb,ub,nonlcon)约束非线性优化问题约束非线性优化问题2021/3/922nx,fval = fmincon(fu
18、n,x0,A,b,Ae,be,lb,ub,nonlcon)n输入参数:输入参数:ufun 表示优化目标函数,表示优化目标函数,x0 表示优化的初始值表示优化的初始值uA,b 表示满足线性关系式表示满足线性关系式 的系数矩阵和右端项的系数矩阵和右端项uAe,be 表示线性等式约束表示线性等式约束 的系数矩阵和右端项的系数矩阵和右端项ulb,ub 表示取值范围表示取值范围 的上限和下限的上限和下限unonlcon 表示需要参数满足的非线性关系式表示需要参数满足的非线性关系式 和和 2021/3/92324例例 1) 先建立先建立 M 文件文件 fun3.m, 定义目标函数定义目标函数: funct
19、ion f=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=;2021/3/924253) 主程序主程序youh.m为为: x0=-1;1; A=;b=; Aeq=1 1;beq=0; vlb=;vub=; x,fval=fmincon(fun3,x0,A,b,Aeq,beq,vlb,vub,myc)3. 运算
20、结果为:运算结果为: x = -1.2247 1.2247 fval = 1.89512021/3/925上机作业上机作业n1.求解如下问题求解如下问题 n2.求函数求函数 在区间在区间-10,10内的极大极内的极大极小值点小值点. n3.求函数求函数 在区间在区间-10,10内的极小值内的极小值点,并通过该函数的图象体会局部极小值的含义点,并通过该函数的图象体会局部极小值的含义.2021/3/926n4.求解求解n5.求解二次规划问题求解二次规划问题上机作业上机作业2021/3/927n6.求解求解初始点为初始点为10,10,10上机实验上机实验2021/3/928选学内容学内容 例:供例:
21、供应与与选址址某公司有某公司有6 6个建筑工地,位置坐标为个建筑工地,位置坐标为(a(ai i, b, bi i) () (单位:公单位:公里里),),水泥日用量水泥日用量d di i ( (单位:吨)单位:吨)假假设:料料场和工地之和工地之间有直有直线道路道路2021/3/929线性性规划模型划模型决策变量:决策变量:ci j 12维维(料场料场j到到工地工地i运量)运量)例:供例:供应与与选址址2021/3/930用例中数用例中数据计算,据计算,xuanzhi.m最优解为最优解为总吨公里数为总吨公里数为136.2线性性规划模型划模型决策变量:决策变量:ci j (料场料场j到到工地工地i的
22、的运量)运量)12维维例:供例:供应与与选址址2021/3/9312 2)改建两个新料场,需要确定新料场位置)改建两个新料场,需要确定新料场位置( (x xj j,y,yj j) )和运量和运量c cijij ,在其它条件不变下使总吨公里数最小。,在其它条件不变下使总吨公里数最小。决策变量:决策变量:ci j,(xj,yj)16维维非非线性性规划模型划模型例:供例:供应与与选址址2021/3/932结果:结果:总吨公里数为总吨公里数为85.3,比使用原料场减少了,比使用原料场减少了50.9。初始点的初始点的选择决策变量:决策变量:ci j,(xj,yj)16维维用现料场总吨公里数为用现料场总吨公里数为136.2改建两个新料改建两个新料场局部最局部最优解解问题xuanzhi2.mxuanzhif.m例:供例:供应与与选址址2021/3/933决策变量:决策变量:ci ,(xj,yj)10维维 计算方法的改善算方法的改善局部最局部最优解解问题有所改有所改进2021/3/934+为工地为工地, 数字为用量数字为用量; *为新料场为新料场, 数字为供应量。数字为供应量。2021/3/935谢谢 谢!谢! 放映结束 感谢各位的批评指导!让我们共同进步2021/3/936