差分進化算法

差分進化算法  又稱微分進化算法 ， 是一種求解最佳化問題的進化算法 。 因爲進化算法對於最佳化問題的要求極少 ， 所以被視爲一種 。 雖然後設啓發式算法適用於多種最佳化問題 ， 但是並不保證可以找到全局最優解 。 差分進化算法被使用在多維度實數編碼的最佳化問題 。 因爲此算法不使用問題的梯度資訊 ， 故可解不可微分的最佳化問題 。 也因此 ， 差分進化算法可用於不連續的 ， 雜訊的 ， 隨著時間改變的最佳化問題 。 差分進化算法類似遺傳算法 ， 包含變異 ， 交叉操作 ， 淘汰機制 。 本質上說 ， 它是一種基於實數編碼的具有保優思想的貪婪遺傳算法 。 而差分進化算法與遺傳算法不同之處 ， 在於變異的部分是隨選兩個解成員變數的差異 ， 經過伸縮後加入當前解成員的變數上 ， 因此差分進化算法無須使用機率分佈產生下一代解成員 。 算法的原理採用對個體進行方向擾動 ， 以達到對個體的函數值進行下降的目的 ， 同其他進化算法一樣 ， 差分進化算法不利用函數的梯度信息 ， 因此對函數的可導性甚至連續性沒有要求 ， 適用性很強 。 同時 ， 算法與粒子群優化有相通之處 ， 但因爲差分進化算法在一定程度上考慮了多變量間的相關性 ， 因此相較於粒子群優化在變量耦合問題上有很大的優勢 。 由於差分進化算法在連續域優化問題的優勢已獲得廣泛應用 ， 並引發進化算法研究領域的熱潮 。 算法的實現參考實現代碼部分