改進爬山算法之四:概率爬山法(Probabilistic Hill Climbing,PHC)

        概率爬山法(Probabilistic Hill Climbing,PHC)是一種局部搜索算法,它結合了隨機性和貪婪搜索的特點,是對爬山算法(Hill Climbing Algorithm)的一種變體或擴展。與傳統的爬山法不同,PHC不是總是選擇最優的鄰居作為下一步的移動,而是以一定的概率選擇最優鄰居,同時以一定的概率接受非最優或甚至更差的鄰居。這種方法有助于算法跳出局部最優解,增加找到全局最優解的可能性。

一、爬山算法基礎

定義:爬山算法是一種局部搜索算法,常用于解決優化問題。它模擬了登山者尋找山峰的過程,通過逐步改進當前的解決方案,以期達到一個局部最優解。

核心思想:從當前解出發,通過與相鄰解的比較來尋找更優解。每次迭代中,算法會探索當前解的周圍區域,尋找能夠帶來改進的潛在解,并更新當前解為最優的候選解。

應用場景:爬山算法廣泛應用于數學建模、機器學習中的參數調優、運籌學中的路徑規劃、生物信息學中的蛋白質結構預測等領域。

前面說過的幾種爬山法變體在選擇下一步時的區別:

(1)爬山算法(Hill Climbing Algorithm,HCA)是在鄰域內搜索最優解作為下一步方向;

(2)隨機化爬山法(Stochastic Hill Climbing)是隨機選擇下一個移動的鄰近解作為下一步方向;

(3)首次爬山法(First-Choice Hill Climbing)是選擇第一個比當前解好的解作為下一步方向;

(4)最陡上升爬山法(Steepest-Ascent Hill Climbing)是鄰域內搜索使目標函數值增長最快的解作為下一步方向。

二、基本原理

概率爬山法的核心思想是在每一步都以一定的概率接受更優的鄰居,同時以一定的概率接受非最優的鄰居。這種隨機性可以幫助算法逃離局部最優解,探索更廣泛的搜索空間。

(1)隨機性引入:在爬山算法的搜索過程中,通過引入隨機因素來增加算法的多樣性,從而有可能跳出局部最優解。這類似于隨機重啟爬山算法(Stochastic Hill Climbing),在搜索過程中以一定的概率重新選擇起始點或接受較差的解。

(2)概率選擇:在比較當前解與鄰居解時,不是簡單地選擇最優解,而是根據一定的概率分布來選擇解。例如,可以設置一個溫度參數,根據當前解與鄰居解的差異和溫度參數來決定接受鄰居解的概率。這種方法類似于模擬退火算法(Simulated Annealing),它結合了概率機制和溫度下降策略來探索解空間。

三、算法步驟

(1)初始化:在搜索空間中隨機選擇一個初始狀態。

(2)選擇鄰居:從當前狀態選擇一組鄰居。

(3)評估鄰居:計算每個鄰居的狀態值(或目標函數值)。

(4)選擇下一步:以一定的概率p選擇最優鄰居作為下一步的移動,或者以1?p的概率隨機選擇一個鄰居(包括當前狀態)。

(5)更新狀態:將選擇的鄰居作為新的狀態。

(6)檢查停止條件:如果達到最大迭代次數或滿足其他停止條件,則停止算法;否則,返回步驟2。

圖1 概率爬山法流程圖

四、概率爬山法的數學公式

(1)初始化解:設初始解為X_{0},通常是在解空間內隨機選擇的。X_{0}\sim U(\Omega )其中U(\Omega )表示從解空間\Omega中均勻隨機選擇一個解。

(2)鄰域解生成:對于當前解X_{i},生成一個或多個鄰域解

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64248.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64248.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64248.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity中實現人物殘影效果

今天火柴人聯盟3公測了,看到一個殘影的效果,很有意思,上網查詢了一下實現方式, 實現思路: 將角色的網格復制出來,然后放置到新建的物體的MeshFilter組件上,每隔幾十毫秒在玩家的位置生成一個&a…

C#實現調用DLL 套殼讀卡程序(桌面程序開發)

背景 正常業務已經支持 讀三代卡了,前端調用醫保封裝好的服務就可以了,但是長護要讀卡,就需要去訪問萬達,他們又搞了一套讀卡的動態庫,為了能夠掉萬達的接口,就需要去想辦法調用它們提供的動態庫方法&…

自動擋有什么優勢

自動擋汽車相比手動擋汽車具有多方面的優勢,以下是對這些優勢的詳細闡述: 一、操作簡便性 無需手動換擋:自動擋汽車不需要駕駛員手動操作離合器和換擋桿,只需通過油門和剎車踏板來控制車速,大大降低了駕駛難度。這使…

菜鳥帶新鳥——基于EPlan2022的部件庫制作(3D)

設備邏輯的概念: 可在布局空間 中和其它對象上放置對象。可將其它對象放置在 3D 對象上。已放置的對象分到組件的邏輯結構中。 將此屬性的整體標識為設備邏輯。可使用不同的功能創建和編輯設備邏輯。 設備的邏輯定義 定義 / 旋轉 / 移動 / 翻轉:組…

小程序基礎 —— 07 創建小程序項目

創建小程序項目 打開微信開發者工具,左側選擇小程序,點擊 號即可新建項目: 在彈出的新頁面,填寫項目信息(后端服務選擇不使用云服務,開發模式為小程序,模板選擇為不使用模板)&…

Android Java 版本的 MSAA OpenGL ES 多重采樣

最近多次被小伙伴問到 OpenGL 多重采樣,其實前面文章里多次講過了,就是構建2個緩沖區,多重采樣緩沖區和目標解析緩沖區。 代碼流程 // Framebuffer IDs private int msaaFBO; private int msaaColorBuffer; private int msaaDepthBuffer;pr…

Markdown語法字體字號講解

學習目錄 語法詳解改變字體樣式[電腦要自帶該樣式字體]改變局部字號全局字體字號的設置使用場景及應用實例 > 快來試試吧😃 👇 👇 👈點擊該圖片即可跳轉至Markdown學習網站進行 Markdown語法字體字號講解👈點擊這里…

Spring boot處理跨域問題

Spring boot處理跨域問題 方案一方案二推薦解決方案注意 方案一 實現WebMvcConfigurer的addCorsMappings方法 Configuration public class InterceptorConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMappin…

TOTP雙因素認證(2FA)php簡單實現

TOTP身份驗證的工作原理基于時間戳和密鑰。用戶需要在設置階段將密鑰與相應的身份驗證器進行綁定。通常,用戶會在需要使用TOTP動態驗證碼的APP或網站上獲得一個密鑰,然后將該密鑰添加到TOTP驗證器工具上。驗證器會根據當前的時間戳和密鑰生成一個一次性密…

day21——web自動化測試(3)Unittest+Selenium實戰小案例

【沒有所謂的運氣🍬,只有絕對的努力?】 目錄 今日目標: 1、UnitTest框架 2、UnitTest 核心用例 2.1 TestCase 2.2 TestSuite 2.3 TestRunner 2.4 TestLoader 2.5 TestLoader 與 TestSuite的區別 2.6 Fixture 3、斷言 3.1 1230…

【Flink運行時架構】系統構架

SMP架構 數據處理系統的架構最簡單的實現方式就是單節點,但是隨著數據量的增大,為了使單節點的機器性能更加強大,需要增加CPU數量和加大內存來提高吞吐量。這就是所謂的SMP(Symmetrical Multi Processing,對稱多處理)架構。 但是這種架構帶來…

CountDownLatch應用舉例

定義 CountDownLatch是juc下的一個多線程鎖,下面是jdk對它的定義 A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes. 翻譯如下 一種同步輔助工具,允許一個或多個…

ADC(二):外部觸發

有關ADC的基礎知識請參考標準庫入門教程 ADC(二):外部觸發 1、TIM1的CC1事件觸發ADC1DMA重裝載2、TIM3的TRGO事件(的更新事件)觸發ADC1DMA重裝載3、TIM3的TRGO事件(的捕獲事件)觸發ADC1DMA重裝載4、優化TIM3的TRGO事件(的捕獲事件)觸發ADC1D…

磁盤分區格式

MBR和GPT ?磁盤分區形式主要有兩種:MBR和GPT。?? MBR(Master Boot Record) MBR是一種較舊的分區形式,首次引入于1983年的IBM PC DOS 2.0。它位于驅動器的第一個扇區,包含460字節的引導代碼、64字節的磁盤分區表和…

幾個支持用戶名密碼的代理鏈工具: glider, gost, proxychains+microsocks

幾個支持用戶名密碼的代理鏈工具: glider, gost, proxychainsmicrosocks gost -L:7777 -Fsocks5://192.168.2.20:7575 -Fsocks5://user:passwd1.1.1.1:10086 -Dgost:(https://github.com/ginuerzh/gost) 參考 https://www.quakemachinex.com/blog/279.html

量子退火與機器學習(1):少量數據求解未知QUBO矩陣,以少見多

文章目錄 前言ー、復習QUBO:中藥配伍的復雜性1.QUBO 的介入:尋找最佳藥材組合 二、難題:QUBO矩陣未知的問題1.為什么這么難? 三、稀疏建模(Sparse Modeling)1. 欠定系統中的稀疏解2. L1和L2的選擇: 三、壓縮感知算法(C…

【連續學習之SSL算法】2018年論文Selfless sequential learning

1 介紹 年份:2018 期刊: arXiv preprint Aljundi R, Rohrbach M, Tuytelaars T. Selfless sequential learning[J]. arXiv preprint arXiv:1806.05421, 2018. 本文提出了一種名為SLNID(Sparse coding through Local Neural Inhibition and…

關于SNAT、DNAT及浮動地址

SNAT、DNAT SNAT、DNAT就是實現代理的功能。 SNAT 類似于客戶端代理:內網主機通過共享公網 IP 地址訪問外部服務。DNAT 類似于服務端代理:外部請求通過公網 IP 轉發到內網主機上的服務。 沒有大網地址的內部主機想要作為客戶端訪問外部網絡(主…

結構方程模型【SEM】:嵌套分層數據及數據分組分析

結構方程模型(System of Equations Model,簡稱SEM),在生態學和環境科學中通常指的是一組描述生態系統中能量、物質和信息流動的數學方程。這些方程可以是確定性的,也可以是隨機的,它們共同構成了一個模型&a…

hot100_56. 合并區間

以數組 intervals 表示若干個區間的集合,其中單個區間為 intervals[i] [starti, endi] 。 請你合并所有重疊的區間,并返回 一個不重疊的區間數組,該數組需恰好覆蓋輸入中的所有區間 。數據結構 二維鏈表存儲每個區間 方法 先對每個區間的…