Matlab经典优化函数详细介绍.doc
文本预览下载声明
Matlab经典优化函数详细介绍
----------------Matlab优化工具箱简介 5.1 线性优化
线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB7.0解决的线性规划问题的标准形式为
min
sub. to:
其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵.
其它形式的线性规划问题都可经过适当变换化为此标准形式.
在MATLAB5.x以上版中,线性规划问题Linear Programming已用函数linprog取代了MATLAB5.x版中的lp函数.当然,由于版本的向下兼容性,一般说来,低版本中的函数在7.0版中仍可使用.
函数 linprog
格式 x = 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)
%设置初值x0.
x = 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为关于优化的一些信息.
说明: 若exitflag0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大次数,exitflag0表示函数不收敛于解x;若lambda=lower 表示下界lb,lambda=upper表示上界ub,lambda=ineqlin表示不等式约束,lambda=eqlin表示等式约束,lambda中的非0元素表示对应的约束是有效约束;output=iterations表示迭代次数,output=algorithm表示使用的运算规则,output=cgiterations表示PCG迭代次数.
MATLAB求解优化问题的主要函数
类 型 模 型 基本函数名 一元函数极小 Min F(x)s.t.x1xx2 x=fminbnd(‘F’,x1,x2) 无约束极小 Min F(X) X=fminunc(‘F’,X0)
X=fminsearch(‘F’,X0) 线性规划 Min
s.t.AX=b X=linprog(c,A,b) 二次规划 Min xTHx+cTx
s.t. Ax=b X=quadprog(H,c,A,b) 约束极小
(非线性规划) Min F(X)
s.t. G(X)=0 X=fmincon(‘FG’,X0) 多目标优化问题 Min r
s.t. F(x)-wr=goal X=fgoalattain(‘F’,x,goal,w) 极小极大问题 Min max {Fi(x)}
X {Fi(x)}
s.t. G(x)=0 X=fminimax(‘FG’,x0) 优化函数的输入变量
优化函数的输出变量
5.2非线性优化
sub.to
函数 fminbnd
格式 x = fminbnd(fun,x1,x2) %返回自变量x在区间上函数fun取最小值时x值,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄.
x = fminbnd(fun,x1,x2,options) [x,fval] = fminbnd(…)
[x,fval,exitflag] = fminbnd(…)
[x,fval,exitflag,output] = fminbnd(…)
例5-2 计算下面函数在区间(0,1)内的最小值.
显示全部