matlab 无约束优化问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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中相应的参数.例:

相关文档
最新文档