matlab 优化函数 1、线性规划问题(linprog) 线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB6.0 解决的线性规划问题的标准形式为: min f(x) x 属于R s.t: A*x<=b; Aeq*x=beq; lb<=x<=ub; 其中f、 x、 b、 beq、 lb、 ub 为向量,A、 Aeq 为矩阵。 函数 linprog 格式: x = linprog(f,A,b) %求 min f s.t 线性规划的最优解。 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) %设置初值x0 x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) % options 为指定的优化参数 [x,fval] = linprog(…) % 返回目标函数最优值,即fval= f [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 迭代次数。 例 5-1 求下面的优化问题 min -5*x1- 4*x2-6*x3 s.t x1-x2+x3<=20 3*x1+2*x2+4*x3<=42 3*x1+2*x2<=30 0<=x1;0<=x2;0<=x3; 解: 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.0000 fval = %最优值 -78.0000 exitflag = %收敛 1 output = iterations: 6 %迭代次数 cgiterations: 0 algorithm: lipsol %所使用规则 lambda = ineqlin: [3x1 double] eqlin: [0x1 double] upper: [3x1 double] lower: [3x1 double] lambda.ineqlin ans = 0.0000 1.5000 0.5000 l...