首页 第8章最优化方法的MATLAB实现讲稿

第8章最优化方法的MATLAB实现讲稿

举报
开通vip

第8章最优化方法的MATLAB实现讲稿第8章最优化方法的MATLAB实现解决同一个问题若有多种方案。最优化方法就是研究如何从多个方案中选出最优方案的数学分支。MATLAB的最优化工具箱实现了解决不同类型最优化问题的算法。8.1一维搜索问题  一维搜索问题在某些情况下可以直接用于求解实际问题,但大多数情况下它作为多变量最优化方法的基础使用的,因为进行多变量优化要用到一维搜索算法。8.1.1基本数学原理一维搜索问题的数学模型为: 式中,,和为标量,为目标函数,返回标量。该问题的搜索过程可用下式表达:式中为本次迭代的值,为搜索方向,为搜索方向上的步长参数。所...

第8章最优化方法的MATLAB实现讲稿
第8章最优化 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 的MATLAB实现解决同一个问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 若有多种方案。最优化方法就是研究如何从多个方案中选出最优方案的数学分支。MATLAB的最优化工具箱实现了解决不同类型最优化问题的算法。8.1一维搜索问题  一维搜索问题在某些情况下可以直接用于求解实际问题,但大多数情况下它作为多变量最优化方法的基础使用的,因为进行多变量优化要用到一维搜索算法。8.1.1基本数学原理一维搜索问题的数学模型为: 式中,,和为标量,为目标函数,返回标量。该问题的搜索过程可用下式表达:式中为本次迭代的值,为搜索方向,为搜索方向上的步长参数。所以一维搜索就是要利用本次迭代的信息来构造下次迭代的条件。求解 名单名单延期单出门单老板名单 变量最优化问题的方法有很多种。根据目标函数是否需要求导,可以分为两类,即直接法和间接法。直接法不需要目标函数的导数,而间接法则需要用到目标函数的导数。如果函数的导数容易求得,一般来说首先考虑使用三次插值法,因为它具有较高的效率。对于只需计算函数值的方法,二次插值是一个很好的方法,它的收敛速度较快,在极小点所在区间较小时尤其如此。黄金分割法则是一种十分稳定的方法,并且计算简单。由于以上原因,MATLAB优化工具箱中用得较多的方法是二次插值法、三次插值法、二次三次混合插值法和黄金分割法。8.1.2有关函数介绍利用fminbnd函数找到固定区间内单变量函数的最小值。调用格式为:  ●x=fminbnd(fun,x1,x2):返回区间{x1,x2}上fun参数描述的标量函数的最小值点x。●x=fminbnd(fun,x1,x2,options):用options参数指定的优化参数进行最小化。如果没有options选项,则令options=[]。●[x,fval]=fminbnd(…):还返回解x处目标函数的值。●[x,fval,exitflag]=fminbnd(…):还返回exitflag值描述fminbnd函数的退出条件。●[x,fval,exitflag,output]=fminbnd(…):还返回包含优化信息的结构output。8.1.3应用实例例8-1 对边长为2m的正方形铁板,在4个角处剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?解 设剪去的正方形的边长为,则水槽的容积为:,。首先编写目标函数(文件名为example8_1_3a.m)%创建目标函数functionf=example8_1_3a(x)f=-(2-2*x).^2*x;然后调用函数:x=fminbnd(@example8_1_3a,0,1)得到问题的解:x=0.3333,fval=-0.5926。即剪掉的正方形的边长为0.333m时水槽的容积最大,最大值为0.593。8.2线性规划  线性规划是处理线性目标函数和线性约束的一种较为成熟的方法,目前已经广泛应用于军事、经济、工业、农业、教育、商业和社会科学等许多方面。8.2.1基本数学原理线性规划问题的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 形式是:或写成矩阵形式为:线性规划的标准形式要求使目标函数最小化,约束条件取等式,变量非负。不符合这几个条件的线性模型可以转化成标准形式。MATLAB采用投影法求解线性规划问题,该方法是单纯形法的变种。8.2.2有关函数介绍在MATLAB工具箱中,可用linprog函数求解线性规划问题。linprog函数的调用格式如下:●x=linprog(f,A,b):求解问题minf'*x,约束条件为A*x<=b。●x=linprog(f,A,b,Aeq,beq):求解上面的问题,但增加等式约束,即Aeq*x=beq。若没有不等式约束,则令A=[],b=[]。●x=linprog(f,A,b,Aeq,beq,lb,ub):定义设计x的下界lb和上界ub,使得x始终在该范围内。若没有等式约束,令Aeq=[],beq=[]。●x=linprog(f,A,b,Aeq,beq,lb,ub,x0):设置初值为x0。该选项只适用于中型问题,默认时大型算法将忽略初值。●x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options):用options指定的优化参数进行最小化。●[x,fval]=linprog(…):返回解x处的目标函数值fval。●[x,lambda,exitflag]=linprog(…):返回exitflag值,描述函数计算的退出条件。●[x,lambda,exitflag,output]=linprog(…):返回包含优化信息的输出参数output。●[x,fval,exitflag,output,lambda]=linprog(…):将解x处的拉格朗日乘子返回到lambda参数中。调用格式中,lambda参数为解x处包含拉格朗日乘子的结构。它有以下一些字段:lower—下界lbupper—上界ubineqlin—线性不等式eqlin—线性等式exitflag参数表示算法终止的原因,下面列出不同值对应的退出原因:1函数在解x处有解0迭代次数超过options.MaxIter-2没有找到可行点-3问题无解-4执行算法时遇到NaN-5原问题和对偶问题都不可行-7搜索方向太小,不能继续前进。8.2.3应用实例例8-2 某河流边有两个化工厂,流经第一个化工厂的河水流量是每天500万立方米,在两个工厂之间有一条流量为200万立方米的支流(如图8-1所示)。第一个化工厂每天排放工业污水2万立方米,第二个化工厂每天排放工业污水1.4万立方米,从第一个化工厂排出的污水流到第二个化工厂之前,有20%可自然净化。根据环保要求,河流中工业污水的含量应不大于0.2%,因此两个化工厂都必须各自处理净化一部分污水,第一个化工厂处理污水的成本是0.1元∕立方米,第二个化工厂处理污水的成本是0.08元∕立方米。问在满足环保要求的条件下,各化工厂每天应处理多少污水,才能使两厂总的处理污水费用最少?第一化工厂            第二化工厂图8-1  解:设,分别表示第一个化工厂和第二个化工厂每天处理的污水量(万立方米∕天)。  则目标函数:(元∕天)约束条件1:,即;约束条件2:,即;约束条件3:。因此,该问题的线性规划模型归结为:  求解程序:%线性规划问题f=[1000800];A=[-10;-0.8-1;10;01];b=[-1;-1.6;2;1.4];lb=zeros(2,1);[x,fval,exitflag]=linprog(f,A,b,[],[],lb)运行结果:x=1.00000.8000fval=1.6400e+003exitflag=1由上可知,第一个化工厂每天处理的污水量为1万立方米∕天,第二个化工厂每天处理的污水量为0.8万立方米∕天,才能使两厂总的处理污水费用最少。8.3无约束非线性最优化问题8.3.1基本数学原理求解无约束最优化问题的方法主要有两类,即直接搜索法(Directsearchmethod)和梯度法(Gradientmethod)。直接搜索法适用于目标函数高度非线性,没有导数或导数很难计算的情况。由于实际工作中很多问题都是非线性的,故直接搜索法不失为一种有效的解决办法。常用的直接搜索法为单纯形法,此外还有Hooke-Jeeves搜索法、Pavell共轭方向法等,其缺点是收敛速度慢。在函数的导数可求的情况下,梯度法是一种更优的方法。该法利用函数的梯度(一阶导数)和Hess(二阶导数)构造算法,可以获得更快的收敛速度。函数的负梯度方向即反映了函数的最大下降方向。当搜索方向取为负梯度方向时称为最速下降法。  常见的梯度法有最速下降法、Newton法、Marquart法、共轭梯度法和拟牛顿法(Quasi-Newtonmethod)等。在所有这些方法中,用得最多的是拟牛顿法。进行一维搜索时,如果梯度值可以直接得到,用三次插值的方法进行一维搜索,如果梯度值不能直接得到,采用二次、三次混合插值法。8.3.2有关函数介绍MATLAB优化工具箱中用于求解无约束非线性规划问题的函数有fminunc和fminsearch。⒈fminunc函数用该函数求多变量无约束函数的最小值。多变量无约束函数的数学模型为:式中,是矢量,为函数,返回标量。fminunc函数在给定初值的情况下,求多变量标量函数的最小值。常用于无约束非线性最优化问题。其调用格式为:●x=fminunc(fun,x0):给定初值x0,求fun函数的局部极小值点x。x0可以是标量、矢量或矩阵。●x=fminunc(fun,x0,options):用options参数中指定的优化参数进行最小化。●x=fminunc(fun,x0,options,P1,P2,…):将问题参数P1,P2等直接输给目标函数fun,将options参数设置为空矩阵,作为options参数的默认值。●[x,fval]=fminunc(…):将解x处目标函数值返回到fval参数中。●[x,fval,exitflag]=fminunc(…):返回exitflag值,描述函数的退出条件。●[x,fval,exitflag,output]=fminunc(…):返回包含优化信息的结构输出。●[x,fval,exitflag,output,grad]=fminunc(…):将解x处fun函数的梯度值返回到grad参数中。●[x,fval,exitflag,output,grad,hessian]=fminunc(…):将解x处目标函数的Hessian矩阵信息返回到hessian参数中。⒉fminsearch函数fminsearch求解多变量无约束函数的最小值。该函数常用于无约束非线性最优化问题。其调用格式为:●x=fminsearch(fun,x0):初值为x0,求fun函数的局部极小值点x。x0可以是标量、矢量或矩阵。●x=fminsearch(fun,x0,options):用options参数中指定的优化参数进行最小化。●x=fminsearch(fun,x0,options,P1,P2,…):将问题参数P1,P2等直接输给目标函数fun,将options参数设置为空矩阵,作为options参数的默认值。●[x,fval]=fminsearch(…):将解x处目标函数值返回到fval参数中。●[x,fval,exitflag]=fminsearch(…):返回exitflag值,描述函数的退出条件。●[x,fval,exitflag,output]=fminsearch(…):返回包含优化信息的输出结构output。fminsearch函数使用单纯形法进行计算。对于求解二次以上的问题,fminsearch函数比fminunc函数效率低。但是,当问题为高度非线性时,fminsearch函数更具稳健性。8.3.3应用实例例8-3 最小化函数:解:创建目标函数程序(文件名为example8_3_3a1.m):%创建目标函数functionf=example8_3_3a1(x)f=3*x(1)*x(1)+2*x(1)*x(2)+x(2)*x(2);●调用fminunc函数,求[1,1]附近的极小值点、极小值。x0=[1,1];[x,fval,exitflag]=fminunc(@example8_3_3a1,x0)运行结果:x=1.0e-006*0.2541-0.2029fval=1.3173e-013exitflag=1●调用fminsearch函数,求[1,1]附近的极小值点、极小值。x0=[1,1];[x,fval,exitflag]=fminsearch(@example8_3_3a1,x0)运行结果:x=1.0e-004*-0.06750.1715fval=1.9920e-010exitflag=1用提供的梯度g使函数最小化,创建目标函数程序(文件名为example8_3_3b1.m):%创建目标函数,并提供梯度函数。function[f,g]=example8_3_3b1(x)f=3*x(1)^2+2*x(1)*x(2)+x(2)^2;%目标函数ifnargout>1g(1)=6*x(1)+2*x(2);g(2)=2*x(1)+2*x(2);end●调用fminunc函数,求[1,1]附近的极小值点、极小值。options=optimset('GradObj','on');x0=[11];[x,fval,exitflag]=fminunc(@example8_3_3b1,x0,options)运行结果:x=1.0e-015*0.1110-0.8882fval=6.2862e-031exitflag=1●调用fminsearch函数,求[1,1]附近的极小值点、极小值。options=optimset('GradObj','on');x0=[11];[x,fval,exitflag]=fminsearch(@example8_3_3b1,x0,options)运行结果:x=1.0e-004*-0.06750.1715fval=1.9920e-010exitflag=18.4有约束非线性最优化问题8.4.1基本数学原理在有约束最优化问题中,通常要将该问题转化为更简单的子问题,这些子问题可以求解并作为迭代过程的基础。早期的方法通常是通过构造惩罚函数等来将有约束的最优化问题转换为无约束最优化问题进行求解。现在,这些方法已经被更有效的基于K-T(Kuhn-Tucker)方程解的方法所取代。K-T方程的解形成了许多非线性规划算法的基础。这些算法直接计算拉格朗日乘子。用拟牛顿法更新过程,给K-T方程积累二阶信息,可以保证有约束拟牛顿的超线性收敛。这些方法称为序列二次规划法(SQP),因为在每次主要的迭代过程中都求解一次二次规划子问题。该子问题可以用任意一种二次规划算法求解,求得的解可以用来形成新的迭代公式。8.4.2有关函数介绍利用fmincon函数求多变量有约束非线性函数的最小值。假设多变量非线性函数的数学模型为:式中,,,,和为矢量,和为矩阵,和为函数,返回标量。,和可以是非线性函数。fmincon函数的调用格式如下:●x=fmincon(fun,x0,A,b):给定初值x0,求解fun函数的最小值点x。fun函数的约束条件为,x0可以是标量、矢量或矩阵。●x=fmincon(fun,x0,A,b,Aeq,beq):最小化fun函数,约束条件为和,若没有不等式存在,则设置A=[],b=[]。●x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub):定义设计变量x的下界lb和上界ub,使得总是有。若无等式存在,则令Aeq=[],beq=[]。●x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon):在上面的基础上,在nonlcon参数中提供非线性的c(x)或ceq(x)。fmincon函数要求且。当无边界存在时,令lb=[]和(或)ub=[]。●x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options):用options参数指定的参数进行最小化。●[x,fval]=fmincon(…):还返回解x处的目标函数值。●[x,fval,exitflag]=fmincon(…):还返回exitflag参数,描述函数计算的退出条件。●[x,fval,exitflag,output]=fmincon(…):还返回包含优化信息的输出参数output。●[x,fval,exitflag,output,lambda]=fmincon(…):还返回解x处包含拉格朗日乘子的lambda参数。●[x,fval,exitflag,output,lambda,grad]=fmincon(…):还返回解x处fun函数的梯度。●[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(…):还返回解x处fun函数的Hess矩阵。各调用格式中,nonlcon参数计算非线性不等式约束和等式约束。nonlcon参数是一个包含函数名的字符串。该函数可以是M文件、内部文件或MEX文件。它要求输入一个矢量x,返回两个变量——x处的非线性矢量c和ceq。8.4.3应用实例例8-4   解:创建目标函数程序(文件名为example8_4_3a.m):functionf=example8_4_3a(x)f=x(1)*x(1)*(x(2)+2)*x(3);创建非线性约束条件函数程序(文件名为example8_4_3b.m):function[c,ceq]=example8_4_3b(x)c(1)=350-163*x(1)^(-2.86)*x(3)^0.86;c(2)=10-0.004*(x(1)^(-4))*x(2)*(x(3)^3);c(3)=x(1)*(x(2)+1.5)+0.0044*(x(1)^(-4))*x(2)*(x(3)^3)-3.7*x(3);c(4)=375-356000*x(1)*(x(2)^(-1))*x(3)^(-2);c(5)=4-x(3)/x(1);ceq=0;求解程序:x0=[22520]';lb=[14.510]';ub=[45030]';[x,fval,exitflag]=fmincon(@example8_4_3a,x0,[],[],[],[],lb,ub,@example8_4_3b)运行结果:x=1.00004.500010.0000fval=65exitflag=18.5二次规划如果某非线性规划的目标函数为自变量的二次函数,约束条件全是线性函数,就称这种规划为二次规划。其数学模型为:式中,,和为矩阵,,,,,和为列矢量。利用quadprog函数求解二次规划问题,其调用格式为:●x=quadprog(H,f,A,b):返回矢量,使函数最小化,其约束条件为。●x=quadprog(H,f,A,b,Aeq,beq):仍然求解上面的问题,但添加了等式约束条件●x=quadprog(H,f,A,b,lb,ub):定义设计变量的下界lb和上界ub,使得。●x=quadprog(H,f,A,b,lb,ub,x0):同上,并设置初值x0。●x=quadprog(H,f,A,b,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结构参数。  例8-5 求解下面的最优化问题:  目标函数   约束条件:  解       记,,,,,。则上面的优化问题可写为:求解程序:H=[1-1;-12];f=[-2;-6];A=[11;-12;21];b=[2;2;3];lb=zeros(2,1);[x,fval,exitflag]=quadprog(H,f,A,b,[],[],lb)运行结果:x=0.66671.3333fval=-8.2222exitflag=18.60-1规划  0-1规划是一种特殊形式的整数规划。这种规划的决策变量仅取值0或1。0-1变量可以数量化地描述诸如开与关、取与弃、有与无等现象所反映的离散变量间的逻辑关系、顺序关系以及互斥的约束条件,因此0-1规划非常适合描述和解决如线路设计、工厂选址、生产计划安排、旅行购物、背包问题、人员安排、代码选取、可靠性等人们所关心的多种问题。8.6.1基本原理  0-1规划问题具有下面的形式:式中,和为矩阵,,和为列矢量,必须是二值矢量,即值必须是0和1。  MATLAB使用基于线性规划(LP)的分支定界算法来求解0-1规划问题。8.6.2有关函数介绍用bintprog函数求解0-1规划问题,该函数具有下面的调用格式。●x=bintprog(f):求解无约束0-1规划问题。●x=bintprog(f,A,b):求解0-1规划问题,有不等式约束。●x=bintprog(f,A,b,Aeq,beq):求解前面的0-1规划问题,还有等式约束。●x=bintprog(f,A,b,Aeq,beq,x0):设置算法的初值,如果不在可行域内,bintprog函数调用默认的初值。●x=bintprog(f,A,b,Aeq,beq,x0,options):用options结构中的值代替优化选项,可以用optimset函数创建该结构。●[x,fval]=bintprog(┅):返回解和处的目标函数值fval。●[x,fval,exitflag]=bintprog(┅):还返回描述bintprog函数退出状态的参数exitflag。●[x,fval,exitflag,output]=bintprog(┅):还返回包含优化相关信息的output结构。表8-1列出了bintprog函数输入参数的意义。表8-1 bintprog函数的输入参数及其意义 参数 意 义 包含线性目标函数系数矢量 包含线性不等式约束的系数的矩阵 对应于线性不等式约束右端项的矢量 包含线性等式约束系数的矩阵 包含线性等式约束常数的矢量 算法的初值 options 包含算法选项的选项结构  bintprog函数的输出参数exitflag用来识别计算终止的原因,可取下面的值。    1 函数在解处收敛;    0 迭代次数超过了options.MaxIter;   -2 问题不可行;   -4 搜索节点数超过了options.MaxNodes;-5 搜索时间超过了options..MaxTime;-6 LP求解器在某节点处求解LP松弛问题时的迭代次数超过了options.MaxRLP。bintprog函数的输出参数output为包含与优化有关信息的结构。结构的字段为:iterations:迭代次数nodes:搜索过的节点数time:算法执行时间algorithm:使用的算法    message:算法终止的原因8.6.3应用实例例8-6 在5个地点中选3处建生产同一产品的工厂,在这5个地点建厂所需投资,点用农田,建成以后的生产能力等数据如表8-2所示。表8-2 数据表 地 点 1 2 3 4 5 所需投资(万元) 320 280 240 210 180 占用农田(亩) 20 18 15 11 8 生产能力(万吨) 70 55 42 28 11现在有总投资800万元,占用农田指标60亩,应如何选择厂址,使建成后总生产能力最大。  解:设5个0-1变量,其中 。  整数规划模型为:记,;,;,;求解程序:f=[-70;-55;-42;-28;-11];A=[320280240210180;201815118];b=[800;60];Aeq=[11111];beq=[3];[x,fval,exitflag]=bintprog(f,A,b,Aeq,beq)运行结果:x=10110fval=-140exitflag=1即选择在地点1、3、4建厂,总投资770万元,占用农田46亩,总生产能力可以达到140万吨。例8-7(平板车的优化装载问题) 有七种规格的包装箱要装到两辆铁路平板车上去。包装箱的宽和高是一样的,但厚度(t,以cm计)及重量(w,以kg计)是不同的。表8-3给出了每种包装箱的厚度、重量及数量。每辆平板车有10.2m长的地方可用来装包装箱(像面包片那样),载重为40t。由于当地货运的限制,对,,类的包装箱的总数有一个特别的限制,每辆铁路平板车上的这类箱子所占的空间(厚度)不能超过302.7cm。试建立将包装箱装到平板车上去使得浪费的空间最小的数学模型。表8-3 各种包装箱的厚度、重量及数量 48.7 52.0 61.3 72.0 48.7 52.0 64.0 2000 3000 1000 500 4000 2000 1000 件数 8 7 9 6 6 4 8解 设装在第一辆车上的类箱子为件,装在第二辆车上的类箱为件,。记,;;。●建立整数规划模型:      模型1●为了将模型1改写为0-1规划模型,再记,则由模型1可得0-1规划模型:     模型2●将将问题简化为一辆铁路平板车的情形。建立整数规划模型为:         模型3为了将模型3改写为0-1规划模型,记,。则由模型3可得0-1规划模型:         模型4模型4的求解程序:%0-1规划问题。t=[48.7;52;61.3;72;48.7;52;64];w=[2;3;1;0.5;4;2;1];n=[8;7;9;6;6;4;8];%下面构造矢量ff=zeros(sum(n),1);m=0;fori=1:7forj=1:n(i)m=m+1;f(m)=(-1)*t(i);endend%下面构造AA1=zeros(7,sum(n));m=0;fori=1:7forj=1:n(i)m=m+1;A1(i,m)=1;endendA2=zeros(1,sum(n));m=0;fori=1:7forj=1:n(i)m=m+1;A2(m)=w(i);endendA3=zeros(1,sum(n));m=0;fori=1:7forj=1:n(i)m=m+1;A3(m)=t(i);endendA4=zeros(1,sum(n));m=0;fori=1:7forj=1:n(i)m=m+1;ifi>=5A4(m)=t(i);endendendA=[A1;A2;A3;A4];b=[n;40;1020;302.7];[x,fval,exitflag]=bintprog(f,A,b)运行结果:x=000001001111111111000000110000011000010001100000fval=-1018exitflag=-48.7最大最小化  通常我们遇到的都是目标函数的最大化和最小化问题,但是在某些情况下,则要求使最大值最小化才有意义。例如,城市规划中需要确定急救中心、消防中心的位置,可取的目标函数应该是到所有地点最大距离的最小值,而不是到所有目的地的距离和为最小。这是两种完全不同的准则,在控制理论、逼近论、决策论中也使用最大最小化原则。8.7.1基本数学原理  最大最小化问题的数学模型为:式中,,,和为矢量,和为矩阵,,和为函数,返回矢量。,和可以是非线性函数。8.7.2有关函数介绍fminimax使多目标函数中的最坏情况达到最小化。给定初值估计,该值必须服从一定的约束条件。其调用格式如下:●x=fminimax(fun,x0):初值为x0,找到fun函数的最大最小化解x。●x=fminimax(fun,x0,A,b):给定线性不等式,求解最大最小化问题。●x=fminimax(fun,x0,A,b,Aeq,beq):还给定线性等式,求解最大最小化问题。如果没有不等式存在,设置A=[]、b=[]。●x=fminimax(fun,x0,A,b,Aeq,beq,lb,ub):还为设计变量x定义一系列下限lb和上限ub,使得总有。●x=fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon):在nonlcon参数中给定非线性不等式c(x)或等式ceq(x)。fminimax函数要求且。若无边界存在,则设lb=[]和(或)ub=[]。●x=fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options):用options参数指定的参数进行优化。●x=fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,┅):将问题参数P1,P2等直接传递给函数fun和nonlcon。如果不需要变量A,b,Aeq,beq,lb,ub,nonlcon和options,则将它们设置为空矩阵。●[x,fval]=fminimax(…):还返回解x处的目标函数值。●[x,fval,maxfval]=fminimax(…):还返回解x处的最大函数值。●[x,fval,maxfval,exitflag]=fminimax(…):返回exitflag参数,描述函数计算的退出条件。●[x,fval,maxfval,exitflag,output]=fminimax(…):返回描述优化信息的结构输出output参数。●[x,fval,maxfval,exitflag,output,lambda]=fmincon(…):返回包含解x处拉格朗日乘子的lambda参数。其中,maxfval变量为解x处函数值的最大值,即maxfval=max{fun(x)}。使用fminimax函数时需要注意下面几个问题:⑴在options.MinAbsMax中设置F最大绝对值最小化了的目标数。该目标应该放到F的第1个元素中去。⑵当提供了等式约束并且在二次子问题中发现并剔除了因变等式时,则在等式连续的情况下才被剔除。若系统不连续,则子问题不可行并且在过程标题中打印‘infeasible’字样。另外,要求目标函数必须连续,否则fminimax函数有可能给出局部最优解。8.7.3应用实例  例8-8 定位问题。  设某城市有某种物品的10个需求点,第个需求点的坐标为,道路网与坐标轴平行,彼此正交。现打算建一个该物品的供应中心,且由于受到城市某些条件的限制,该供应中心只能设在界于[5,8],界于[5,8]的范围内。问该中心应建在何处为好?  点的坐标为::1435912620178:2108181451089解 设供应中心的位置为,要求它到最远需求点的距离尽可能小。由于此处应采用沿道路行走的距离,可知用户到该中心的距离为:。从而可得目标函数如下:创建目标函数(文件名为example8_7_3a.m):functionf=example11_3_3a(x)a=[1435912620178]';b=[2108181451089]';f=abs(x(1)-a)+abs(x(2)-b);end输入初值,调用fminimax函数进行计算:x0=[7;7];lb=[5;5];ub=[8;8];[x,fval,maxfval]=fminimax(@example8_7_3a,x0,[],[],[],[],lb,ub)运行结果:x=88fval=1365138851491maxfval=14.0000(最小的最大距离)8.8多目标决策  前面介绍的规划问题只有一个目标函数,是单目标最优化问题。但是,在许多实际工程问题中,往往希望多个指标都达到最优值,所以就有多个目标函数。这种问题称为多目标规划问题。多目标规划有权和法、约束法、目标达到法和改进的目标达到法等多种解法。8.8.1有关函数介绍  利用fgoalattain函数求解多目标达到问题。假设多目标达到问题的数学模型为式中,,,,,和为矢量,和为矩阵,,和为函数,返回矢量。,和可以是非线性函数。fgoalattain函数的调用格式如下。●x=fgoalattain(fun,x0,goal,weight):试图通过变化x来使目标函数fun达到goal指定的目标。初值为x0,weight参数指定权重。●x=fgoalattain(fun,x0,goal,weight,A,b):求解目标达到问题,约束条件为线性不等式。●x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq):求解目标达到问题,除提供上面的线性不等式以外,还提供线性等式。当没有不等式存在时,设置A=[],b=[]。●x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub):为设计变量x定义下界lb和上界ub集合,这样始终有。●x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon):将目标达到问题归结为nonlcon参数定义的非线性不等式或非线性等式。fgoalattain函数优化的约束条件为和。若不存在边界,则设置lb=[]和(或)ub=[]。●x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,┅,options):用options中设置的优化参数进行最小化。●x=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,┅,options,P1,P2,┅):将问题参数P1,P2等直接传递给函数fun和nonlcon。如果不需要变量A,b,Aeq,beq,lb,ub,nonlcon和options,则将它们设置为空矩阵。●[x,fval]=fgoalattain(…):返回解x处的目标函数值。●[x,fval,attainfactor]=fgoalattain(…):返回解x处的目标达到因子。●[x,fval,attainfactor,exitflag]=fgoalattain(…):返回exitflag参数,描述计算的退出条件。●[x,fval,attainfactor,exitflag,output]=fgoalattain(…):返回包含优化信息的输出参数output。●[x,fval,attainfactor,exitflag,output,lambda]=fgoalattain(…):返回包含拉格朗日乘子的lambda参数。  各调用格式中,goal变量为目标希望达到的矢量值。矢量的长度与fun函数返回的目标函数F长度相等。fgoalattain函数试图通过使矢量F的值最小化来达到goal参数给定的目标。  nonlcon参数计算非线性不等式约束和非线性等式约束。nonlcon函数是一个包含函数名的字符串,该函数可以是M文件、内部函数或MEX文件。nonlcon函数需要输入矢量x,返回两个变量──x处的非线性不等式矢量c和x处的非线性等式矢量ceq。例如,若nonlcon=’mycon’,则M文件的形式如下:    function[c,ceq]=mycon(x)c=┅%计算x处的非线性不等式ceq=┅%计算x处的非线性等式若约束函数的梯度可以计算,且options.GradConstr设为’on’,即    options=optimset(‘GradConstr’,’on’)  则函数nonlcon也必须在第3个和第4个输出变量中输出c(x)的梯度Gc和ceq(x)的梯度Gceq。注意,可以通过核对nargout参数来避免计算Gc和Gceq。    function[c,ceq,Gc,Gceq]=mycon(x)c=┅%计算x处的非线性不等式ceq=┅%计算x处的非线性等式ifnargout>2%被调用的nonlcon函数,有4个输出。Gc=%不等式的梯度Gceq=%等式的梯度end  若nonlcon函数返回m维的矢量c和长度为n的x,则c(x)的梯度Gc是一个的矩阵,其中Gc(i,j)是c(j)对x(i)的偏导数。同样ceq是一个p维矢量,则ceq(x)的梯度Gceq是一个的矩阵,其中Gceq(i,j)是ceq(j)对x(i)的偏导数。  options变量为优化参数选项。可以用optimset函数设置或改变这些选项:    DerivativeCheck:比较用户提供的导数(目标函数或约束函数的梯度)和有限差分导数。Diagnostics:打印将要最小化或求解的函数的诊断信息。DiffMaxChange:变量中有限差分梯度的最大变化。DiffMinChange:变量中有限差分梯度的最小变化。Display:显示水平。设置为“off”时不显示输出;设置为“iter”时显示每一次迭代的输出;设置为“final”时只显示最终结果。GoalsExactAchieve:使得目标个数刚好达到,不多也不少。GradConstr:用户定义的约束函数的梯度。GradObj:用户定义的目标函数的梯度。使用大型方法时必须使用梯度,对于中型方法是可选项。MaxFunEvals:函数评价的允许最大次数。MaxIter:函数迭代的允许最大次数。MeritFunction:如果设为‘multiobj’,则使用目标达到或最大最小化目标函数的方法。若设置为‘singleobj’,则使用fmincon函数计算目标函数。TolCon:约束矛盾的终止容限。TolFun:函数值处的终止容限。TolX:x处的终止容限。  weight变量为权重矢量,可以控制低于或超过fgoalattain函数指定目标的相对程度。当goal的值都是非零值时,为了保证激活对象超过或低于的比例相当,将权重函数设置为abs(goal)(激活对象为阻止解处目标改善的对象集合)。当目标值中的任意一个为零时,设置weight=abs(goal)将导致目标约束看起来更像硬约束,而不像目标约束。当加权函数weight为正时,fgoalattain函数试图使对象小于目标值。为了使目标函数大于目标值,将权重weight设置为负。为了使目标函数尽可能地接近目标值,使用GoalsExactAchieve参数,将fun函数返回的第1个元素作为目标。attainfactor参数包含解处的值。若attainfactor为负,则目标已经溢出;若attainfactor为正,则目标个数还未达到。  多目标优化同时涉及到一系列对象。fgoalattain函数求解该问题的基本算法是目标达到法。该法为目标函数建立目标值。多目标优化的具体算法在前面进行了详细的介绍。具体实现过程中,使用了松弛变量作为模糊变量同时最小化目标矢量,goal参数是一系列目标达到值。在进行优化之前,通常不知道对象是否会达到目标。使用权矢量weight可以控制究竟是没有达到还是溢出。  fgoalattain函数使用序列二次规划法(SQP),算法中对于一维搜索和Hess矩阵进行了修改。当有一个目标函数不再发生改变时,一维搜索终止。修改的Hess矩阵借助于本问题的结构,也被采用。  目标函数必须是连续的。fgoalattain函数将只给出局部最优解。8.8.2应用实例例8-9 某化工厂拟生产两种新产品A和B,其生产设备费用分别为:A,2万元/吨;B,5万元/吨。这两种产品均将造成环境污染,设由公害所造成的损失可折算为:A,4万元/吨;B,1万元/吨。由于条件限制,工厂生产产品A和B的最大生产能力各为每月5吨和6吨,而市场需要这两种产品的总量每月不少于7吨。试问工厂如何安排生产计划,在满足市场需要的前提下,使设备投资和公害损失均达最小。该工厂决策认为,这两个目标中环境污染应优先考虑,设备投资的目标值为20万元,公害损失的目标为12万元。解 设工厂每月生产产品A为吨,B为吨,设备投资费为,公共损失费为,则这个问题可表达为多目标优化问题:显见,要使设备投资费小,应在满足情况下,比更小些;而要使公共损失费为小,则比应更小些。所以不能单个考虑一个目标函数。首先创建目标函数(文件名为example8_8_2a.m)。functionf=example8_8_2a(x)f(1)=2*x(1)+5*x(2);f(2)=4*x(1)+x(2);然后调用M文件example8_8_2b.m%多目标决策问题。goal=[20;12];weight=[20;12];x0=[2;5];A=[-1-1];b=-7;lb=[0;0];ub=[5;6];[x,fval,attainfactor,exitflag]=fgoalattain(@example8_8_2a,x0,goal,weight,A,b,[],[],lb,ub)运行结果:x=2.91674.0833fval=26.250015.7500attainfactor=0.3125exitflag=4习题八1、完成实验指导书中的实验七。-28-_1268236880.unknown_1300810545.unknown_1331465308.unknown_1331482572.unknown_1331573436.unknown_1331638084.unknown_1331702448.unknown_1331702952.unknown_1331909875.unknown_1331909910.unknown_1331909942.unknown_1331909886.unknown_1331702972.unknown_1331702799.unknown_1331654304.unknown_1331654585.unknown_1331654699.unknown_1331654486.unknown_1331638102.unknown_1331623304.unknown_1331624235.unknown_1331573710.unknown_1331532614.unknown_1331569788.unknown_1331570945.unknown_1331532920.unknown_1331532884.unknown_1331532915.unknown_1331532686.unknown_1331532571.unknown_1331532591.unknown_1331482923.unknown_1331481772.unknown_1331482513.unknown_1331482564.unknown_1331481945.unknown_1331482414.unknown_1331469245.unknown_1331481620.unknown_1331468657.unknown_1300865550.unknown_1301124028.unknown_1301124056.unknown_1301124558.unknown_1301124705.unknown_1301124982.unknown_1301141591.unknown_1301244135.unknown_1301124869.unknown_1301124601.unknown_1301124615.unknown_1301124582.unknown_1301124098.unknown_1301124524.unknown_1301124082.unknown_1301124038.unknown_1301124046.unknown_1300880209.unknown_1300902548.unknown_1300947629.unknown_1300970458.unknown_1301123579.unknown_1301123590.unknown_1301123601.unknown_1300971178.unknown_1300970510.unknown_1300948344.unknown_1300948507.unknown_1300948625.unknown_1300948401.unknown_1300948452.unknown_1300948364.unknown_1300947993.unknown_1300943847.unknown_1300943985.unknown_1300943988.unknown_1300943957.unknown_1300902912.unknown_1300943810.unknown_1300902696.unknown_1300895442.unknown_1300901845.unknown_1300901907.unknown_1300901585.unknown_1300885336.unknown_1300885408.unknown_1300880393.unknown_1300866515.unknown_1300869073.unknown_1300880107.unknown_1300880189.unknown_1300880057.unknown_1300866553.unknown_1300868974.unknown_1300868996.unknown_1300866524.unknown_1300866072.unknown_1300866320.unknown_1300812792.unknown_1300814895.unknown_1300815343.unknown_1300815445.unknown_1300815328.unknown_1300814933.unknown_1300814788.unknown_1300814860.unknown_1300814697.unknown_1300812375.unknown_1300812640.unknown_1300812780.unknown_1300812491.unknown_1300810568.unknown_1300811115.unknown_1300810549.unknown_1300775090.unknown_1300809304.unknown_1300809506.unknown_1300810503.unknown_1300810511.unknown_1300810488.unknown_1300809398.unknown_1300809472.unknown_1300809386.unknown_1300775340.unknown_1300775491.unknown_1300808816.unknown_1300775468.unknown_1300775245.unknown_1300775283.unknown_1300775164.unknown_1300772724.unknown_1300774751.unknown_1300775075.unknown_1300773651.unknown_1300773717.unknown_1300773034.unknown_1300772726.unknown_1300772725.unknown_1300772641.unknown_1300772659.unknown_1300772722.unknown_1300772723.unknown_1300772668.unknown_1300772651.unknown_1276922062.unknown_1300772527.unknown_1300772550.unknown_1300772567.unknown_1268236917.unknown_1268236925.unknown_1268236892.unknown_1268063475.unkn
本文档为【第8章最优化方法的MATLAB实现讲稿】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥3.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
东北往事
暂无简介~
格式:doc
大小:520KB
软件:Word
页数:28
分类:生活休闲
上传时间:2019-12-30
浏览量:19