matlab中的非线性规划求解fmincon函数

上传人:pu****.1 文档编号:469804723 上传时间:2024-01-03 格式:DOC 页数:12 大小:133KB
返回 下载 相关 举报
matlab中的非线性规划求解fmincon函数_第1页
第1页 / 共12页
matlab中的非线性规划求解fmincon函数_第2页
第2页 / 共12页
matlab中的非线性规划求解fmincon函数_第3页
第3页 / 共12页
matlab中的非线性规划求解fmincon函数_第4页
第4页 / 共12页
matlab中的非线性规划求解fmincon函数_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《matlab中的非线性规划求解fmincon函数》由会员分享,可在线阅读,更多相关《matlab中的非线性规划求解fmincon函数(12页珍藏版)》请在金锄头文库上搜索。

1、这个函数的基本形式为x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)其中fun为你要求最小值的函数,可以单写一个文件设置函数,如以上给的例子中。1.如果fun中有N个变量,如x y z, 或者是X1, X2,X3, 什么的,自己排个顺序,在fun中统一都是用x(1),x(2).x(n) 表示的。2. x0, 表示初始的猜测值,大小要与变量数目相同3. A b 为线性不等约束,A*x = b, A应为n*n阶矩阵,学过线性代数应不难写出A和b4 Aeq beq为线性相等约束,Aeq*x = beq。 Aeq beq同上可求5 lb ub为

2、变量的上下边界, 正负无穷用 -Inf和Inf表示, lb ub应为N阶数组6 nonlcon 为非线性约束,可分为两部分,非线性不等约束 c,非线性相等约束,ceq可按下面的例子设置function c,ce = nonlcon1(x)c = -x(1)+x(2)2-4;ce = ; % no nonlinear equality constraints7, 最后是options, 可以用OPTIMSET函数设置,见上例具体可见OPTIMSET函数的帮助文件。对于优化控制,MATLAB提供了18个参数,这些参数的具体意义为: options(1)-参数显示控制(默认值为0)。等于1时显示一些

3、结果。     options(2)-优化点x的精度控制(默认值为1e-4)。 options = optimset(TolX,1e-8)    options(3)-优化函数F的精度控制(默认值为1e-4)。options = optimset(TolFun,1e-10)     options(4)-违反约束的结束标准(默认值为1e-6)。     options(5)-算法选择,不常用。    &nb

4、sp;options(6)-优化程序方法选择,为0则为BFCG算法,为1则采用DFP算法。     options(7)-线性插值算法选择,为0则为混合插值算法,为1则采用立方插算法。     options(8)-函数值显示 (目标达到问题中的Lambda )     options(9)-若需要检测用户提供的梯度,则设为1。     options(10)-函数和约束估值的数目。     op

5、tions(11)-函数梯度估值的个数。     options(12)-约束估值的数目。     options(13)-等约束条件的个数。     options(14)-函数估值的最大次数(默认值是100变量个数)     options(15)-用于目标 达到问题中的特殊目标。     options(16)-优化过程中变量的最小有限差分梯度值。    &nb

6、sp;options(17)- 优化过程中变量的最大有限差分梯度值。     options(18)-步长设置 (默认为1或更小)。 Foptions已经被optimset和optimget代替,详情请查函数optimset和optimget。ps: 以上x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)括号中的参数,需从左到右依次给出,可只给部分。如可写为x = fmincon(fun,x0,A,b) x = fmincon(fun,x0,A,b,Aeq,beq) x = fmincon(fun,

7、x0,A,b,Aeq,beq,lb,ub)如中间某些约束为空,可以用表示, 如可写为 x = fmincon(fun,x0,A,b,lb,ub) fmincon函数 fmincon函数浅析(转载)命令格式:x,fval,exitflag,output,lambda,grad,hessian = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)如matlab帮助文档中所述,fmincon命令使用的算法对于大规模优化问题和中等问题是有所区分的:Large-Scale OptimizationThe large-scale algorithm is

8、a subspace trust region method and is based on the interior-reflective Newton method described in 1 and 2. Each iteration involves the approximate solution of a large linear system using the method of preconditioned conjugate gradients (PCG).Medium-Scale Optimizationfmincon uses a sequential quadrat

9、ic programming (SQP) method. In this method, the function solves a quadratic programming (QP) subproblem at each iteration. An estimate of the Hessian of the Lagrangian is updated at each iteration using the BFGS formula. A line search is performed The QP subproblem is solved using an active set str

10、ategy. 这里试图回答三个问题:1.什么Large-Scale Optimization,什么是Medium-Scale Optimization?2.fimcon提供的subspace trust region和sequential quadratic programming方法原理?3.BFGS公式和线性搜索是什么?问题1所谓大规模问题指的是出现在工程,化学等领域中有大量优化变量的问题。由于自变量的维数很高,这样的问题是被分解成多个低维子问题来求解的。MediumScale优化问题实际上是matlab自己提出和大规模问题对应的一个概念,就是通常一般的优化算法,如牛顿法,最速下降法之类的

11、处理优化变量不是很多的问题。问题2对于大规模问题,fmincon采用了subspace trust region优化算法。这种算法是把目标函数在点x的邻域泰勒展开(x可以认为是人为提供的初始猜测),这个展开的邻域就是所谓的trust region,泰勒展开进行到二阶项为止:Q(x) = 1/2* + (1)这时目标函数在某一个局部的特性就可以“看出来了”。在这样的一个邻域里,我们求一个新的点x1,使得目标函数值减小,这个问题相比于原来的问题要简单。然而实际上对于存在非常大规模优化变量的问题,直接对这个子问题的求解仍然是不可忍受的。同时我们注意到,由于泰勒展开要进行的第二项,这就要求我们能够提供

12、一阶导计算的函数。如果我们不能提供一阶导表达式,二阶导(Hessian矩阵)matlab是无法计算的。所以我们使用fmincon命令而不给一阶导表达式,fmincon会放弃使用大规模算法。如前所述,原问题转化后的直接求解仍然是无法忍受的,通过进一步近似subspace trust region将这个问题局限在trust region的二维子空间内求解。序列二次规划方法是将一个带有等式和不等式约束(可以是非线性)的非线性优化问题转化为二次规划问题求解,二次规划问题类似公式(1)形式。具体转化过程可以参考:http:/www.caam.rice.edu/adpadu/talks/sqp1.pdf问

13、题3对于mediumscale问题,求解二次规划问题涉及到Hessian矩阵。Hessian矩阵的近似计算是通过拟牛顿法得到的,拟牛顿法提供了两个公式可用于Hessian矩阵(或其逆)的迭代:BFGS公式和DFP公式),而初始的Hessian矩阵是任意给的,如给一个单位阵I。BFGS公式如下:H(k+1) = H(k) + / - /(3)总结:fmincon运行首先检查有无梯度表达提供,如有则选则大规模算法(subspace trust region),由此涉及到Hessian阵的近似计算,由于已提供了梯度的公式,则Hessian阵可以直接通过有限差分计算。但是如果用户直接提供了Hessia

14、n计算公式,则直接计算。如果没有梯度表达式提供,fmincon选则SQP算法,算法中Hessian阵可以通过BFGS迭代,初始Hessian阵任给。注意BFGS公式中q项是需要计算目标函数梯度得到的。所以Hessian矩阵的近似计算是需要用到有限差分法。 车辆制冷与空调第二次作业参考答案车辆隔热壁、制冷方法与制冷剂、蒸汽压缩式制冷一简答题1. 什么是隔热壁的传热系数?它的意义是什么?答:隔热壁的传热系数指车内外空气温度相差1时,在一小时内,通过一平方米热壁表面积所传递的热量。可以概括为单位时间、单位面积、单位温差传递的热量。 它可以表示出车体隔热壁允许热量通过的能力,愈大,在同样的传热面积与车

15、内外温差的情况下,通过的热量就愈大,隔热性能就愈差。2. 热量是如何从隔热壁一侧的空气中传至另一侧空气的?答:热量从隔热壁一侧的空气中传至另一侧的空气中,其传热过程可以分为:1)表面吸热热量从一侧的空气中传至隔热壁的一侧表面;2)结构透热热量从隔热壁的一侧表面传至另一侧表面;3)表面放热热量从隔热壁另一侧表面传至另一侧的空气中。3. 如何改善隔热壁的性能?答:(1)尽可能减少热桥;(2)不同材料必须完全密贴;(3)减少漏泄;(4)选用隔热性能较好的材料。4. 蒸汽压缩制冷循环系统主要由哪些部件组成,各有何作用?答:在蒸汽压缩制冷循环系统中,蒸发器、冷凝器、压缩机和节流阀是制冷系统中必不可少的四大件。蒸发器是输送冷量的设备。制冷剂在其中吸收被冷却物体的热量实现制冷。压缩机是心脏,起着吸入、压缩、输送制冷剂蒸汽的作用。冷凝器是放出热量的设备,将蒸发器中吸收的热量连同压缩机功所转化的热量一起传递给冷却介质带走。节流阀对制冷剂起节流降压作用、同时控制和调节流入蒸发

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号