一個封裝遺傳算法基本操作的類

      最近一直在做項目的最後一部分,關於優化的問題,我用遺傳算法進行了優化計算,現在終於算是搞定了。下面首先簡單的介紹一下遺傳算法,然後給出我對遺傳算法基本操作封裝的一個類,最後給出如何使用這個類的一個工程例子。

      遺傳算法是一種現代優化算法,是根據生物進化思想而得出的一種全局優化算法。生物的進化是一個奇妙的優化過程,它通過基因遺傳,基因雜交,基因變異等規律產生適應環境變化的優良物種。它是一種模擬生物進化過程的一種全局尋優的方法。由於它具有很多的優點,如:隨機性較大,不需要精確的規則;容易形成通用的算法;收斂速度快等等,因此在現代優化計算中,使用遺傳算法的頻率是很高的。

    使用遺傳算法求解一個具體的問題時,一般要經過以下幾個步驟:編碼(常用的有0-1編碼)、種羣初始化、選擇操作、交叉操作、變異操作等。其中前兩個操作會隨着具體的問題不同而有所不同,而後面的三個操作基本上是相同的。而後面的三個操作是遺傳算法的核心操作,主要是爲了產生新一代種羣。下面就針對遺傳算法的基本操作作了一個簡單的封裝,具體的代碼如下:

.h頭文件:

.cpp文件:

    這個類封裝了遺傳算法的基本操作,使用這個類的對象可以進行種羣初始化(給出了染色體長度),選擇操作,交叉操作,變異操作以及查找種羣中最佳和最差個體等。由於,計算個體的適應度值會隨着具體問題的不同而有所不同,在本類中沒有給出計算適應度值的成員函數。下面是一個運用此操作類進行遺傳算法計算的工程例子,運行效果如下圖所示:(這個工程在我的資源中可以下載)

     主對話框 參數設定對話框

以下是這個工程的具體代碼:

主對話框代碼:

重設遺傳算法參數的對話框:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章