最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

爬山算法簡介和Python實現(xiàn)實例

 更新時間:2014年04月26日 09:30:53   作者:  
這篇文章主要介紹了爬山算法,爬山法(climbing method)是一種優(yōu)化算法,其一般從一個隨機的解開始,然后逐步找到一個最優(yōu)解(局部最優(yōu))然后用Python實現(xiàn)了這個算法,需要的朋友可以參考下

一、爬山法簡介

爬山法(climbing method)是一種優(yōu)化算法,其一般從一個隨機的解開始,然后逐步找到一個最優(yōu)解(局部最優(yōu))。 假定所求問題有多個參數(shù),我們在通過爬山法逐步獲得最優(yōu)解的過程中可以依次分別將某個參數(shù)的值增加或者減少一個單位。例如某個問題的解需要使用3個整數(shù)類型的參數(shù)x1、x2、x3,開始時將這三個參數(shù)設值為(2,2,-2),將x1增加/減少1,得到兩個解(1,2,-2), (3, 2,-2);將x2增加/減少1,得到兩個解(2,3, -2),(2,1, -2);將x3增加/減少1,得到兩個解(2,2,-1),(2,2,-3),這樣就得到了一個解集:
(2,2,-2), (1, 2,-2), (3, 2,-2), (2,3,-2), (2,1,-2), (2,2,-1), (2,2,-3)
從上面的解集中找到最優(yōu)解,然后將這個最優(yōu)解依據(jù)上面的方法再構(gòu)造一個解集,再求最優(yōu)解,就這樣,直到前一次的最優(yōu)解和后一次的最優(yōu)解相同才結(jié)束“爬山”。

二、Python實例

設方程 y = x1+x2-x3,x1是區(qū)間[-2, 5]中的整數(shù),x2是區(qū)間[2, 6]中的整數(shù),x3是區(qū)間[-5, 2]中的整數(shù)。使用爬山法,找到使得y取值最小的解。

代碼如下:

復制代碼 代碼如下:

import random

def evaluate(x1, x2, x3):
    return x1+x2-x3

if __name__ == '__main__':
    x_range = [ [-2, 5], [2, 6], [-5, 2] ]
    best_sol = [random.randint(x_range[0][0], x_range[0][1]),
           random.randint(x_range[1][0], x_range[1][1]),
           random.randint(x_range[2][0], x_range[2][1])]

    while True:
        best_evaluate = evaluate(best_sol[0], best_sol[1], best_sol[2])
        current_best_value = best_evaluate
        sols = [best_sol]

        for i in xrange(len(best_sol)):
            if best_sol[i] > x_range[i][0]:
                sols.append(best_sol[0:i] + [best_sol[i]-1] + best_sol[i+1:])
            if best_sol[i] < x_range[i][1]:
                sols.append(best_sol[0:i] + [best_sol[i]+1] + best_sol[i+1:])
        print sols
        for s in sols:
            el = evaluate(s[0], s[1], s[2])
            if el < best_evaluate:
                best_sol = s
                best_evaluate = el
        if best_evaluate == current_best_value:
            break

    print 'best sol:', current_best_value, best_sol
某次運行結(jié)果如下:

[[0, 5, 1], [-1, 5, 1], [1, 5, 1], [0, 4, 1], [0, 6, 1], [0, 5, 0], [0, 5, 2]]
[[-1, 5, 1], [-2, 5, 1], [0, 5, 1], [-1, 4, 1], [-1, 6, 1], [-1, 5, 0], [-1, 5, 2]]
[[-2, 5, 1], [-1, 5, 1], [-2, 4, 1], [-2, 6, 1], [-2, 5, 0], [-2, 5, 2]]
[[-2, 4, 1], [-1, 4, 1], [-2, 3, 1], [-2, 5, 1], [-2, 4, 0], [-2, 4, 2]]
[[-2, 3, 1], [-1, 3, 1], [-2, 2, 1], [-2, 4, 1], [-2, 3, 0], [-2, 3, 2]]
[[-2, 2, 1], [-1, 2, 1], [-2, 3, 1], [-2, 2, 0], [-2, 2, 2]]
[[-2, 2, 2], [-1, 2, 2], [-2, 3, 2], [-2, 2, 1]]
best sol: -2 [-2, 2, 2]


可以看到,最優(yōu)解是-2,對應的x1、x2、x3分別取值-2、2、2。

三、如何找到全局最優(yōu)

爬山法獲取的最優(yōu)解的可能是局部最優(yōu),如果要獲得更好的解,多次使用爬山算法(需要從不同的初始解開始爬山),從多個局部最優(yōu)解中找出最優(yōu)解,而這個最優(yōu)解也有可能是全局最優(yōu)解。

另外,模擬退火算法也是一個試圖找到全局最優(yōu)解的算法。

 

相關(guān)文章

  • pycharm軟件實現(xiàn)設置自動保存操作

    pycharm軟件實現(xiàn)設置自動保存操作

    這篇文章主要介紹了pycharm軟件實現(xiàn)設置自動保存操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python文件名和文件路徑操作實例

    python文件名和文件路徑操作實例

    下面小編就為大家?guī)硪黄猵ython文件名和文件路徑操作實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 詳解Python 解壓縮文件

    詳解Python 解壓縮文件

    這篇文章主要介紹了Python 解壓縮文件,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • Python緩存利器之cachetools庫使用詳解

    Python緩存利器之cachetools庫使用詳解

    cachetools庫為Python提供了強大而靈活的緩存解決方案,通過使用不同類型的緩存和緩存裝飾器,我們可以輕松地在程序中實現(xiàn)高效的緩存機制,從而提升程序性能,本文將詳細介紹cachetools庫的基本概念和使用方法,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Python使用pptx實現(xiàn)復制頁面到其他PPT中

    Python使用pptx實現(xiàn)復制頁面到其他PPT中

    這篇文章主要為大家詳細介紹了python如何使用pptx庫實現(xiàn)從一個ppt復制頁面到另一個ppt里面,文中的示例代碼講解詳細,感興趣的可以嘗試一下
    2023-02-02
  • Python爬蟲入門案例之爬取二手房源數(shù)據(jù)

    Python爬蟲入門案例之爬取二手房源數(shù)據(jù)

    讀萬卷書不如行萬里路,學的扎不扎實要通過實戰(zhàn)才能看出來,今天小編給大家?guī)硪环輕ython爬取二手房源信息的案例,可以用來直觀的了解房價行情,大家可以在過程中查缺補漏,看看自己掌握程度怎么樣
    2021-10-10
  • pytorch使用voc分割數(shù)據(jù)集訓練FCN流程講解

    pytorch使用voc分割數(shù)據(jù)集訓練FCN流程講解

    這篇文章主要介紹了pytorch使用voc分割數(shù)據(jù)集訓練FCN流程,圖像分割發(fā)展過程也經(jīng)歷了傳統(tǒng)算法到深度學習算法的轉(zhuǎn)變,傳統(tǒng)的分割算法包括閾值分割、分水嶺、邊緣檢測等等
    2022-12-12
  • python調(diào)用API實現(xiàn)智能回復機器人

    python調(diào)用API實現(xiàn)智能回復機器人

    這篇文章主要為大家詳細介紹了python調(diào)用API實現(xiàn)智能回復機器人,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python替換Excel表格中的空值或指定值的實現(xiàn)

    Python替換Excel表格中的空值或指定值的實現(xiàn)

    本文介紹了使用Python的pandas庫結(jié)合openpyxl來批量替換Excel表格中的空值或指定值,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-12-12
  • Python實現(xiàn)操縱控制windows注冊表的方法分析

    Python實現(xiàn)操縱控制windows注冊表的方法分析

    這篇文章主要介紹了Python實現(xiàn)操縱控制windows注冊表的方法,結(jié)合實例形式分析了Python使用_winreg模塊以及win32api模塊針對Windows注冊表操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-05-05

最新評論

石渠县| 肇庆市| 张家港市| 衡水市| 永城市| 宁夏| 昌图县| 桓台县| 揭西县| 迁西县| 托克托县| 霍邱县| 新巴尔虎左旗| 岗巴县| 文昌市| 兰州市| 阿坝县| 永康市| 通河县| 临夏县| 吉木萨尔县| 阳山县| 丰都县| 奉化市| 尖扎县| 远安县| 从化市| 常山县| 桃园市| 奉节县| 翼城县| 陇川县| 永泰县| 普格县| 长岭县| 清新县| 财经| 上杭县| 通渭县| 浮梁县| 郁南县|