我是靠谱客的博主 小巧白羊,最近开发中收集的这篇文章主要介绍最优化——线搜索-斐波那契数列法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

斐波那契数列法

斐波那契数列法与二分法相比没有太大的区别,只是nuk与lambdak的更新方式不一样,如下。
在这里插入图片描述
在这里插入图片描述
其中F为斐波那契数列,k为迭代次数,n为数组大小。


Python代码:

def FibonacciArray(size):
    fibonacciArray = [1,1]
    for i in range(2,size):
        fibonacciArray.append(fibonacciArray[i-1] + fibonacciArray[i-2])
    return fibonacciArray

fibonacciArray = FibonacciArray(50)
def FibonacciMethod(a0, b0,):
    epsilon = 0.0001
    ak = a0
    bk = b0
    k = 0
    n = len(fibonacciArray) - 1
    while True:
        if bk -ak < epsilon:
            xstar = (bk + ak) / 2
            fstar = calFx(xstar)
            return xstar, fstar
        else:
            k = k + 1
            lambdaK = ak + (fibonacciArray[n - k - 1] / fibonacciArray[n - k + 1]) * (bk - ak)
            muK= ak + (fibonacciArray[n - k] / fibonacciArray[n - k + 1]) * (bk - ak)
            fLambdaK = calFx(lambdaK)
            fMuK = calFx(muK)
            if fLambdaK > fMuK:
                ak = lambdaK
                continue
            else:
                bk = muK
                continue
xstar, fstar = FibonacciMethod(-3,5)
print("FibonacciMethod xstar is %s" % xstar)
print("FibonacciMethod fstar is %s" % fstar)

最后

以上就是小巧白羊为你收集整理的最优化——线搜索-斐波那契数列法的全部内容,希望文章能够帮你解决最优化——线搜索-斐波那契数列法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部