好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Matlab优化工具箱.doc

38页
  • 卖家[上传人]:ni****g
  • 文档编号:537765896
  • 上传时间:2024-01-01
  • 文档格式:DOC
  • 文档大小:231.51KB
  • / 38 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • Matlab优化工具箱Matlab Optimization Toolbox优化工具箱提供了一般和大型的非线性优化函数,同时还提供了线性规划,二次规划,非线性最小二乘以及非线性方程求解的工具• 主要特性:– 无约束非线性极小化问题– 约束性线性极小化、极大极小、多目标优化,半无穷极小化问题– 二次规划和线性规划问题– 非线性最小二乘和边界曲线拟合问题– 非线性系统方程求解问题– 约束线性最小二乘问题– 大型问题的特殊算法一.最小化问题Minimization0-1 规划 (binary integer programming problems)x = bintprog(f)x = bintprog(f, A, b)x = bintprog(f, A, b, Aeq, beq)x = bintprog(f, A, b, Aeq, beq, x0)x = bintprog(f, A, b, Aeq, Beq, x0, options)[x, fval] = bintprog(...)[x,fval, exitflag] = bintprog(...)[x, fval, exitflag, output] = bintprog(...)参数描述见helpf Vector containing the coefficients of the linear objective functionA Matrix containing the coefficients of the linear inequality constraints b Vector corresponding to the right-hand side of the linear inequality constraints Aeq Matrix containing the coefficients of the linear equality constraints beq Vector containing the constants of the linear equality constraintsx0 Initial point for the algorithm options Options structure containing options for the algorithm.Example1:f = [-9; -5; -6; -4]; A = [6 3 5 2; 0 0 1 1; -1 0 1 0; 0 -1 0 1];b = [9; 1; 0; 0];x = bintprog(f,A,b) Example2:问题求解:min 3*x(1)-2*x(2)+5*x(3)s.t.x(1)+2*x(2)-x(3)<=2x(1)+4*x(2)+x(3)<=4x(1)+x(2)<=34*x(2)+x(3)<=6x(1),x(2),x(3)为0,1f=[3,-2,5]’A=[1 2 -1;1 4 1; 1 1 0; 0 4 1]b=[2 4 3 6]’问题求解:min 3*x(1)-2*x(2)+5*x(3)s.t.x(1)+2*x(2)-x(3) =2x(1)+4*x(2)+x(3) =4线性规划linear programming problemx = linprog(f,A,b) %求min f ' *x sub.to 线性规划的最优解。

      x = linprog(f,A,b,Aeq,beq) %等式约束,若没有不等式约束,则A=[ ],b=[ ]x = linprog(f,A,b,Aeq,beq,lb,ub) %指定x的范围,若没有等式约束 ,则Aeq=[ ],beq=[ ]x = linprog(f,A,b,Aeq,beq,lb,ub,x0) %设置初值x0x = 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,fval, lambda,exitflag,output] = linprog(…) % output为关于优化的一些信息说明 若exitflag>0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大数字,exitflag<0表示函数不收敛于解x;lambda=lower 表示下界lb,lambda=upper表示上界ub,lambda=ineqlin表示不等式约束,lambda=eqlin表示等式约束,lambda中的非0元素表示对应的约束是有效约束;output=iterations表示迭代次数,output=algorithm表示使用的运算规则,output=cgiterations表示PCG迭代次数。

      例 求下面的优化问题min sub.to 解:>>f = [-5; -4; -6];>>A = [1 -1 1;3 2 4;3 2 0];>>b = [20; 42; 30];>>lb = zeros(3,1);>>[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)结果为:x = %最优解 0.0000 15.0000 3.0000fval = %最优值 -78.0000exitflag = %收敛 1output = iterations: 6 %迭代次数 cgiterations: 0 algorithm: 'lipsol' %所使用规则lambda = ineqlin: [3x1 double] eqlin: [0x1 double] upper: [3x1 double] lower: [3x1 double]>> lambda.ineqlinans = 0.0000 1.5000 0.5000>> lambda.lowerans = 1.0000 0.0000 0.0000表明:不等约束条件2和3以及第1个下界是有效的Example2: max 0.27x(1)+0.19x(2)+0.22x(3)+0.18x(4) Subject to x(1)-x(2)-x(3)-x(4)<=0 x(2)+x(3)+x(4)>=0 x(1)+x(2)+x(3)+x(4)=1 x(i)>=0, i=1, 2 ,3, 4二次规划 quadratic programming二次规划问题(quadratic programming)的标准形式为:sub.to 其中,H、A、Aeq为矩阵,f、b、beq、lb、ub、x为向量其它形式的二次规划问题都可转化为标准形式。

      x = quadprog(H,f,A,b) x = quadprog(H,f,A,b,Aeq,beq) x = quadprog(H,f,A,b,Aeq,beq,lb,ub) x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) [x,fval] = quadprog(...) [x,fval,exitflag] = quadprog(...) [x,fval,exitflag,output] = quadprog(...) [x,fval,exitflag,output,lambda] = quadprog(...)EXAMPLE1:求解下面二次规划问题sub.to 解:则,,在MATLAB中实现如下:>>H = [1 -1; -1 2] ;>>f = [-2; -6];>>A = [1 1; -1 2; 2 1];>>b = [2; 2; 3];>>lb = zeros(2,1);>>[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,[ ],[ ],lb)结果为:x = %最优解 0.6667 1.3333fval = %最优值 -8.2222exitflag = %收敛 1output = iterations: 3 algorithm: 'medium-scale: active-set' firstorderopt: [ ] cgiterations: [ ]lambda = lower: [2x1 double] upper: [2x1 double] eqlin: [0x1 double] ineqlin: [3x1 double]>> lambda.ineqlinans = 3.1111 0.4444 0>> lambda.lowerans = 0 0说明 第1、2个约束条件有效,其余无效。

      EXAMPLE2:求二次规划的最优解max f (x1, x2)=x1x2+3sub.to x1+x2-2=0解:化成标准形式: sub.to x1+x2=2在Matlab中实现如下:>>H=[0,-1;-1,0];>>f=[0;0];>>Aeq=[1 1];>>b=2;>>[x,fval,exitflag,output,lambda] = quadprog(H,f,[ ],[ ],Aeq,b)结果为:x = 1.0000 1.0000fval = -1.0000exitflag = 1output = firstorderopt: 0 iterations: 1 cgiterations: 1 algorithm: [1x58 char]lambda = eqlin: 1.0000 ineqlin: [ ] lower: [ ] upper: [ ]fminbndFind a minimum of a function of one variable on a fixed 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.