matlab 无约束优化问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八 无约束优化问题
一.实验目的
掌握应用matlab 求解无约束最优化问题的方法
二.实验原理及方法
1:标准形式:
元函数
为其中n R R f X f n
R x n
→∈:)
(min
2.无约束优化问题的基本算法一.最速下降法(共轭梯度法)算法步骤:⑴ 给定初始点
n E X ∈0,允许误差0>ε,令k=0;
⑵ 计算()
k X f ∇;
⑶ 检验是否满足收敛性的判别准则:
()
ε≤∇k X f ,
若满足,则停止迭代,得点k X X ≈*,否则进行⑷; ⑷ 令()
k k X f S -∇=,从k X 出发,沿k S 进行一维搜索, 即求k λ使得: ()()
k k k k k S X f S X f λλλ+=+≥0
min ;
⑸ 令k k k k S X X λ+=+1,k=k+1返回⑵.
最速下降法是一种最基本的算法,它在最优化方法中占有重要地位.最速下降法的优点是工作量小,存储变量较少,初始点要求不高;缺点是收敛慢,最速下降法适用于寻优过程的前期迭代或作为间插步骤,当接近极值点时,宜选用别种收敛快的算法..牛顿法算法步骤:
(1) 选定初始点n E X ∈0,给定允许误差0>ε,令k=0; (2) 求()k X f ∇,()()
1
2-∇k
X f ,检验:若()
ε<∇k X f ,则
停止迭代,k X X ≈*.否则, 转向(3); (3) 令 ()()
k k k X f X f S ∇∇-=-12][(牛顿方向); (4) k k k S X X +=+1,1+=k k ,转回(2).
如果f 是对称正定矩阵A 的二次函数,则用牛顿法经过一次迭代 就可达到最优点,如不是二次函数,则牛顿法不能一步达到极值点, 但由于这种函数在极值点附近和二次函数很近似,因此牛顿法的收 敛速度还是很快的.
牛顿法的收敛速度虽然较快,但要求Hessian 矩阵要可逆,要计算二阶导数和逆矩阵,就加大了计算机计算量和存储量. 三.拟牛顿法:
为克服牛顿法的缺点,同时保持较快收敛速度的优点,利用第k 步 和第k+1步得到的k X ,1+k X ,)(k X f ∇,)(1+∇k X f ,构造一个正定 矩阵1
+k G 近似代替)(2k X f ∇,或用1
+k H 近似代替12))((-∇k X f ,将
牛顿方向改为: 1+k G
1+k S =-)(1+∇k X f ,1+k S =-1+k H )(1+∇k X f
从而得到下降方向.
通常采用迭代法计算1
+k G ,1
+k H ,迭代公式为:
BFGS (Boryden-Fletcher-Goldfarb-Shanno )公式 k
k T k k
T k k k k T k T k k k
k x G x G x x G x f f f G G ∆∆∆∆-
∆∆∆∆+=+)()()()(1
k T k T k k k
T k k
k T k k k x f x x x f f H f H H
∆∆∆∆⎪⎪⎭
⎫ ⎝
⎛∆∆∆∆++=+)()()()(11
k
T k T
k k k k T k k x
f x f H H f x ∆∆∆∆-∆∆-)()()( DFP (Davidon-Fletcher-Powell )公式:
k T k T
k k k T k k k T k k
k X f f f f X X G X G G ∆∆∆∆⎪⎪⎭
⎫ ⎝⎛∆∆∆∆++=+)()()()(11
k
T k T
k k k k T k k f
X f X G G X f ∆∆∆∆-∆∆-)()()( k
k T k k
T k k k k T k T k k k
k f H f H f f H X f X X H H
∆∆∆∆-
∆∆∆∆+=+)()()()(1
计算时可置I H =1
(单位阵),对于给出的1X 利
用上面的公式进行递推.这种方法称为拟牛顿法.
3.Matlab 优化工具箱简介
1. MATLAB 求解优化问题的主要函数
2. 优化函数的输入变量
4.控制参数options的设置
Options中常用的几个参数的名称、含义、取值如下:(1) Display: 显示水平.取值
为’off’时,不显示输出; 取值为’iter’时,显示每次迭代的信息;取值为’final’时,显示最终结果.默认值为’final’.
(2) MaxFunEvals: 允许进行函数评价的最大次数,取值为正整数.
(3) MaxIter: 允许进行迭代的最大次数,取值为正整数.控制参数options可以通过函数optimset创建或修改。命令的格式如下:控制参数options可以通过函数optimset创建或修改。命令的格式如下:(1) options=optimset(‘optimfun’)
创建一个含有所有参数名,并与优化函数optimfun相关的默认值的选项结构options.(2)options=optimset(‘param1’,value1,’param2’,value2,...)
创建一个名称为options的优化选项参数,其中指定的参数具有指定值,所有未指定的参数取默认值.(3)options=optimset(oldops,‘param1’,value1,’param2’,
value2,...)
创建名称为oldops的参数的拷贝,用指定的参数值修改oldops中相应的参数.例: