1. 程式人生 > 實用技巧 >改進遺傳演算法之CHC演算法簡要介紹

改進遺傳演算法之CHC演算法簡要介紹

簡要介紹:

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

參考資料:[遺傳演算法:理論、應用與軟體實現].王小平.曹立明.