当前位置:
文档之家› 最优化问题的matlab求解
最优化问题的matlab求解
目标函数:
约束条件: 其中:
min z CX
C 价值向量
AX (, )b X 0
x1 x2 X x n
b
资源向量
X 决策变量向量
b1 b2 b b m
C (c1 , c2 ,, cn )
的初值得出其最小值。
>>f=inline('exp(-2*t)*cos(10*t)+exp(-3*(t+2))*sin(2*t)','t');
t0=1;[t1,f1]=fminsearch(f,t0)
t1=0.92275390625000,f1=-0.15473299821860 >>t0=0.1;[t2,f2]=fminsearch(f,t0) t2=0.29445312500000,f2=-0.54362463738706
否则 k
最速下降法(steepest descent method) 由法国数学家Cauchy于1847年首先提出。在每次迭代中, 沿最速下降方向(负梯度方向)进行搜索,每步沿负梯度方 向取最优步长,因此这种方法称为最优梯度法。 特点: 方法简单,只以一阶梯度的信息确定下一步的搜索方向,收 敛速度慢; 越是接近极值点,收敛越慢; 它是其它许多无约束、有约束最优化方法的基础。 该法一般用于最优化开始的几步搜索。
约束最优化
1、线性规划 目标函数: min z c1 x1 c2 x2 cn xn 约束条件:
a11 x1 a12 x2 a1n xn ( , )b1 a x a x a x ( , )b 21 1 22 2 2n n 2 a x a x a x ( , )b m2 2 mn n m m1 1 x1 , x2 , , xn 0
输出极值点
M文件
迭代的初值
变量上下限
参数说明
(6) [x,fval]= fmincon(...) (7) [x,fval,exitflag]= fmincon(...) (8)[x,fval,exitflag,output]= fmincon(...)
输入参数的几点说明
模型中如果没有A,b,Aeq,beq,VLB,VUB的限制,则以空矩阵
a11 a12 a1n A a a a mn m1 m 2
目标函数:
min z CX
约束条件:
AX b Aeq X Beq xm x xM
命令形式2: [X,f,flag,c]=linprog(C,A,b,Aeq,Beq,xm,xM,x0,opt)
直接法
直接法是一种数值方法。这种方法的基 本思想是迭代,通过迭代产生一个点序列 { X(k) },使之逐步接近最优点。 只用到目标函数。 如黄金分割法、Fibonacci、随机搜索法。
迭代法一般步骤
(1) 选定初始点 X (0),k=0 (2) 寻找一个合适的方向 P (k),k=0,1,2,… P (k)为第 k+1 步的搜索方向。 (3) 求出沿 P
2、二次规划
目标函数: min
1 X HX CX 2
约束条件:
AX b Aeq X Beq xm x xM
命令形式: [X,f,flag,c]=quadprog(H,C,A,b,Aeq,Beq,xm,xM,x0,opt) 功能:各个参数的解释如前,若各个约束条件不存在, 则用空矩阵来代替。
fun.m ~ f(x)的m文件名
x0 ~初始点;
x ~最优解
P1,P2, … ~传给fun的参数 基本用法: 中间输入项缺省用[]占据位 x=fminunc(@fun,x0) 置 x=fminunc(@fun,x0,options,P1,P2,...)
x2 y 2 例: min a b 其中a b 2
>> c=[-2,-1,-4,-3,-1]; A=[0 2 1 4 2;3 4 5 -1 -1]; b=[54;62]; Ae=[];Be=[]; xm=[0,0,3.32,0.678,2.57]; ff=optimset; rgeScale=‘off’;%是否采用大规模算法 ff.TolX=1e-15;%解的控制精度 ff.Display=‘iter’;%显示信息的级别 [X,f,flag,c]=linprog(c,A,b,Ae,Be,xm,[],[],ff)
最速下降法算法:
1. 给定初始点 x
(1)
0 ,令 k=1; E ,给定误差
(k )
n
2. 计算搜索方向 d 3. 如果
f
x ;
(k )
(k )
d
(k )
,则迭代终止,否则通过下列一维搜索
f
0
求 : min
(k )
x
(k )
d
4. 令 x
( k 1)
例: 求二元函数 z ( x2 2x )e x
2
y 2 xy
的最小值。
>>f=inline('(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-(1)*x(2))','x'); x0=[0,0]; ff=optimset;ff.Display='iter'; x=fminsearch(f,x0,ff) >>x=fminunc(f,x0,ff)
最优化问题的Matlab求解
数学规划的一般模型
Min(或Max) z f ( x), x ( x1 ,, x n )T s.t. gi ( x) 0, i 1,2, m
x~决策变量 f(x)~目标函数 gi(x)0~约束条件
无约束最优化
Min z f ( x), x ( x1 ,, x n )T
(k)
方向前进的步长
( k 1)
(k )
(4) 得到新的点 X (k+1), X
X ( k ) ( k ) P ( k )
检验 X (k+1)是否最优,如果是最优,则迭代结束,
k 1,转到(2)执行。 注意:数值求解最优化问题的计算效率取决 于确定搜索方向P (k)和步长 ( k ) 的效率。
function y=fun071(x,a,b) y=x(1)^2/a+x(2)^2/b; x0=[1,1];a=2;b=2; x=fminunc(@fun071,x0,[],a,b) X=(0,0)
3、全局最优解和局部最优解
例: 已知函数 y(t ) e2t cos10t e3t 6 sin 2t , t 0, 试观察不同
3. 建立主程序.非线性规划求解的函数是fmincon,命令的基本格 式如下: (1) x=fmincon(‘fun’,X0,A,b) (2) x=fmincon(‘fun’,X0,A,b,Aeq,beq) (3) x=fmincon(‘fun’,X0,A,b, Aeq,beq,VLB,VUB)
(4) x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’) (5)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options)
1、解析解法和图解法
ቤተ መጻሕፍቲ ባይዱ
f f f |x x0 0, |x x0 0,..., |x x0 0 x1 x2 xn
例:用解析法求解以下函数的最小值
z e3t sin(4t 2) 4e0.5t cos2t 0.5
>>syms t; y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5; ezplot(y,[0 4]) y1=diff(y); ezplot(y1,[0 4]) t0=solve(y1) y2=diff(y1); b=subs(y2,t,t0)
(1) E n,f , gi , h j 是定义在 En 上的实值函
其它情况: 求目标函数的最大值或约束条件为大于等于零 的情况,都可通过取其相反数化为上述一般形式.
标准型为:
Min F(X) s.t.
AX b AeqX beq G( X ) 0 Ceq( X ) 0 VLB X VUB
例:求解
min f ( x ) 2 x12 -4 x1 x2 4 x2 2 -6 x1-3x 2 x1 x2 3 4 x1 x2 9 x1 , x2 0
>>H=[4,-4;-4,8]; C=[-6,-3]; A=[1,1;4,1]; b=[3;9]; Ae=[];Be=[]; ff=optimset; rgeScale='off'; ff.TolX=1e-15; ff.Display='iter'; [X,f,flag,c]=quadprog(H,C,A,b,Ae,Be,zeros(2,1),ff)
其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成 的向量,其它变量的含义与线性规划、二次规划中相同.
非线性规划的求解算法
(1)间接法 (2)直接法
直接搜索法
以梯度法为基础的间接法
间接法
在非线性最优化问题当中,如果目标函 数能以解析函数表示,可行域由不等式约束 确定,则可以利用目标函数和可行域的已知 性质,在理论上推导出目标函数为最优值的 必要条件,这种方法就称为间接法(也称为 解析法) 。 一般要用到目标函数的导数。
x
(k )
(k )
d
(k )