非线性优化(二)

  • 一维搜索

 Fibonacci法(分数法)

设y=f(t)是区间[a,b]上的下单峰函数(如下图),在此区间内它有唯一极小点t.若在此区间内任取两点c和d,c<d,并计算函数值f(c)和f(d),可能出现以下两种情形:

  1. f(c)<f(d),这时极小点t必在区间[a,d]内.

  2. f(c)≥f(d),这时极小点t必在区间[c,b]内.

     在区间[a,b]内取两个不同的点,算出它们的函数值加以比较,就可以把搜索区间[a,b]缩小成[a,d]或[c,b](缩小后仍包含极小点).只要在[a,d]或[c,b]中再任取一点算出其函数值,并与f(c)或f(d)加以比较,就可以继续缩小搜索区间.只要缩小后的区间仍包含极小点t,则区间缩得越小,就越接近于函数的极小点,但计算函数值的次数也就越多.

 

     在区间[a,b]内取两个不同的点,算出它们的函数值加以比较,就可以把搜索区间[a,b]缩小成[a,d]或[c,b](缩小后仍包含极小点).只要在[a,d]或[c,b]中再任取一点算出其函数值,并与f(c)或f(d)加以比较,就可以继续缩小搜索区间.只要缩小后的区间仍包含极小点t,则区间缩得越小,就越接近于函数的极小点,但计算函数值的次数也就越多.

用Fibonacci法缩短区间的步骤如下

 

1.确定试点的个数n.根据缩短率δ,即可用式    (6.30)算出Fn,然后由递推公式确定最小的n.

2.选取前两个试点的位置.由递推公式可知,第一次缩短时的两个试点位置是

      t1 =  b0+(a0- b0) Fn-1/ Fn      

      t1, = a0 +(b0- a0) Fn-1/ Fn

它们在区间内是对称的.

 3.计算函数值f(t1)和f(t1,),并比较它们的大小.

    若f(t1)<f(t1,),

则取

         a1 =a0    b1=t1,  t2,= t1

 并令t2= b1+(a1- b1) Fn-2/ Fn-1

 否则,

取   a1 = t1    b1=b0  t2= t1,

 并令t2 , = a1+(b1 - a1) Fn-2/ Fn-1.

 4.计算f(t2)或 f(t2,),如第三步那样一步步迭代.计算的一般公式为

                     tk= bk-1+(ak-1- bk-1) Fn-k/ Fn-k+1

                     tk , = ak-1+(bk-1 - ak-1) Fn-k/ Fn-k+1

     其中k=1,2,…,n-1.            

5.当进行至k=n-1时,

                   tn-1=tn-1,=1/2  (an-2 +bn-2)

无法比较函数值f(tn-1)和f(tn-1 ,)的大小以确定最后区间,为此 ,取

                   tn-1=1/2  (an-2 +bn-2)

                   tn-1,= an-2 +(1/2+ε) (bn-2 - an-2)

 

 

(其中ε为任意小的数,在tn-1和tn-1,中以函数值较小者为近似极小点,相应的函数值为近似极小值.)并取得最终区间[an-2 ,tn-1,]或[tn-1, bn-2].

     由上述分析可知,Fibonacci使用对称搜索的方法,逐步缩短所考察的区间,它能以尽量少的函数求值次数,达到预定的某一缩短率.

 

 

0.618法(黄金分割法)

当用Fibonacci法以n个试点来缩短某一区间时,区间长度的第一次缩短率为Fn-1/ Fn,其后各次分别为

      Fn-2/ Fn-1,Fn-3/ Fn-2 ,…,F1/F2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值