04 最優化方法

weixin_34402408發表於2019-01-02

推薦書籍:

《最優化方法》 李元科


11332520-65dd2e5c398d441a.png

基本概念:

目標函式     無約束優化   約束優化 


11332520-227cee53290a2306.png


11332520-1934bf51d80d2419.png

 迭代下降法 

1)圖解法:

11332520-3825b36f10939516.png


11332520-7aa631cd7e1f7a7e.png
11332520-49997983c306f8ca.png

 2)迭代下降法


11332520-dd6fe69cec2d38b6.png


11332520-9900421d8cc0c507.png




導數是函式在一個點上變化率的描述 。 偏導數是函式在一點沿座標方向的變化率 ,方向導數是函式在一點沿任意方向的變化率 ,梯度則是函式在一個點上變化率最大的方向導數 。 函式在一個點上沿任意方向的方向導數等於函式在該點的梯度在該方向上的投影 。


方向導數:



11332520-6c59160c95ddce74.png

 梯度定義:

11332520-76acfb47eb8e158a.png


11332520-ce68131eb52ca273.png

無約束優化 : 


11332520-c98123904b5e5f8a.png


11332520-0f8c007c5f11764a.png

約束優化: 


11332520-55850352c23624e9.png


11332520-fc484785d3b51492.png


11332520-c9006614d6d82702.png



梯度下降法(看一階導數):


11332520-5f27656e1f1c1ec6.png



11332520-5f65f4c6ca79f48d.png

牛頓法(二階導數):


11332520-d6a80f3831a81a9a.png


11332520-f3f03a3d59f4fd60.png


11332520-46b70a8a93800769.png


11332520-bf9e5f3d53c49b5b.png

啟發式演算法:

遺傳演算法:模擬退火演算法:蟻群演算法:

模擬退火演算法:

參看:
http://www.cnblogs.com/ranjiewen/p/6084052.html


from random import randint

def flip(segs, pos):

    return segs[:pos] + str(1-int(segs[pos])) + segs[pos+1:]

def flip_n(segs, n):

    for i in range(n):

        segs = flip(segs, randint(0, len(segs)-1))

    return segs

def anneal(text, segs, iterations, cooling_rate):

    temperature = float(len(segs))

    while temperature > 0.5:

        best_segs, best = segs, evaluate(text, segs)

        for i in range(iterations):

            guess = flip_n(segs, int(round(temperature,0)))

            score = evaluate(text, guess)

            if score < best:

                best, best_segs = score, guess

        score, segs = best, best_segs

        temperature = temperature / cooling_rate

        print(evaluate(text, segs), segment(text, segs))

    print()

    return segs

執行示例:

text = "doyouseethekittyseethedoggydoyoulikethekittylikethedoggy"

seg1 = "0000000000000001000000000010000000000000000100000000000"

anneal(text, seg1, 5000, 1.2)

相關文章