Matlab 7最优化问题求解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab 最优化问题求解

1.无约束最优化问题

无约束最优化问题一般描述为:

其中,该数学表示的含义是求一组x,使得目标函数f(x)最小.这种问题也称为最小化问题.

Matlab中提供了3个求最小值的函数,调用格式为:

·[x,fval]=fminbnd(@fname,x1,x2,options):求一元函数在(x1,x2)区间中的极小值点x和极小值fval;

·[x,fval]=fminsearch(@fname,x0,options):基于单纯形算法求多元函数的极小值点x和极小值fval;

·[x,fval]=fminunc(@fname,x0,options):基于拟牛顿法求多元函数的极小值点x和极小值fval.

这里讨论的是局域极值问题,fname是定义函数m文件的文件名,fminbnd的输入变量x1,x2分别是研究区间的左右边界;fminsearch和fminunc的输入变量x0是一个向量,表示极值点的初值.options为优化参数,可以通过optimset函数来设置,当目标函数的阶数大于2时,使用fminunc比fminsearch更有效;但是目标函数高度不连续时,使用fminsearch函数效果更好.

Matlab中没有专门求最大值的函数,只要-f(x)在(a,b)上的最小值就是f(x)在(a,b)上最大值的相反数.因此用fminbnd(-f,x1,x2)返回函数f(x)在(x1,x2)上的最大值的相反数.

--------------------------------------------------------------------- 例如:求函数在区间[0,5]内的极小值和极小值点.

function fx=mymin(x)

fx=x.^3-2*x-5;

[x,fval]=fminbnd(@mymin,0,5)

x =

0.8165

fval =

-6.0887

因此极小值点为x=0.8165,极小值为-6.0887

--------------------------------------------------------------------- 例如:设

求函数f(x,y,z)在(0.5,0.5,0.5)附近的最小值.

function f=fxyz(p)

x=p(1);

y=p(2);

z=p(3);

f=x+y^2/4/x+z^2/y+2/z;

[U,min]=fminsearch(@mymin,[0.5,0.5,0.5])

U =

0.5000 1.0000 1.0000

min =

4.0000

--------------------------------------------------------------------- 2.有约束最优化问题求解

有约束最优化问题一般描述为:

其中,该数学表示的含义是求一组x,使得目标函数f(x)最小,且满足约束条件G(x)小于或等于0.这种问题也称为最小化问题.

2.1约束条件分类

·线性不等式约束:

·线性等式约束:

·非线性不等式约束:

·非线性等式约束:

·x的上界和下界:

Matlab提供了fmincon函数,用于求解各种约束下的最优解问题,调用格式为:

[x,fval]=fmincon(@fname,x0,A,b,Aeq,beq,Lbnd,Ubnd,Nonf ,options) X,fname,fval,x0和options含义与求最小值函数相同,其余参数为约束条件,参

数NonF为非线性约束函数的M文件名,如果该约束不存在则用空矩阵表示.

--------------------------------------------------------------------- 例如:求解有约束最优化问题

function f=fop(x)

f=0.4*x(2)+x(1)^2+x(2)^2-x(1)*x(2)+1/30*x(1)^3;

A

A =

-1.0000 -0.5000

-0.5000 -1.0000

b

b =

-0.4000

-0.5000

lb

lb =

x0

x0 =

0.5000

0.5000

[x,f]=fmincon(@fop,x0,A,b,[],[],lb,[],[],options)

x =

0.3400

0.3300

f =

0.2456

注意线性不等式约束全部是小于号,如果出现大于号要将不等式两端取相反数转换成小于号再列写A,b矩阵.

--------------------------------------------------------------------- 3.线性规划问题求解

线性规划问题的标准形式是:

Matlab中求解线性规划问题的函数是linprog,调用格式为:

[x,fval]=linprog(f,A,b,Aeq,beq,Lbnd,Ubnd)

其中x是最优解,fval是目标函数的最优值.函数中各项参数是线性规划问题标准形式中的对应项,x,b,beq,Lbnd,Ubnd是向量,Aeq,A是矩阵,f为目标函数的系数向量.

--------------------------------------------------------------------- 例如:求解线性规划问题

相关文档
最新文档