當前位置:首頁 » 操作系統 » 遺傳演算法的交叉運算元

遺傳演算法的交叉運算元

發布時間: 2022-05-29 17:53:58

❶ matlab遺傳演算法中的交叉運算元函數應該怎麼編寫

function [xv,fv]=myGA(fitness,a,b,NP,NG,Pc,Pm,eps)
L = ceil(log2((b-a)/eps+1)); %根據離散精度,確定二進制編碼需要的碼長
x = zeros(NP,L);
for i=1:NP

x(i,:) = Initial(L); %種群初始化

fx(i) = fitness(Dec(a,b,x(i,:),L)); %個體適應值

end
for k=1:NG

sumfx = sum(fx); %所有個體適應值之和

Px = fx/sumfx; %所有個體適應值的平均值
PPx = 0;

PPx(1) = Px(1);

for i=2:NP %用於輪盤賭策略的概率累加

PPx(i) = PPx(i-1) + Px(i);

end
for i=1:NP

sita = rand();

for n=1:NP

if sita <= PPx(n)

SelFather = n; %根據輪盤賭策略確定的父親

break;

end

end

Selmother = floor(rand()*(NP-1))+1; %隨機選擇母親

posCut = floor(rand()*(L-2)) + 1; %隨機確定交叉點

r1 = rand();

if r1<=Pc %交叉

nx(i,1:posCut) = x(SelFather,1:posCut);

nx(i,(posCut+1):L) = x(Selmother,(posCut+1):L);

r2 = rand();

if r2 <= Pm %變異

posMut = round(rand()*(L-1) + 1);

nx(i,posMut) = ~nx(i,posMut);

end

else

nx(i,:) = x(SelFather,:);

end

end
x = nx;

for i=1:NP

fx(i) = fitness(Dec(a,b,x(i,:),L)); %子代適應值

end

end
fv = -inf;
for i=1:NP

fitx = fitness(Dec(a,b,x(i,:),L));

if fitx > fv

fv = fitx; %取個體中的最好值作為最終結果

xv = Dec(a,b,x(i,:),L);

end

end
function result = Initial(length) %初始化函數
for i=1:length
r = rand();
result(i) = round(r);
end
function y = Dec(a,b,x,L) %二進制編碼轉換為十進制編碼
base = 2.^((L-1):-1:0);
y = dot(base,x);
y = a + y*(b-a)/(2^L-1);

❷ 遺傳演算法具體應用

1、函數優化

函數優化是遺傳演算法的經典應用領域,也是遺傳演算法進行性能評價的常用算例,許多人構造出了各種各樣復雜形式的測試函數:連續函數和離散函數、凸函數和凹函數、低維函數和高維函數、單峰函數和多峰函數等。

2、組合優化

隨著問題規模的增大,組合優化問題的搜索空間也急劇增大,有時在目前的計算上用枚舉法很難求出最優解。對這類復雜的問題,人們已經意識到應把主要精力放在尋求滿意解上,而遺傳演算法是尋求這種滿意解的最佳工具之一。

此外,GA也在生產調度問題、自動控制、機器人學、圖象處理、人工生命、遺傳編碼和機器學習等方面獲得了廣泛的運用。

3、車間調度

車間調度問題是一個典型的NP-Hard問題,遺傳演算法作為一種經典的智能演算法廣泛用於車間調度中,很多學者都致力於用遺傳演算法解決車間調度問題,現今也取得了十分豐碩的成果。

從最初的傳統車間調度(JSP)問題到柔性作業車間調度問題(FJSP),遺傳演算法都有優異的表現,在很多算例中都得到了最優或近優解。


(2)遺傳演算法的交叉運算元擴展閱讀:

遺傳演算法的缺點

1、編碼不規范及編碼存在表示的不準確性。

2、單一的遺傳演算法編碼不能全面地將優化問題的約束表示出來。考慮約束的一個方法就是對不可行解採用閾值,這樣,計算的時間必然增加。

3、遺傳演算法通常的效率比其他傳統的優化方法低。

4、遺傳演算法容易過早收斂。

5、遺傳演算法對演算法的精度、可行度、計算復雜性等方面,還沒有有效的定量分析方法。

❸ 遺傳演算法的核心是什麼!

遺傳操作的交叉運算元。

在自然界生物進化過程中起核心作用的是生物遺傳基因的重組(加上變異)。同樣,遺傳演算法中起核心作用的是遺傳操作的交叉運算元。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。通過交叉,遺傳演算法的搜索能力得以飛躍提高。

交叉運算元根據交叉率將種群中的兩個個體隨機地交換某些基因,能夠產生新的基因組合,期望將有益基因組合在一起。

(3)遺傳演算法的交叉運算元擴展閱讀

評估編碼策略常採用以下3個規范:

a)完備性(completeness):問題空間中的所有點(候選解)都能作為GA空間中的點(染色體)表現。

b)健全性(soundness): GA空間中的染色體能對應所有問題空間中的候選解。

c)非冗餘性(nonrendancy):染色體和候選解一一對應。

目前的幾種常用的編碼技術有二進制編碼,浮點數編碼,字元編碼,變成編碼等。

而二進制編碼是目前遺傳演算法中最常用的編碼方法。即是由二進制字元集{0,1}產生通常的0,1字元串來表示問題空間的候選解。

❹ 遺傳演算法中為什麼要用交叉運算元

因為交叉運算元可以有助於將優良個體的染色體片段遺傳給後代,同時交叉運算元一般起全局搜索的作用,可以開采未知的空間。

❺ 為什麼交叉運算元決定遺傳演算法的全局搜索能力,變異運算元決定遺傳演算法的局部搜索能力

因為一般來說變異運算元只是按概率對染色體的某一基因位(自變數的某一維)進行一個微擾動或是取反,而交叉運算元是對整個染色體操作的,交叉運算元的類型有很多,即使是最簡單的單點交叉也是要選擇一個點之後交叉兩邊的部分。所以具有全局搜索能力。

❻ 遺傳演算法中,什麼是標準的交叉運算元和變異運算元

標準的交叉運算元和變異運算元應該指的是最基本最簡單的交叉和變異,比如交叉有單點交叉和兩點交叉,變異一般也是單點變異.

❼ 遺傳演算法中的交叉運算元具體怎麼實現~跪求文字描述以及演算法描述~。詳細點

交叉運算元分好幾種,有單點交叉、兩點交叉、多點交叉、融合交叉、均勻交叉等,最簡單的是單點交叉,假設個體的長度為N,那麼就隨機產生一個(1,N)范圍內的整數r,然後將要交叉的兩個母代個體從r這個地方截為兩段,交換母代個體的後半段,就產生了新子代個體。這就是簡單的單點交叉。詳細可以看《遺傳演算法——理論、應用與軟體實現》這本書中對交叉運算元的介紹。參考資料是一個簡單遺傳演算法的C代碼及介紹。

❽ 交叉運算元是誰提出的

20世紀90年代後,遺傳演算法的發展迎來了它的興盛時期,理論研究和應用研究都成了極其熱門的課題。尤其是遺傳演算法的應用研究顯得格外活躍,不但它的應用領域擴大,而且利用遺傳演算法進行優化和規則學習的能力也顯著提高,同時產業應用方面的研究也在摸索之中。此外一些新的理論和方法在應用研究中亦得到了迅速的發展,這些無疑均給遺傳演算法增添了新的活力。遺傳演算法的應用研究在不斷地發展,已從最初的組合優化求解發展到了很多更新、更工程化的應用領域。

由於遺傳演算法應用領域在不斷地擴展,遺傳演算法的研究引發了幾個不得不令人注目的新動向:一是基於遺傳演算法的機器學習,這一新的研究課題把遺傳演算法從歷來離散的搜索空間的優化搜索演算法擴展到具有獨特的規則生成功能的嶄新的機器學習演算法。這一新的學習機制對於解決人工智慧中知識獲取和知識優化精煉的瓶頸難題帶來了希望。二是遺傳演算法正在和神經網路、模糊推理及混沌理論等智能計算方法不斷地滲透和結合。這對開拓21世紀中新的智能計算技術將具有重要的意義。三是並行處理的遺傳演算法的研究非常活躍。這一研究既有利於促進遺傳演算法本身的發展,又有利於促進新一代智能計算機體系結構的研究。四是遺傳演算法正和一個人工生命的嶄新研究領域不斷地滲透。五是它與進化規劃以及進化策略等進化計算理論在日益地結合。EP和ES幾乎是和遺傳演算法幾乎是同時發展起來的,同遺傳演算法一樣,它們也是模擬自然界生物進化機制的智能計算方法,但這三者也有各自的特點。目前,關於EP、ES和遺傳演算法三者間的對比研究和彼此間結合的研究和探討已成了熱點。

在20世紀90年代初,D.Whitey提出了基於領域交叉的交叉運算元,它是特別針對用序號表示基因的個體的交叉,並將其應用到了TSP問題中,通過實驗對其進行了驗證。D.H.Ackley等提出了隨即迭代遺傳爬山法採用了一種復雜的概率選舉機制,此機制中由m個「投票者」來共同決定新個體的值(m表示群體的大小)。實驗的最終結果表明,與單點交叉、均勻交叉的神經遺傳演算法相比,在SIGH所測試的六個函數中,其中有四個表現出更好的性能。所以從總體上看,比現存的其他演算法相比,在求解速度上SIGH具有更強的競爭力。

後來又有人將遺傳演算法與單一方法結合了起來,形成了單一操作的多親交叉運算元。該運算元在根據兩個母體以及一個額外的個體產生新個體,事實上他的交叉結果與對三個個體用選舉交叉產生的結果一致。同時,人們還將三者交叉運算元和點交叉、均勻交叉做了對比。對比結果表明,前者比後兩個表現出了更好的性能。

國內也有不少的專家和學者對遺傳演算法的交叉運算元進行改進。2002年,戴曉明等應用多種群遺傳並行進化的思想,對不同種群基於不同的遺傳策略,如變異概率,不同的變異運算元等來搜索變數空間,同時還利用種群間遷移運算元來進行遺傳信息交流,以解決經典遺傳演算法的收斂到局部最優值問題。在2004年又有專家針對簡單遺傳演算法在較大規模組合優化問題上搜索效率不高的現象,提出了一種用基因塊編碼的並行遺傳演算法。該方法所依據的基本框架是粗粒度並行遺傳演算法,在染色體群體中識別出可能的基因塊,然後用基因塊作為新的基因單位對染色體重新編碼,產生長度較短的染色體,在用重新編碼的染色體群體作為下一輪以相同方式演化的初始群體。而到了2005年,針對用並行遺傳演算法求解TSP的這一問題,又有人指出用彈性策略來維持群體的多樣性的方法,使得演算法突破了局部收斂,向全局最優解的方向發展。

❾ 請問遺傳演算法中,什麼是標準的交叉運算元和變異運算元

交叉和變異都是有概率的,在一個種群中按照交叉的概率隨機選中的個體,那就是交叉運算元唄。變異同理~不知道理解對不對哈~歡迎追問~

❿ 遺傳演算法的運算過程

遺傳操作是模擬生物基因遺傳的做法。在遺傳演算法中,通過編碼組成初始群體後,遺傳操作的任務就是對群體的個體按照它們對環境適應度(適應度評估)施加一定的操作,從而實現優勝劣汰的進化過程。從優化搜索的角度而言,遺傳操作可使問題的解,一代又一代地優化,並逼近最優解。
遺傳操作包括以下三個基本遺傳運算元(genetic operator):選擇(selection);交叉(crossover);變異(mutation)。這三個遺傳運算元有如下特點:
個體遺傳運算元的操作都是在隨機擾動情況下進行的。因此,群體中個體向最優解遷移的規則是隨機的。需要強調的是,這種隨機化操作和傳統的隨機搜索方法是有區別的。遺傳操作進行的高效有向的搜索而不是如一般隨機搜索方法所進行的無向搜索。
遺傳操作的效果和上述三個遺傳運算元所取的操作概率,編碼方法,群體大小,初始群體以及適應度函數的設定密切相關。 從群體中選擇優勝的個體,淘汰劣質個體的操作叫選擇。選擇運算元有時又稱為再生運算元(reproction operator)。選擇的目的是把優化的個體(或解)直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。選擇操作是建立在群體中個體的適應度評估基礎上的,目前常用的選擇運算元有以下幾種:適應度比例方法、隨機遍歷抽樣法、局部選擇法。
其中輪盤賭選擇法 (roulette wheel selection)是最簡單也是最常用的選擇方法。在該方法中,各個個體的選擇概率和其適應度值成比例。設群體大小為n,其中個體i的適應度為,則i 被選擇的概率,為遺傳演算法
顯然,概率反映了個體i的適應度在整個群體的個體適應度總和中所佔的比例。個體適應度越大。其被選擇的概率就越高、反之亦然。計算出群體中各個個體的選擇概率後,為了選擇交配個體,需要進行多輪選擇。每一輪產生一個[0,1]之間均勻隨機數,將該隨機數作為選擇指針來確定被選個體。個體被選後,可隨機地組成交配對,以供後面的交叉操作。 在自然界生物進化過程中起核心作用的是生物遺傳基因的重組(加上變異)。同樣,遺傳演算法中起核心作用的是遺傳操作的交叉運算元。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。通過交叉,遺傳演算法的搜索能力得以飛躍提高。
交叉運算元根據交叉率將種群中的兩個個體隨機地交換某些基因,能夠產生新的基因組合,期望將有益基因組合在一起。根據編碼表示方法的不同,可以有以下的演算法:
a)實值重組(real valued recombination)
1)離散重組(discrete recombination)
2)中間重組(intermediate recombination)
3)線性重組(linear recombination)
4)擴展線性重組(extended linear recombination)。
b)二進制交叉(binary valued crossover)
1)單點交叉(single-point crossover)
2)多點交叉(multiple-point crossover)
3)均勻交叉(uniform crossover)
4)洗牌交叉(shuffle crossover)
5)縮小代理交叉(crossover with reced surrogate)。
最常用的交叉運算元為單點交叉(one-point crossover)。具體操作是:在個體串中隨機設定一個交叉點,實行交叉時,該點前或後的兩個個體的部分結構進行互換,並生成兩個新個體。下面給出了單點交叉的一個例子:
個體A:1 0 0 1 ↑1 1 1 → 1 0 0 1 0 0 0 新個體
個體B:0 0 1 1 ↑0 0 0 → 0 0 1 1 1 1 1 新個體 變異運算元的基本內容是對群體中的個體串的某些基因座上的基因值作變動。依據個體編碼表示方法的不同,可以有以下的演算法:
a)實值變異
b)二進制變異。
一般來說,變異運算元操作的基本步驟如下:
a)對群中所有個體以事先設定的變異概率判斷是否進行變異
b)對進行變異的個體隨機選擇變異位進行變異。
遺傳演算法引入變異的目的有兩個:一是使遺傳演算法具有局部的隨機搜索能力。當遺傳演算法通過交叉運算元已接近最優解鄰域時,利用變異運算元的這種局部隨機搜索能力可以加速向最優解收斂。顯然,此種情況下的變異概率應取較小值,否則接近最優解的積木塊會因變異而遭到破壞。二是使遺傳演算法可維持群體多樣性,以防止出現未成熟收斂現象。此時收斂概率應取較大值。
遺傳演算法中,交叉運算元因其全局搜索能力而作為主要運算元,變異運算元因其局部搜索能力而作為輔助運算元。遺傳演算法通過交叉和變異這對相互配合又相互競爭的操作而使其具備兼顧全局和局部的均衡搜索能力。所謂相互配合.是指當群體在進化中陷於搜索空間中某個超平面而僅靠交叉不能擺脫時,通過變異操作可有助於這種擺脫。所謂相互競爭,是指當通過交叉已形成所期望的積木塊時,變異操作有可能破壞這些積木塊。如何有效地配合使用交叉和變異操作,是目前遺傳演算法的一個重要研究內容。
基本變異運算元是指對群體中的個體碼串隨機挑選一個或多個基因座並對這些基因座的基因值做變動(以變異概率P.做變動),(0,1)二值碼串中的基本變異操作如下:
基因位下方標有*號的基因發生變異。
變異率的選取一般受種群大小、染色體長度等因素的影響,通常選取很小的值,一般取0.001-0.1。 當最優個體的適應度達到給定的閾值,或者最優個體的適應度和群體適應度不再上升時,或者迭代次數達到預設的代數時,演算法終止。預設的代數一般設置為100-500代。

熱點內容
網易夢之國伺服器ip 發布:2024-05-05 14:06:11 瀏覽:33
如何設置一個通俗易懂的密碼 發布:2024-05-05 13:52:21 瀏覽:621
新網易我的世界伺服器 發布:2024-05-05 13:42:44 瀏覽:661
演算法題寫錯了 發布:2024-05-05 13:34:57 瀏覽:804
sql按小時分組 發布:2024-05-05 13:26:25 瀏覽:94
張藝謀我們一家訪問人 發布:2024-05-05 12:38:05 瀏覽:111
美版安卓系統怎麼安裝 發布:2024-05-05 12:37:18 瀏覽:920
qq郵箱緩存地址 發布:2024-05-05 12:37:16 瀏覽:986
電位演算法 發布:2024-05-05 12:36:01 瀏覽:727
我的世界清風斗羅大陸伺服器地址 發布:2024-05-05 12:35:50 瀏覽:453