簡要介紹:
CHC算法是Eshelman於1991年提出的一種改進的遺傳算法的縮稱,第一個C代表跨世代精英選擇(Cross generational elitist selection)策略, H代表異物種重組(Heterogeneous recom-bination),第二個C代表大變異(Cataclysmic mutation)。CHC算法與基本遺傳算法SGA不同點在於:SGA的遺傳操作比較單純,簡單地實現並行處理;而CHC算法犧牲這種單純性,換取遺傳操作的較好效果,並強調優良個體的保留。
1.選擇
通常,遺傳算法是依據個體的適應度復制個體完成選擇操作的,而在CHC算法中,上世代種群與通過新的交叉方法產生的個體群混合起來,從中按一定概率選擇較優的個體。這一策略稱為跨世代精英選擇。其明顯的特征表現在:
(1)健壯性。由於這一選擇策略,即使當交叉操作產生較劣個體偏多時,由於原種群大多數個體殘留,不會引起個體的評價值降低。
(2)遺傳多樣性。保持由於大個體群操作,可以更好地保持進化過程中的遺傳多樣性。
(3)排序方法克服了比例適應度計算的尺度問題。
2.交叉
CHC算法使用的重組操作是對均勻交叉的一種改進。均勻交叉對父個體位值的各位位置以相同的概率實行交叉操作,這里改進之處是:當兩個父個體位值相異的位數為m時,從中隨機選取m/2個位置,實行父個體位值的互換。顯然, 這樣的操作對模式具有很強的破壞性,因此,確定閥值,當個體間的海明距離( Hamming distance)低於該閥值時,不進行交叉操作。並且,與種群進化收斂的同時,逐漸地減小該閥值。
3.變異
CHC算法在進化前期不采取變異操作,當種群進化到一定的收斂時期,從優秀個體中選擇一部分個體進行初始化。初始化的方法是選擇一定比例的基因座,隨機地決定它們的位值。這個比例值稱為擴散率, 一般取 0.35。
CHC算法描述:N為種群大小,L為個體長, k為世代數, d為海明距離閥值,r為擴散率。
begin
k= 0;
d=L/4;
P(k)初始化;
P(k)的評價;
直到滿足終止條件終止
begin
k=k + 1;
復制P(k-1),與P(k)混合后產生混合種群C(k);
C(k)中實行交叉,形成新種群C'(k);
C'(k)的評價;
從C'(k)和P(k- 1)中實行選擇;
if P(k)= =P(k- 1)
d=d-1;
if d<0
begin
P(k)的-部分個體實行初始化;
d=r(1-r)L;
end
end
end
procedure交叉
begin
C(k)中個體分別配對;
begin
求配對個體間的海明距離;
if 海明距離> 2d
實行改進的均勻交叉;
else
將該配對個體從種群中消除;
end
end
end
procedure選擇
begin
C' (k)按評價值優劣順序排列;
while P(k)中的最差者<C'(k)中的最優者
兩者替換;
end
procedure部分個體初始化
begin
P(k- 1)中挑選較優秀的N個個體生成P(k);
對P(k)中N-1個個體
begin
隨機選擇rL位,其位值隨機地決定;
個體評價;
end
end
參考資料:[遺傳算法:理論、應用與軟件實現].王小平.曹立明.