優化演算法概述

2021-09-27 04:26:24 字數 1003 閱讀 7584

最近痴迷於科研,好久沒有更新部落格了,馬上就要參加數學建模比賽,自己動手寫了一下目前比較主流的幾種啟發式優化演算法,在這裡分享下,同時作為複習總結。

相信大家對優化問題已經再熟悉不過了,我們在生活中經常會遇到各種優化問題,比如我經常會考慮自己一天怎麼才能花更少的錢、吃更多更好的飯,因此為了解決這種問題,各類的優化演算法被提出,其中包括區域性優化演算法,也包括全域性優化演算法。下面將簡單介紹一下常見的優化演算法:

1.梯度下降法

相信學習機器學習的同學對梯度下降演算法已經在熟悉不過了,其實梯度下降法的優化思想也很簡單,其實就是將當前位置的負梯度方向作為搜尋方向進行最優化搜尋(梯度方向是函式

上公升最快的方向)。

雖然作為應用廣泛的優化演算法,但是梯度下降演算法同樣存在缺點:靠近極小值時會導致搜尋速度的下降,導致搜尋時間較長。

2.牛頓法和擬牛頓法

牛頓法是一種在實數域和複數域上近似求解的方法,而擬牛頓法則是改善牛頓法每次求解複雜的hessian矩陣的逆矩陣的缺點,它使用正定矩陣來近似hessian矩陣的逆矩陣,從而簡化了計算的複雜度。這裡就不具體介紹,具體參考這篇部落格介紹的比較詳細。

3.共軛梯度法

共軛梯度法是介於梯度下降演算法和牛頓法之間的乙個方法,它僅需利用一階導數資訊,但克服了最速下降法收斂慢的缺點,又避免了牛頓法需要儲存和計算hesse矩陣並求逆的缺點,共軛梯度法不僅是解決大型線性方程組有用的方法之一,也是解大型非線性最優化最有效的演算法之一,具體參考:

4.啟發式優化演算法

啟發式優化演算法是後面部落格主要講解的,啟發式演算法可以這樣定義:乙個基於直觀或經驗構造的演算法,在可接受的花費(指計算時間和空間)下給出待解決組合優化問題每乙個例項的乙個可行解,該可行解與最優解的偏離程度一般不能被預計。啟發式優化演算法主要用來解決np問題,具體什麼np問題,大家可以參考:

CSS優化概述

css優化的作用 1 減輕伺服器的壓力 2 縮短伺服器響應時間 3 提高使用者的體驗度 css優化原則 1 儘量減少http請求個數 css sprites 合併多個背景影象到乙個單獨影象,然後通過background image和background position進行調整 image maps...

效能優化概述

效能優化的指標 併發量 秒殺 雙11 比如微博的幾次拓機 qps tqp 具體的實時方案 一 級別 效果很明顯,以自之力是可以完全實現 快取 本地快取 redis等。效果最明顯 提公升1000倍以上 批處理 比如myslq 批插入,redis 的hset等 提公升n倍 併發 多執行緒 執行緒池技術,...

mysql優化概述

設計 儲存引擎的選擇,字段型別,正規化 功能 索引,快取,分割槽 架構 主從複製,讀寫分離,負載均衡 合理sql 測試,經驗。一 儲存引擎的選擇 用來儲存mysql中物件 記錄和索引 的一種特定的結構 檔案結構 儲存引擎,處於mysql伺服器的最底層,直接儲存資料,導致上層的操作,取決於引擎的選擇。...