1.不再採用單調的二進位制位來對解空間中的可行解進行編碼,取而代之的是採用量子位進行編碼。
2.不再單純的僅僅進行交叉,變異操作,而是加入了透過量子旋轉門對染色體進行更新操作。
3.每一個量子位均是一個不確定的狀態,屬於0和1的疊加態,也因此解碼操作會有所不同。
下面具體介紹各個關鍵步驟。
量子位編碼在量子遺傳演算法中,染色體上的基因不是確定值,而是採用機率幅的方式表示,也因此每個量子位可能代表1,也可能代表0,也可能代表0和1的疊加態,所以量子位的編碼方式使同等長度的編碼較經典遺傳演算法能表示更多的資訊,也因此可以在較小的種群規模下工作的很好。一個量子位表示為
其中α,β均是複數,分別表示狀態0|>和1|>的機率幅,且滿足:
此時一個量子態就可以表示為:
n個量子位的染色體形式如下:
其可同時表示2^n個狀態。且滿足:
其中Ck為狀態Sk的機率幅,且滿足歸一化條件:
例如有一個由3個量子位編碼的染色體:
其可以轉換為如下形式:
從而得到這八種狀態的機率分別為:
從這裡可以看出,一個染色體本身同時代表著多種狀態的疊加態,這也解釋了為什麼量子遺傳演算法需要的種群數量較小。另外也可以看出隨著機率幅的範數平方趨向0或者1,染色體會趨於單一的狀態,這也保證了量子遺傳演算法具有較好的收斂性。
量子旋轉門在量子遺傳演算法中,由於量子編碼作用下的染色體不再是單一的純態,遺傳操作不能繼續僅僅採用傳統的選擇,交叉,變異這些操作,而採用量子旋轉門作用於量子染色體的基態,使其相互干涉,相位發生變化,從而改變機率幅的分佈,也因此,量子旋轉門的設計是整個演算法框架裡的重中之重。其形式如下:
量子位的更新,透過量子旋轉門實現,過程如下:
其中[αi,βi]'是第i個量子位,θi為旋轉角。θi的大小與符號在量子位的更新過程中有著舉足輕重的地位,具體闡述如下:
如圖可以看出θi太小,將導致收斂太慢,而太大則會導致早熟,而θi的正負情況將決定量子門的旋轉方向,如θi為正,當量子位元位於第一三象限時,將提高其為1的機率,類似的如果量子位元位於第二四象限,將提高其為0的機率。
量子交叉和量子變異量子交叉操作交叉操作在傳統遺傳演算法最優解的搜尋更新過程中有著核心作用,同樣的在量子遺傳演算法中具有重要地位,交叉操作用於產生新個體,在解空間中進行有效搜尋,同時降低了對有效模式的破壞機率,與傳統遺傳演算法不同的是,量子交叉操作是作用於量子位的,量子交叉操作通常有以下幾種:
1.單點交叉 2.多點交叉 3.均勻交叉 4.算術交叉
下面只介紹一種多點交叉,所謂多點交叉是指:
相互配對的兩個染色體,在編碼串中隨機選取兩個交叉點,然後兩者互換交叉點之間的部分,從而產生兩個新個體。
量子變異操作當交叉操作的後代的適應值不再變化且沒有達到最優時,這就意味著演算法早熟收斂,其本質上是因為有效基因的缺損,而變異操作增加了物種的多樣性,一定程度上克服了這種問題,可以這麼說在量子遺傳演算法中,量子旋轉門一定程度上避免了演算法的早熟收斂,而變異操作則防止了演算法的早熟收斂。具體來說,量子變異操作同樣是基於量子位的,一般可採用均勻變異和高斯變異,和傳統的變異操作並無太大不同,不再贅述。
災變操作量子遺傳演算法中的災變操作常用於避免演算法陷入區域性最優值(也可以在經典遺傳演算法中加入災變操作達到此目的),其核心思想為:
若演算法連續若干代,均保持最優值不變,則僅保留種群中的最優個體,其餘個體將被拋棄,重新生成新個體與之前的最優個體一塊組成新的種群。
可以說災變操作進一步提高了物種多樣性,加快了搜尋效率,避免陷入區域性最優值。
量子遺傳演算法的具體演算法流程基於以上的部分,現給出量子遺傳演算法的演算法流程圖:
具體流程描述:
(1) 隨機產生規模為n的種群
其中t代表代數,並且有:
顯然m表示量子編碼長度。
(2) 根據P(t)的機率幅取值情況,構造出R(t),其形式如下:
其中每個aj均是一個長度為m的二進位制串,二進位制串的構造比較簡單,可以採用如下策略:對於每個染色體的每個量子位,產生一個[0,1]的隨機數γ,若對應位的αi的範數平方值大於γ,則該位取1,否則取0。
(3) 評價R(t)中的各個個體的適應值(隱含著二進位制解碼操作),判斷是否滿足停止條件,若滿足則終止演算法流程,否則繼續迭代。
(4) 判斷種群是否需要災變,如果需要保優後跳轉至流程(7),否則流程繼續。
(5) 使用量子旋轉門U(t)更新P(t),對於每個量子染色體的每個量子位執行如下操作:
(6) 進行量子交叉和變異操作更新P(t)。
(7) 令t=t+1,跳轉至步驟(2)。
重點:量子旋轉門的設計量子旋轉門的設計,主要在於對θi取值措施的設計,一般的我們設如下關係:
其中Δθ為大小,s(α,β)表示其正負情況,很顯然,正負情況與當前量子位的機率幅的取值有關,而Δθ一般取0.01π-0.05π之間的數值,設ri和bi分別表示當前個體和當前最優個體的第i個量子位的二進位制取值,則此時對應的θi可透過下表計算得到:
以上便是對量子遺傳演算法的詳細介紹,後續會更新具體實現和應用。