㈠ 請問遺傳演算法中,什麼是標準的交叉運算元和變異運算元
標準的交叉運算元和變異運算元應該指的是最基本最簡單的交叉和變異,比如交叉有單點交叉和兩點交叉,變異一般也是單點變異
㈡ 遺傳演算法的收斂性問題
是運算元有問題,交叉的方法都是比較簡單的,但對於某些情況可能並不好用,也就是說演算法本身無法體現出優勝劣汰的規則,可能因此導致無法收斂。
收斂數列令為一個數列,且A為一個固定的實數,如果對於任意給出的b>0,存在一個正整數N,使得對於任意n>N,有|an-A|<b,則數列存在極限A,數列被稱為收斂。非收斂的數列被稱作「發散」(divergence)數列。
可見收斂不是指數值越來越小,而是指與極限值的距離(即差的絕對值)越來越小,只要你的目標函數是壓縮映射,那麼使用遺傳演算法就一定可以計算出全局收斂的近似值。
(2)遺傳演算法兩點交叉擴展閱讀:
由於遺傳演算法不能直接處理問題空間的參數,因此必須通過編碼將要求解的問題表示成遺傳空間的染色體或者個體。這一轉換操作就叫做編碼,也可以稱作(問題的)表示(representation)。
遺傳演算法在搜索進化過程中一般不需要其他外部信息,僅用評估函數來評估個體或解的優劣,並作為以後遺傳操作的依據。由於遺傳演算法中,適應度函數要比較排序並在此基礎上計算選擇概率,所以適應度函數的值要取正值。由此可見,在不少場合,將目標函數映射成求最大值形式且函數值非負的適應度函數是必要的。
㈢ 遺傳演算法減少代理的兩點交叉什麼意思
把減去代理的兩個交叉檢是只減去兩個子彈,自帶交叉,
㈣ 遺傳演算法中,怎麼確定變異點和交叉點的位置
由於遺傳演算法是隨機演算法,所以變異點和交叉點可以隨機產生,當然也可以加入一些判斷經驗。
㈤ 遺傳演算法交叉操作
for i = 1 : 2 : Size-1%個體兩兩交叉,不重復
temp = rand;%隨機交叉概率值
if Pc > temp%%若隨機交叉概率值滿足交叉概率,則進行交叉
alfa = rand;%交叉運算元
TempE(i,:) = alfa*E(i+1,:) + (1-alfa)*E(i,:);%無條件交叉
TempE(i+1,:) = alfa*E(i,:) + (1-alfa)*E(i+1,:);%無條件交叉
end
end
從程序可以看出,當兩個個體滿足交叉概率後每個基因即進行無條件交叉,應屬於多點交叉的范疇。
㈥ 基於遺傳演算法,解決TSP問題中雙點交叉C語言程序怎麼編寫
解決TSP問題的交叉方法不像其他的那麼簡單,跟它的編碼方法有關系。如果是順序編碼,那麼交叉時要考慮到子代個體是否是合法的。一般用順序交叉方法的比較多。參考資料中為單點交叉方法的代碼,兩點交叉與之類似,不過是多了一點交叉點而已。
㈦ 遺傳演算法交叉點怎麼定
比較簡單的一個辦法是隨機生成一個整數(范圍在1到編碼長度之間),之後交換這個隨機數對應的染色體和它後面的部分。
如何你的染色體編碼是個矩陣的話,可以同時交叉 隨機數 對應列和之後的所有部分。
(其實交叉的規則完全可以自己定,我說這個是比較常見操作比較簡單的。)
㈧ 遺傳演算法的基本原理是什麼
遺傳演算法的基本原理和方法
一、編碼
編碼:把一個問題的可行解從其解空間轉換到遺傳演算法的搜索空間的轉換方法。
解碼(解碼):遺傳演算法解空間向問題空間的轉換。
二進制編碼的缺點是漢明懸崖(Hamming Cliff),就是在某些相鄰整數的二進制代碼之間有很大的漢明距離,使得遺傳演算法的交叉和突變都難以跨越。
格雷碼(Gray Code):在相鄰整數之間漢明距離都為1。
(較好)有意義的積木塊編碼規則:所定編碼應當易於生成與所求問題相關的短距和低階的積木塊;最小字元集編碼規則,所定編碼應採用最小字元集以使問題得到自然的表示或描述。
二進制編碼比十進制編碼搜索能力強,但不能保持群體穩定性。
動態參數編碼(Dynamic Paremeter Coding):為了得到很高的精度,讓遺傳演算法從很粗糙的精度開始收斂,當遺傳演算法找到一個區域後,就將搜索現在在這個區域,重新編碼,重新啟動,重復這一過程,直到達到要求的精度為止。
編碼方法:
1、 二進制編碼方法
缺點:存在著連續函數離散化時的映射誤差。不能直接反映出所求問題的本身結構特徵,不便於開發針對問題的專門知識的遺傳運算運算元,很難滿足積木塊編碼原則
2、 格雷碼編碼:連續的兩個整數所對應的編碼之間僅僅只有一個碼位是不同的,其餘碼位都相同。
3、 浮點數編碼方法:個體的每個基因值用某一范圍內的某個浮點數來表示,個體的編碼長度等於其決策變數的位數。
4、 各參數級聯編碼:對含有多個變數的個體進行編碼的方法。通常將各個參數分別以某種編碼方法進行編碼,然後再將他們的編碼按照一定順序連接在一起就組成了表示全部參數的個體編碼。
5、 多參數交叉編碼:將各個參數中起主要作用的碼位集中在一起,這樣它們就不易於被遺傳運算元破壞掉。
評估編碼的三個規范:完備性、健全性、非冗餘性。
二、選擇
遺傳演算法中的選擇操作就是用來確定如何從父代群體中按某種方法選取那些個體遺傳到下一代群體中的一種遺傳運算,用來確定重組或交叉個體,以及被選個體將產生多少個子代個體。
常用的選擇運算元:
1、 輪盤賭選擇(Roulette Wheel Selection):是一種回放式隨機采樣方法。每個個體進入下一代的概率等於它的適應度值與整個種群中個體適應度值和的比例。選擇誤差較大。
2、 隨機競爭選擇(Stochastic Tournament):每次按輪盤賭選擇一對個體,然後讓這兩個個體進行競爭,適應度高的被選中,如此反復,直到選滿為止。
3、 最佳保留選擇:首先按輪盤賭選擇方法執行遺傳演算法的選擇操作,然後將當前群體中適應度最高的個體結構完整地復制到下一代群體中。
4、 無回放隨機選擇(也叫期望值選擇Excepted Value Selection):根據每個個體在下一代群體中的生存期望來進行隨機選擇運算。方法如下
(1) 計算群體中每個個體在下一代群體中的生存期望數目N。
(2) 若某一個體被選中參與交叉運算,則它在下一代中的生存期望數目減去0.5,若某一個體未被選中參與交叉運算,則它在下一代中的生存期望數目減去1.0。
(3) 隨著選擇過程的進行,若某一個體的生存期望數目小於0時,則該個體就不再有機會被選中。
5、 確定式選擇:按照一種確定的方式來進行選擇操作。具體操作過程如下:
(1) 計算群體中各個個體在下一代群體中的期望生存數目N。
(2) 用N的整數部分確定各個對應個體在下一代群體中的生存數目。
(3) 用N的小數部分對個體進行降序排列,順序取前M個個體加入到下一代群體中。至此可完全確定出下一代群體中M個個體。
6、無回放余數隨機選擇:可確保適應度比平均適應度大的一些個體能夠被遺傳到下一代群體中,因而選擇誤差比較小。
7、均勻排序:對群體中的所有個體按期適應度大小進行排序,基於這個排序來分配各個個體被選中的概率。
8、最佳保存策略:當前群體中適應度最高的個體不參與交叉運算和變異運算,而是用它來代替掉本代群體中經過交叉、變異等操作後所產生的適應度最低的個體。
9、隨機聯賽選擇:每次選取幾個個體中適應度最高的一個個體遺傳到下一代群體中。
10、排擠選擇:新生成的子代將代替或排擠相似的舊父代個體,提高群體的多樣性。
三、交叉
遺傳演算法的交叉操作,是指對兩個相互配對的染色體按某種方式相互交換其部分基因,從而形成兩個新的個體。
適用於二進制編碼個體或浮點數編碼個體的交叉運算元:
1、單點交叉(One-pointCrossover):指在個體編碼串中只隨機設置一個交叉點,然後再該點相互交換兩個配對個體的部分染色體。
2、兩點交叉與多點交叉:
(1) 兩點交叉(Two-pointCrossover):在個體編碼串中隨機設置了兩個交叉點,然後再進行部分基因交換。
(2) 多點交叉(Multi-pointCrossover)
3、均勻交叉(也稱一致交叉,UniformCrossover):兩個配對個體的每個基因座上的基因都以相同的交叉概率進行交換,從而形成兩個新個體。
4、算術交叉(ArithmeticCrossover):由兩個個體的線性組合而產生出兩個新的個體。該操作對象一般是由浮點數編碼表示的個體。
四、變異
遺傳演算法中的變異運算,是指將個體染色體編碼串中的某些基因座上的基因值用該基因座上的其它等位基因來替換,從而形成以給新的個體。
以下變異運算元適用於二進制編碼和浮點數編碼的個體:
1、基本位變異(SimpleMutation):對個體編碼串中以變異概率、隨機指定的某一位或某幾位僅因座上的值做變異運算。
2、均勻變異(UniformMutation):分別用符合某一范圍內均勻分布的隨機數,以某一較小的概率來替換個體編碼串中各個基因座上的原有基因值。(特別適用於在演算法的初級運行階段)
3、邊界變異(BoundaryMutation):隨機的取基因座上的兩個對應邊界基因值之一去替代原有基因值。特別適用於最優點位於或接近於可行解的邊界時的一類問題。
4、非均勻變異:對原有的基因值做一隨機擾動,以擾動後的結果作為變異後的新基因值。對每個基因座都以相同的概率進行變異運算之後,相當於整個解向量在解空間中作了一次輕微的變動。
5、高斯近似變異:進行變異操作時用符號均值為P的平均值,方差為P2的正態分布的一個隨機數來替換原有的基因值。
㈨ 遺傳演算法的選擇和交叉操作
不是隨機選擇的,是有規律的選,一般是等間隔選擇,例如兩個相鄰的個體。
如圖紅色是一種選擇方式:1&2, 3&4, 5&6, 7&8, 9&10
藍色也是一種選擇方式:1&6, 2&7, 3&8, 4&9, 5&10
當然,也要盡量避免相同個體交叉。
是否可以解決您的問題?