最优化算法实验报告(附Matlab程序)

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

最优化方法(Matlab)实验报告

——Fibonacci 法

一、实验目的:

用MATLAB 程序实现一维搜索中用Fibonacc 法求解一元单峰函数的极小值问题。二、实验原理:

(一)、构造Fibonacci 数列:设数列{}k F ,满足条件:

1、011F F ==

2、11

k k k F F F +-=+则称数列{}k F 为Fibonacci 数列。(二)、迭代过程:

首先由下面的迭代公式确定出迭代点:

1

1

1

(),1,...,1(),1,...,1n k k k k k n k n k

k k k k n k F a b a k n F F u a b a k n F λ---+--+=+

-=-=+

-=-易验证,用上述迭代公式进行迭代时,第k 次迭代的区间长度缩短比率恰好为

1

n k

n k F F --+。故可设迭代次数为n ,因此有11121211221111223231

()()......()()n n n n n n n n n

F F F F F F b a b a b a b a b a F F F F F F F ------=

-=⨯-==⨯-=-若设精度为L ,则有第n 次迭代得区间长度111

()n n n

b a L

b a L

F -≤-≤,即

就是

111

()n

b a L F -≤,由此便可确定出迭代次数n 。

假设第k 次迭代时已确定出区间[,]k k a b 以及试探点,[,]k k k k u a b λ∈并且k k u λ<。计算试探点处的函数值,有以下两种可能:(1)若()()k k f f u λ>,则令

111111111,,()()

()

k k k k

k k k k n k k k k k n k

a b b f f F

a b a F λλμλμμ++++--++++-=====+-计算1()k f μ+的值。(2)()()k k f f u λ≤,则令

111121111,,()()

()

k k k k

k k k k n k k k k k n k

a a

b f f F

a b a F μμλμλλ++++--++++-=====+-计算1()k f λ+的值。

又因为第一次迭代确定出了两个迭代点,以后每迭代一次,新增加一个迭代点,这样在迭代n-1后便计算完了n 个迭代点。因此第n 次迭代中,选用第n-1次的迭代点以及辨别常数δ构造n λ和n μ:

1

1n n n n λλμλδ

--==+再用同样的方法进行判断:(1)、若()n f λ>()n f μ则令

1

n n n n a b b λ-==(2)、若()n f λ<=()n f μ则令

1n n n n

a a

b μ-==这样便可确定出最优解的存在区间[,]n n a b 。

三、实验步骤:

(1)给定初始区间11[,]a b 和期望达到的精度L ,求迭代次数n ,使得

11

n b a F L

-≥

置判别系数0δ>,计算试探点11u λ 和 ,其中

2

1111()n n

F a b a F λ-=+

-1

1111()n n

F u a b a F -=+

-计算函数值11()()f f u λ和,置k =1;

(2)若()()k k f f u λ>,则转(3);若()()k k f f u λ≤,则转(4);(3)令1111,,,()()k k k k k k k k a b b u f f u λλλ++++====,计算试探点1k u +,

1

1111()n k k k k k n k

F u a b a F --++++-=+

-若k =n -2,则转步骤(5);否则,计算1()k f u +,置k=k+1,转步骤(2);(4)令1111,,,()()k k k k k k k k a a b u u f u f λλ++++====,计算1k λ+,

2

1111()n k k k k k n k

F a b a F λ--++++-=+

-若k =n -2,则转步骤(5);否则,计算1()k f λ+,置k=k+1,转步骤(2);(5)令11,n n n n u λλλδ--==+,计算()()n n f f u λ和若()()n n f f u λ>,则令1,n n n n a b b λ-==若()()n n f f u λ≤,则令

1,n n n n

a a

b λ-==停止计算,极小点含于[,]n n a b 。四、算法流程图

五、用MATLAB 程序实现,并计算一个例题。(程序见附录)例题:用Fibonacci 法求解问题

2min ()1

def

f x t t =-+设初始区间11[,][1,1]a b =-,精度L=0.001,辨别常数0.0001δ=六、实验结果:

函数图像及迭代点变动图像如下图所示:

y=t 2-t+1

由运行结果看出,迭代进行18次便达到期望的精度,其迭代点序列向量如下:

a=[-1.0000

-0.23610.23610.23610.41640.41640.41640.45900.48530.48530.49530.49530.49530.49770.49920.49920.49960.4996];b=[1.0000

1.0000 1.00000.70820.70820.59670.52790.52790.52790.51160.51160.50540.50160.50160.50160.50060.50060.5001];r=[-0.23610.23610.52790.41640.52790.48530.4590

0.4853

0.5016

0.49530.50160.4992

相关文档
最新文档