A. 進化演算法的差分演算法
差分進化演算法(Differential Evolution, DE)是一種新興的進化計算技術,或稱為差分演化演算法、微分進化演算法、微分演化演算法、差異演化演算法。它是由Storn等人於1995年提出的,最初的設想是用於解決切比雪夫多項式問題,後來發現DE也是解決復雜優化問題的有效技術。DE與人工生命,特別是進化演算法有著極為特殊的聯系。
差分進化演算法是基於群體智能理論的優化演算法,通過群體內個體間的合作與競爭產生的群體智能指導優化搜索。但相比於進化演算法,DE保留了基於種群的全局搜索策略,採用實數編碼基於差分的簡單變異操作和一對一的競爭生存策略,降低了遺傳操作的復雜性。同時,DE特有的記憶能力使其可以動態跟蹤當前的搜索情況,以調整其搜索策略,具有較強的全局收斂能力和魯棒性,且不需要藉助問題的特徵信息,適於求解一些利用常規的數學規劃方法所無法求解的復雜環境中的優化問題。
差分進化演算法是一種基於群體進化的演算法,具有記憶個體最優解和種群內信息共享的特點,即通過種群內個體間的合作與競爭來實現對優化問題的求解,其本質是一種基於實數編碼的具有保優思想的貪婪遺傳演算法。
DE是一種用於優化問題的啟發式演算法。本質上說,它是一種基於實數編碼的具有保優思想的貪婪遺傳演算法 。同遺傳演算法一樣,DE包含變異和交叉操作,但同時相較於遺傳演算法的選擇操作,DE採用一對一的淘汰機制來更新種群。由於DE在連續域優化問題的優勢已獲得廣泛應用,並引發進化演算法研究領域的熱潮。
DE由Storn 以及Price提出,演算法的原理採用對個體進行方向擾動,以達到對個體的函數值進行下降的目的,同其他進化演算法一樣,DE不利用目標函數的梯度信息,因此對目標的可導性甚至連續性沒有要求,適用性很強。同時,演算法與粒子群優化有相通之處 ,但因為DE在一定程度上考慮了多變數間的相關性,因此相較於粒子群優化在變數耦合問題上有很大的優勢。演算法的實現參考實現代碼部分。
B. 優化演算法筆記(七)差分進化演算法
(以下描述,均不是學術用語,僅供大家快樂的閱讀)
差分進化演算法(Differential Evolution Algorithm,DE)是一種基於群體的進化演算法,它模擬了群體中的個體的合作與競爭的過程。演算法原理簡單,控制參數少,只有交叉概率和縮放比例因子,魯棒性強,易於實現。
差分進化演算法中,每一個個體的基因表示待求問題的一個候選解。每次迭代將先進行變異操作,選擇一個或多個個體的基因作為基,然後選擇不同的個體的差分來構成差分基因,最後將作為基的基因與差分基因相加來得出新的個體。交叉操作將新的個體將於父代的對應個體交叉,然後進行選擇操作,比較交叉後的個體與父代的對應個體,選擇較優的個體保留至下一代。在迭代完成之後將選擇種群中最優個體的基因作為解。
差分進化演算法可以算是我所使用過的優化演算法中大魔王級別的演算法,雖然它每個方面都沒有強到離譜,但是綜合起來的效果好於大多數演算法。它就像一個每個科目都能考到90分(百分制)的學生,雖然沒門課都不是最優秀的,但是論綜合,論總分,它有極大的概率是第一名。
在我研究優化演算法的小路上,我的目標就是找到一個能打敗大魔王或是能在大多數方面壓制魔王的演算法。
這次的主角就選魔王軍吧(或者蟻王軍,為了與蟻群演算法區別還是叫魔王軍吧),個體則稱之為魔王兵。
魔王兵的能力取決於它們的基因,它們可以根據環境或者需要改變自己的基因使得自己更加強大,更方便的處理問題,問題的維度與基因維度相同。
表示第i個魔王兵在進化了第t次後的基因,該個體有D位基因。
與遺傳演算法同為進化演算法的差分進化演算法,它們的操作(運算元)也都非常相似的,都是交叉,變異和選擇,流程也幾乎一樣(遺傳演算法先交叉後變異,差分進化演算法先變異後交叉)。
說到差分進化演算法中的變異,我就想到一句論語 「三人行,必有我師焉。擇其善者而從之,其不善者而改之。」 ,其實這句論語已經向我們說明了差分進化演算法的整個流程:
「三人行,必有我師焉」——變異,交叉。
「擇其善者而從之,其不善者而改之」——選擇。
差分進化演算法中,當一個魔王兵變異時,它會先找來3個小夥伴,當然是隨機找來3個小夥伴,避免同化。在一個小夥伴的基因上加上另外兩個小夥伴基因之差作為自己的目標基因。其變異公式如下:
表示第i個魔王兵找到了編號為r1、r2和r3的三個魔王兵,當然了i、r1、r2、r3為互不相同的整數,F為縮放比例因子,通常 ,一般取F=0.5。 為第i個魔王兵交叉後的目標基因圖紙,不過這是個半成品,再經過交叉後,目標基因圖紙才算完成。
其實現在我們已經有了5個基因圖紙了 ,接下來將進行交叉操作。由於變異操作,差分進化演算法的種群中個體數至少為4,即魔王軍中至少有4個小兵。
交叉操作中,魔王兵i會將目標基因圖紙 進行加工得到 ,加工過程如下:
其中 。 為交叉概率,其值越大,發生交叉的概率越大,一般取 。 為{1,2,…,D}中的隨機整數,其作用是保證交叉操作中至少有一維基因來自變異操作產生的基因,不能讓交叉操作的努力白費。
從公式上可以看出交叉操作實際上是從變異操作得出的基因圖紙上選擇至少一位基因來替換自己的等位基因,得到最終的基因圖紙。
選擇操作相對簡單,魔王兵i拿到了最終的基因圖紙 ,大喊一聲,進化吧,魔王兵i的基因改變了。它拿出了能力測量器fitness function,如果發現自己變強了,那麼就將基因 保留到下一代,否則它選擇放棄進化,讓自己還原成 。
實驗又來啦,還是那個實驗 ,簡單、易算、好畫圖。
實驗1 :參數如下
圖中可以看出在第20代時,群體已經非常集中了,在來看看最終得出的結果。
這結果真是好到令人發指,惡魔在心中低語「把其他的優化演算法都丟掉吧」。不過別往心裡去,任何演算法都有優缺點,天下沒有免費的午餐,要想獲得某種能力必須付出至少相應的代價。
實驗2:
將交叉率CR設為0,即每次交叉只選擇保留一位變異基因。
看看了看圖,感覺跟實驗1中相比沒有什麼變化,那我們再來看看結果。
結果總體來說比實驗1好了一個數量級。為什麼呢?個人感覺應該是每次只改變一位基因的局部搜索能力比改變多位基因更強。下面我們將交叉率CR設為1來看看是否是這樣。
實驗3:
將交叉率CR設為1,即每次交叉只選擇保留一位原有基因。
實驗3的圖與實驗1和實驗2相比好像也沒什麼差別,只是收斂速度好像快了那麼一點點。再來看看結果。
發現結果比實驗2的結果還要好?那說明了實驗2我得出的結論是可能是錯誤的,交叉率在該問題上對差分進化演算法的影響不大,它們結果的差異可能只是運氣的差異,畢竟是概率演算法。
實驗4:
將變異放縮因子設為0,即變異只與一個個體有關。
收斂速度依然很快,不過怎麼感覺結果不對,而且個體收斂的路徑好像遺傳演算法,當F=0,時,差分進化演算法退化為了沒有變異、選擇操作的遺傳演算法,結果一定不會太好。
果然如此。下面我們再看看F=2時的實驗。
實驗5:
將變異放縮因子設為2。
實驗5的圖可以明顯看出,群體的收斂速度要慢了許多,到第50代時,種群還未完全收斂於一點,那麼在50代時其結果也不會很好,畢竟演算法還未收斂就停止進化了。
結果不算很好但也算相對穩定。
通過上面5個實驗,我們大致了解了差分進化演算法的兩個參數的作用。
交叉率CR,影響基因取自變異基因的比例,由於至少要保留一位自己的基因和變異的基因導致CR在該問題上對演算法性能的影響不大(這個問題比較簡單,維度較低,影響不大)。
變異放縮因子F,影響群體的收斂速度,F越大收斂速度越慢,F絕對值越小收斂速度越快,當F=0是群體之間只會交換基因,不會變異基因。
差分進化演算法大魔王已經如此強大了,那麼還有什麼可以改進的呢?當然有下面一一道來。
方案1 .將3人行修改為5人行,以及推廣到2n+1人行。
實驗6:
將3人行修改為5人行,變異公式如下:
五人行的實驗圖看起來好像與之前並沒有太大的變化,我們再來看看結果。
結果沒有明顯提升,反而感覺比之前的結果差了。反思一下五人行的優缺點,優點,取值范圍更大,缺點,情況太多,減慢搜索速度。
可以看出演算法的收斂速度比之前的變慢了一點,再看看結果。
比之前差。
差分進化演算法的學習在此也告一段落。差分進化演算法很強大,也很簡單、簡潔,演算法的描述都充滿了美感,不愧是大魔王。不過這里並不是結束,這只是個開始,終將找到打敗大魔王的方法,讓新的魔王誕生。
由於差分進化演算法足夠強,而文中實驗的問題較為簡單導致演算法的改進甚至越改越差(其實我也不知道改的如何,需要大量實驗驗證)。在遙遠的將來,也會有更加復雜的問題來檢驗魔王的能力,總之,後會無期。
以下指標純屬個人yy,僅供參考
目錄
上一篇 優化演算法筆記(六)遺傳演算法
下一篇 優化演算法筆記(八)人工蜂群演算法
優化演算法matlab實現(七)差分進化演算法matlab實現
C. 多目標智能優化演算法及其應用的目錄
《智能科學技術著作叢書》序
前言
第1章 緒論
1.1 進化演算法
1.1.1 進化演算法的基本框架
1.1.2 遺傳演算法
1.1.3 進化策略
1.1.4 進化規劃
1.2 粒子群演算法
1.2.1 標准粒子群演算法
1.2.2 演算法解析
1.3 蟻群演算法
1.3.1 蟻群演算法的基本思想
1.3.2 蟻群演算法的實現過程
1.3.3 蟻群演算法描述
1.3.4 蟻群優化的特點
1.4 模擬退火演算法122
1.4.1 模擬退火演算法的基本原理
1.4.2 模擬退火演算法描述
1.5 人工免疫系統
1.5.1 生物免疫系統
1.5.2 人工免疫系統
1.6 禁忌搜索
1.7 分散搜索
1.8 多目標優化基本概念
參考文獻
第2章 多目標進化演算法
2.1 基本原理
2.1.1 MOEA模型
2.1.2 性能指標與測試函數
2.2 典型多目標進化演算法
2.2.1 VEGA、MOGA、NPGA和NSGA
2.2.2 SPEA和SPEA2
2.2.3 NSGA2
2.2.4 PAES
2.2.5 其他典型MOEA
2.3 多目標混合進化演算法
2.3.1 多目標遺傳局部搜索
2.3.2 J—MOGLS
2.3.3 M PAES
2.3.4 多目標混沌進化演算法
2.4 協同多目標進化演算法
2.5 動態多目標進化演算法
2.5.1 IMOEA
2.5.2 動態MOEA(DMOEA)
2.6 並行多目標進化演算法
2.6.1 並行多目標進化演算法的基本原理
2.6.2 多解析度多目標遺傳演算法
2.6.3 並行單前端遺傳演算法
2.7 其他多目標進化演算法
2.7.1 高維多目標優化的NSGA2改進演算法
2.7.2 動態多目標優化的進化演算法
2.8 結論與展望
參考文獻
第3章 多目標粒子群演算法
3.1 基本原理
3.2 典型多目標粒子群演算法
3.2.1 CMOPSO
3.2.2 多目標全面學習粒子群演算法
3.2.3 Pareto檔案多目標粒子群優化
3.3 多目標混合粒子群演算法
3.3.1 模糊多目標粒子群演算法
3.3.2 基於分散搜索的多目標混合粒子群演算法
3.4 交互粒子群演算法
3.5 結論
參考文獻
第4章 其他多目標智能優化演算法
4.1 多目標模擬退火演算法
4.2 多目標蟻群演算法
4.2.1 連續優化問題的多目標蟻群演算法
4.2.2 組合優化問題的多目標蟻群演算法
4.3 多目標免疫演算法
4.4 多目標差分進化演算法
4.5 多目標分散搜索
4.6 結論
參考文獻
第5章 人工神經網路優化
5.1 Pareto進化神經網路
5.2 徑向基神經網路優化與設計
5.3 遞歸神經網路優化與設計
5.4 模糊神經網路多目標優化
5.5 結論
參考文獻
第6章 交通與物流系統優化
6.1 物流配送路徑優化
6.1.1 多目標車輛路徑優化
6.1.2 多目標隨機車輛路徑優化
6.2 城市公交路線網路優化
6.3 公共交通調度
6.3.1 概述
6.3.2 多目標駕駛員調度
6.4 結論
參考文獻
第7章 多目標生產調度
7.1 生產調度描述_
7.1.1 車間調度問題
7.1.2 間隙生產調度
7.1.3 動態生產調度
7.1.4 批處理機調度和E/T調度
7.2 生產調度的表示方法
7.3 基於進化演算法的多目標車間調度
7.3.1 多目標流水車間調度
7.3.2 多目標作業車間調度
7.4 基於進化演算法的多目標模糊調度
7.4.1 模糊調度:Sakawa方法
7.4.2 模糊作業車間調度:cMEA方法
7.5 基於進化演算法的多目標柔性調度
7.5.1 混合遺傳調度方法
7.5.2 混合遺傳演算法
7.6 基於粒子群優化的多目標調度
7.6.1 基於粒子群優化的多目標作業車間調度
7.6.2 多目標柔性調度的混合粒子群方法
7.7 多目標隨機調度
7.8 結論與展望
參考文獻
第8章 電力系統優化及其他
8.1 電力系統優化
8.1.1 基於免疫演算法的多目標無功優化
8.1.2 基於分層優化的多目標電網規劃
8.1.3 基於NSGA2及協同進化的多目標電網規劃
8.2 多播Qos路由優化
8.3 單元製造系統設計
8.3.1 概述
8.3.2 基於禁忌搜索的多目標單元構造
8.3.3 基於並行禁忌搜索的多目標單元構造
8.4 自動控制系統設計
8.4.1 概述
8.4.2 混合動力學系統控制
8.4.3 魯棒PID控制器設計
8.5 結論
參考文獻
附錄 部分測試函數
……
D. 進化演算法入門讀書筆記(一)
這里我參考學習的書籍是:
《進化計算的理論和方法》,王宇平,科學出版社
《進化優化演算法:基於仿生和種群的計算機智能方法》,[美]丹·西蒙,清華大學出版社。
進化演算法是 求解優化問題 的一種演算法,它是 模仿生物進化與遺傳原理 而設計的一類隨機搜索的優化演算法。
不同的作者稱進化演算法有不同的術語,以下。註:這里僅列舉出了我自己比較容易混淆的一些,並未全部列出。
進化計算: 這樣能強調演算法需要在 計算機上 實施,但進化計算也可能指不用於優化的演算法(最初的遺傳演算法並不是用於優化本身,而是想用來研究自然選擇的過程)。因此,進化優化演算法比進化計算更具體。
基於種群的優化: 它強調進化演算法一般是讓問題的候選解 種群 隨著時間的進化以得到問題的更好的解。然而許多進化演算法每次迭代只有單個候選解。因此,進化演算法比基於種群的優化更一般化。
計算機智能/計算智能: 這樣做常常是為了區分進化演算法與專家系統,在傳統上專家系統一直被稱為人工智慧。專家系統模仿演繹推理,進化演算法則模仿歸納推理。進化演算法有時候也被看成是人工智慧的一種。計算機智能是比進化演算法更一般的詞,它包括神經計算、模糊系統、人工生命這樣的一些技術,這些技術可應用於優化之外的問題。因此,進化計算可能比計算機智能更一般化或更具體。
由自然啟發的計算/仿生計算: 像差分進化和分布估計演算法這些進化演算法可能並非源於自然,像進化策略和反向學習這些進化演算法與自然過程聯系甚微。因此,進化演算法比由自然啟發的演算法更一般化,因為進化演算法包括非仿生演算法。
機器學習: 機器學習研究由經驗學到的計算機演算法,它還包括很多不是進化計算的演算法,如強化學習、神經網路、分簇、SVM等等。因此,機器學習比進化演算法更廣。
群智能演算法: 一些人認為群智能演算法應與進化演算法區分開,一些人認為群智能演算法是進化演算法的一個子集。因為群智能演算法與進化演算法有相同的執行方式,即,每次迭代都改進問題的候選解的性能從而讓解的種群進化。因此,我們認為群智能演算法是一種進化演算法。
進化演算法的簡單定義可能並不完美。在進化演算法領域術語的不統一會讓人困惑,一個演算法是進化演算法如果它通常被認為是進化演算法,這個戲謔的、循環的定義一開始有些麻煩,但是一段時間後,這個領域工作的人就會習慣了。
優化幾乎適用於生活中的所有領域。除了對如計算器做加法運算這種過於簡單的問題,不必用進化演算法的軟體,因為有更簡單有效的演算法。此外對於每個復雜的問題,至少應該考慮採用進化演算法。
一個優化問題可以寫成最小化問題或最大化問題,這兩個問題在形式上很容易互相轉化:
函數 被稱為目標函數,向量 被稱為獨立變數,或決策變數。我們稱 中元素的個數為問題的維數。
優化問題常常帶有約束。即在最小化某個函數 時,對 可取的值加上約束。不舉例。
實際的優化問題不僅帶有約束,還有多個目標。這意味著我們想要同時最小化不止一個量。
例子:
這里評估這個問題的一種方式是繪制 作為函數 的函數的圖:
如圖,對在實線上的 的值,找不到能同時使 和 減小的 的其他值,此實線被稱為 帕累托前沿 ,而相應的 的值的集合被稱為帕累托集。(此處的帕累托最優問題十分重要,可以參考這個鏈接來學習和理解: 多目標優化之帕累托最優 - 知乎 ,非常清晰易懂。)
該例子是一個非常簡單的多目標優化問題,它只有兩個目標。實際的優化問題通常涉及兩個以上的模目標,因此很難得到它的帕累托前沿,由於它是高維的,我們也無法將它可視化。後面的章節將會仔細討論多目標進化優化。
多峰優化問題是指問題不止一個局部最小值。上例中的 就有兩個局部最小值,處理起來很容易,有些問題有很多局部最小值,找出其中的全局最小值就頗具挑戰性。
對於前面的簡單例子,我們能用圖形的方法或微積分的方法求解,但是許多實際問題除了有更多獨立變數、多目標,以及帶約束之外更像上面的Ackley函數這樣,對於這類問題,基於微積分或圖形的方法就不夠用了,而進化演算法卻能給出更好的結果。
到現在為止我們考慮的都是連續優化問題,也就是說,允許獨立變數連續地變化。但有許多優化問題中的獨立變數智能在一個離散集合上取值。這類問題被稱為組合優化問題。如旅行商問題。
對於有 個城市的旅行商問題,有 個可能的解。對於一些過大的問題,硬算的方法不可行,像旅行商這樣的組合問題沒有連續的獨立變數,因此不能利用導數求解。除非對每個可能的解都試一遍,不然就無法確定所得到的組合問題的解是否就是最好的解。進化演算法對這類大規模、多維的問題,它至少能幫我們找出一個好的解(不一定是最好的)。
E. 求一個遺傳演算法進行電力系統優化調度 代碼
發一份自編的MATLAB遺傳演算法代碼,用簡單遺傳演算法(Simple Genetic Algorithm or Standard Genetic Algorithm ,SGA)求取函數最大值,初版編寫於7年前上學期間,當時是MATLAB 5.x,在演算法運行效率方面做了修改,主要是採用矩陣操作減少了循環。
遺傳演算法為群體優化演算法,也就是從多個初始解開始進行優化,每個解稱為一個染色體,各染色體之間通過競爭、合作、單獨變異,不斷進化。
優化時先要將實際問題轉換到遺傳空間,就是把實際問題的解用染色體表示,稱為編碼,反過程為解碼,因為優化後要進行評價,所以要返回問題空間,故要進行解碼。SGA採用二進制編碼,染色體就是二進制位串,每一位可稱為一個基因;解碼時應注意將染色體解碼到問題可行域內。
遺傳演算法模擬「適者生存,優勝劣汰」的進化機制,染色體適應生存環境的能力用適應度函數衡量。對於優化問題,適應度函數由目標函數變換而來。一般遺傳演算法求解最大值問題,如果是最小值問題,則通過取倒數或者加負號處理。SGA要求適應度函數>0,對於<0的問題,要通過加一個足夠大的正數來解決。這樣,適應度函數值大的染色體生存能力強。
遺傳演算法有三個進化運算元:選擇(復制)、交叉和變異。
SGA中,選擇採用輪盤賭方法,也就是將染色體分布在一個圓盤上,每個染色體占據一定的扇形區域,扇形區域的面積大小和染色體的適應度大小成正比。如果輪盤中心裝一個可以轉動的指針的話,旋轉指針,指針停下來時會指向某一個區域,則該區域對應的染色體被選中。顯然適應度高的染色體由於所佔的扇形區域大,因此被選中的幾率高,可能被選中多次,而適應度低的可能一次也選不中,從而被淘汰。演算法實現時採用隨機數方法,先將每個染色體的適應度除以所有染色體適應度的和,再累加,使他們根據適應度的大小分布於0-1之間,適應度大的占的區域大,然後隨機生成一個0-1之間的隨機數,隨機數落到哪個區域,對應的染色體就被選中。重復操作,選出群體規模規定數目的染色體。這個操作就是「優勝劣汰,適者生存」,但沒有產生新個體。
交叉模擬有性繁殖,由兩個染色體共同作用產生後代,SGA採用單點交叉。由於SGA為二進制編碼,所以染色體為二進制位串,隨機生成一個小於位串長度的隨機整數,交換兩個染色體該點後的那部分位串。參與交叉的染色體是輪盤賭選出來的個體,並且還要根據選擇概率來確定是否進行交叉(生成0-1之間隨機數,看隨機數是否小於規定的交叉概率),否則直接進入變異操作。這個操作是產生新個體的主要方法,不過基因都來自父輩個體。
變異採用位點變異,對於二進制位串,0變為1,1變為0就是變異。採用概率確定變異位,對每一位生成一個0-1之間的隨機數,看是否小於規定的變異概率,小於的變異,否則保持原狀。這個操作能夠使個體不同於父輩而具有自己獨立的特徵基因,主要用於跳出局部極值。
遺傳演算法認為生物由低級到高級進化,後代比前一代強,但實際操作中可能有退化現象,所以採用最佳個體保留法,也就是曾經出現的最好個體,一定要保證生存下來,使後代至少不差於前一代。大致有兩種類型,一種是把出現的最優個體單獨保存,最後輸出,不影響原來的進化過程;一種是將最優個體保存入子群,也進行選擇、交叉、變異,這樣能充分利用模式,但也可能導致過早收斂。
由於是基本遺傳演算法,所以優化能力一般,解決簡單問題尚可,高維、復雜問題就需要進行改進了。
下面為代碼。函數最大值為3905.9262,此時兩個參數均為-2.0480,有時會出現局部極值,此時一個參數為-2.0480,一個為2.0480。演算法中變異概率pm=0.05,交叉概率pc=0.8。如果不採用最優模式保留,結果會更豐富些,也就是演算法最後不一定收斂於極值點,當然局部收斂現象也會有所減少,但最終尋得的解不一定是本次執行中曾找到過的最好解。
(註:一位網名為mosquitee的朋友提醒我:原代碼的變異點位置有問題。檢驗後發現是將最初的循環實現方法改為矩陣實現方法時為了最優去掉mm的第N行所致,導致變異點位置發生了變化,現做了修改,修改部分加了顏色標記,非常感謝mosquitee,2010-4-22)
% Optimizing a function using Simple Genetic Algorithm with elitist preserved
%Max f(x1,x2)=100*(x1*x1-x2).^2+(1-x1).^2; -2.0480<=x1,x2<=2.0480
% Author: Wang Yonglin ([email protected])
clc;clear all;
format long;%設定數據顯示格式
%初始化參數
T=100;%模擬代數
N=80;% 群體規模
pm=0.05;pc=0.8;%交叉變異概率
umax=2.048;umin=-2.048;%參數取值范圍
L=10;%單個參數字串長度,總編碼長度2L
bval=round(rand(N,2*L));%初始種群
bestv=-inf;%最優適應度初值
%迭代開始
for ii=1:T
%解碼,計算適應度
for i=1:N
y1=0;y2=0;
for j=1:1:L
y1=y1+bval(i,L-j+1)*2^(j-1);
end
x1=(umax-umin)*y1/(2^L-1)+umin;
for j=1:1:L
y2=y2+bval(i,2*L-j+1)*2^(j-1);
end
x2=(umax-umin)*y2/(2^L-1)+umin;
obj(i)=100*(x1*x1-x2).^2+(1-x1).^2; %目標函數
xx(i,:)=[x1,x2];
end
func=obj;%目標函數轉換為適應度函數
p=func./sum(func);
q=cumsum(p);%累加
[fmax,indmax]=max(func);%求當代最佳個體
if fmax>=bestv
bestv=fmax;%到目前為止最優適應度值
bvalxx=bval(indmax,:);%到目前為止最佳位串
optxx=xx(indmax,:);%到目前為止最優參數
end
Bfit1(ii)=bestv; % 存儲每代的最優適應度
%%%%遺傳操作開始
%輪盤賭選擇
for i=1:(N-1)
r=rand;
tmp=find(r<=q);
newbval(i,:)=bval(tmp(1),:);
end
newbval(N,:)=bvalxx;%最優保留
bval=newbval;
%單點交叉
for i=1:2:(N-1)
cc=rand;
if cc<pc
point=ceil(rand*(2*L-1));%取得一個1到2L-1的整數
ch=bval(i,:);
bval(i,point+1:2*L)=bval(i+1,point+1:2*L);
bval(i+1,point+1:2*L)=ch(1,point+1:2*L);
end
end
bval(N,:)=bvalxx;%最優保留
%位點變異
mm=rand(N,2*L)<pm;%N行
mm(N,:)=zeros(1,2*L);%最後一行不變異,強制賦0
bval(mm)=1-bval(mm);
end
%輸出
plot(Bfit1);% 繪制最優適應度進化曲線
bestv %輸出最優適應度值
optxx %輸出最優參數
F. 多目標差分進化演算法
差分進化演算法(Differential Evolution, DE)是一種基於群體差異的啟發式隨機搜索演算法,該演算法是由R.Storn和K.Price為求解Chebyshev多項式而提出的。是一種用於最佳化問題的後設啟發式演算法。本質上說,它是一種基於實數編碼的具有保優思想的貪婪遺傳演算法。
將問題的求解表示成"染色體"的適者生存過程,通過"染色體"群的一代代不斷進化,包括復制、交叉和變異等操作,最終收斂到"最適應環境"的個體,從而求得問題的最優解或滿意解。
差分進化演算法類似遺傳演算法,包含變異,交叉操作,淘汰機制,而差分進化演算法與遺傳演算法不同之處,在於變異的部分是隨選兩個解成員變數的差異,經過伸縮後加入當前解成員的變數上,因此差分進化演算法無須使用概率分布產生下一代解成員。最優化方法分為傳統優化方法和啟發式優化方法兩大類。傳統的優化方法大多數都是利用目標函數的導數求解;而啟發式優化方法以仿生演算法為主,通過啟發式搜索策略實現求解優化。啟發式搜索演算法不要求目標函數連續、可微等信息,具有較好的全局尋優能力,成為最優化領域的研究熱點。
在人工智慧領域中,演化演算法是演化計算的一個分支。它是一種基於群體的元啟發式優化演算法,具有自適應、自搜索、自組織和隱並行性等特點。近年來,很多學者將演化演算法應用到優化領域中,取得了很大的成功,並已引起了人們的廣泛關注。越來越多的研究者加入到演化優化的研究之中,並對演化演算法作了許多改進,使其更適合各種優化問題。目前,演化演算法已廣泛應用於求解無約束函數優化、約束函數優化、組合優化、多目標優化等多種優化問題中。
G. 蟻群優化演算法的使用-編碼的問題!
「蟻群演算法」學習包下載
下載地址: http://board.verycd.com/t196436.html (請使用 eMule 下載)
近一百多篇文章,打包壓縮後有 24.99MB ,基本上是從維普資料庫中下載來的,僅供學習和研究之用,請務用於商業活動或其他非法活動中,各文章版權歸原作者所有。
如果您覺得本人這樣做侵犯了您的版權,請在本帖後回復,本人會馬上刪除相應的文章。
以下是文件列表,全是 PDF 格式的:
基於蟻群優化演算法遞歸神經網路的短期負荷預測
蟻群演算法的小改進
基於蟻群演算法的無人機任務規劃
多態蟻群演算法
MCM基板互連測試的單探針路徑優化研究
改進的增強型蟻群演算法
基於雲模型理論的蟻群演算法改進研究
基於禁忌搜索與蟻群最優結合演算法的配電網規劃
自適應蟻群演算法在序列比對中的應用
基於蟻群演算法的QoS多播路由優化演算法
多目標優化問題的蟻群演算法研究
多線程蟻群演算法及其在最短路問題上的應用研究
改進的蟻群演算法在2D HP模型中的應用
製造系統通用作業計劃與蟻群演算法優化
基於混合行為蟻群演算法的研究
火力優化分配問題的小生境遺傳螞蟻演算法
基於蟻群演算法的對等網模擬器的設計與實現
基於粗粒度模型的蟻群優化並行演算法
動態躍遷轉移蟻群演算法
基於人工免疫演算法和蟻群演算法求解旅行商問題
基於信息素非同步更新的蟻群演算法
用於連續函數優化的蟻群演算法
求解復雜多階段決策問題的動態窗口蟻群優化演算法
蟻群演算法在鑄造生產配料優化中的應用
多階段輸電網路最優規劃的並行蟻群演算法
求解旅行商問題的混合粒子群優化演算法
微粒群優化演算法研究現狀及其進展
隨機攝動蟻群演算法的收斂性及其數值特性分析
廣義蟻群與粒子群結合演算法在電力系統經濟負荷分配中的應用
改進的蟻群演算法及其在TSP中的應用研究
蟻群演算法的全局收斂性研究及改進
房地產開發項目投資組合優化的改進蟻群演算法
一種改進的蟻群演算法用於灰色約束非線性規劃問題求解
一種自適應蟻群演算法及其模擬研究
一種動態自適應蟻群演算法
螞蟻群落優化演算法在蛋白質折疊二維親-疏水格點模型中的應用
用改進蟻群演算法求解函數優化問題
連續優化問題的蟻群演算法研究進展
蟻群演算法概述
Ant colony system algorithm for the optimization of beer fermentation control
蟻群演算法在K—TSP問題中的應用
Parallel ant colony algorithm and its application in the capacitated lot sizing problem for an agile supply chain
基於遺傳蟻群演算法的機器人全局路徑規劃研究
改進的蟻群演算法在礦山物流配送路徑優化中的研究
基於蟻群演算法的配電網路綜合優化方法
基於蟻群演算法的分類規則挖掘演算法
蟻群演算法在連續性空間優化問題中的應用
蟻群演算法在礦井通風系統優化設計中的應用
基於蟻群演算法的液壓土錨鑽機動力頭優化設計
改進蟻群演算法設計拉式膜片彈簧
計算機科學技術
基本蟻群演算法及其改進
TSP改進演算法及在PCB數控加工刀具軌跡中的應用
可靠性優化的蟻群演算法
對一類帶聚類特徵TSP問題的蟻群演算法求解
蟻群演算法理論及應用研究的進展
基於二進制編碼的蟻群優化演算法及其收斂性分析
蟻群演算法的理論及其應用
基於蟻群行為模擬的影像紋理分類
啟發式蟻群演算法及其在高填石路堤穩定性分析中的應用
蟻群演算法的研究現狀
一種快速全局優化的改進蟻群演算法及模擬
聚類問題的蟻群演算法
蟻群最優化——模型、演算法及應用綜述
基於信息熵的改進蟻群演算法及其應用
機載公共設備綜合管理系統任務分配演算法研究
基於改進蟻群演算法的飛機低空突防航路規劃
利用信息量留存的蟻群遺傳演算法
An Improved Heuristic Ant-Clustering Algorithm
改進型蟻群演算法在內燃機徑向滑動軸承優化設計中的應用
基於蟻群演算法的PID參數優化
基於蟻群演算法的復雜系統多故障狀態的決策
蟻群演算法在數據挖掘中的應用研究
基於蟻群演算法的基因聯接學習遺傳演算法
基於細粒度模型的並行蟻群優化演算法
Binary-Coding-Based Ant Colony Optimization and Its Convergence
運載火箭控制系統漏電故障診斷研究
混沌擾動啟發式蟻群演算法及其在邊坡非圓弧臨界滑動面搜索中的應用
蟻群演算法原理的模擬研究
Hopfield neural network based on ant system
蟻群演算法及其實現方法研究
分層實體製造激光頭切割路徑的建模與優化
配送網路規劃蟻群演算法
基於蟻群演算法的城域交通控制實時滾動優化
基於蟻群演算法的復合形法及其在邊坡穩定分析中的應用
Ant Colony Algorithm for Solving QoS Routing Problem
多產品間歇過程調度問題的建模與優化
基於蟻群演算法的兩地之間的最佳路徑選擇
蟻群演算法求解問題時易產生的誤區及對策
用雙向收斂蟻群演算法解作業車間調度問題
物流配送路徑安排問題的混合蟻群演算法
求解TSP問題的模式學習並行蟻群演算法
基於蟻群演算法的三維空間機器人路徑規劃
蟻群優化演算法及其應用
蟻群演算法不確定性分析
一種求解TSP問題的相遇蟻群演算法
基於蟻群優化演算法的彩色圖像顏色聚類的研究
鈑金件數控激光切割割嘴路徑的優化
基於蟻群演算法的圖像分割方法
一種基於蟻群演算法的聚類組合方法
圓排列問題的蟻群模擬退火演算法
智能混合優化策略及其在流水作業調度中的應用
蟻群演算法在QoS網路路由中的應用
一種改進的自適應路由演算法
基於蟻群演算法的煤炭運輸優化方法
基於蟻群智能和支持向量機的人臉性別分類方法
蟻群演算法在啤酒發酵控制優化中的應用
一種基於時延信息的多QoS快速自適應路由演算法
蟻群演算法中參數α、β、ρ設置的研究——以TSP問題為例
基於人工蟻群優化的矢量量化碼書設計演算法
具有自適應雜交特徵的蟻群演算法
蟻群演算法在原料礦粉混勻優化中的應用
基於多Agent的蟻群演算法在車間動態調度中的應用研究
用蟻群優化演算法求解中國旅行商問題
蟻群演算法在嬰兒營養米粉配方中的應用
蟻群演算法在機械優化設計中的應用
蟻群優化演算法的研究現狀及研究展望
蟻群優化演算法及其應用研究進展
蟻群演算法的理論與應用
簡單蟻群演算法的模擬分析
一種改進的蟻群演算法求解最短路徑問題
基於模式求解旅行商問題的蟻群演算法
一種求解TSP的混合型蟻群演算法
基於MATLAB的改進型基本蟻群演算法
動態蟻群演算法求解TSP問題
用蟻群演算法求解類TSP問題的研究
蟻群演算法求解連續空間優化問題的一種方法
用混合型螞蟻群演算法求解TSP問題
求解復雜TSP問題的隨機擾動蟻群演算法
基於蟻群演算法的中國旅行商問題滿意解
蟻群演算法的研究現狀和應用及螞蟻智能體的硬體實現
蟻群演算法概述
蟻群演算法的研究現狀及其展望
基於蟻群演算法的配電網網架優化規劃方法
用於一般函數優化的蟻群演算法
協同模型與遺傳演算法的集成
基於蟻群最優的輸電網路擴展規劃
自適應蟻群演算法
凸整數規劃問題的混合蟻群演算法
一種新的進化演算法—蛟群演算法
基於協同工作方式的一種蟻群布線系統