1. 程式人生 > >並行多機排程遺傳演算法調參記錄---變異和淘汰哪個更重要?

並行多機排程遺傳演算法調參記錄---變異和淘汰哪個更重要?

遺傳演算法主要有3個引數,變異率,淘汰率和染色體數量。本文通過一個並行多機排程問題,通過交叉驗證的實驗的方法找到這幾個引數可能的最優值。


有3臺機器要完成30個工件,計算完成所有工件的最短時間。

首先優化變異率

將淘汰率固定在25%,染色體數量固定在50條,每組引數執行100次,取平均。



在淘汰率和染色體數量不變的情況下變異率很顯然在2-4之間有一個最優值,這裡取3.很有趣的是在變異率為0的時候只靠25%的淘汰平均時間為48,變異率為100%的時候相當於完全隨機,只靠淘汰平均時間為56.65.

然後將變異率固定在3%染色體數量固定在50,優化淘汰率。每組引數執行100次,取平均。



如果淘汰率提高,每次只把排在前幾名的染色體留下來交叉,是不是得到的平均時間更短,這個實驗部分的驗證了這個觀點。當淘汰率達到90的時候,對於50條染色體意味著只留下5條來進行交叉,但仍然可以達到42.42.但是很明顯的隨著淘汰率提高因為交叉樣本數量少了,成績變的不穩定。所以淘汰率取25%。

另一個很有趣的資料是當淘汰率是0的時候,也就意味著完全靠3%變異,可以得到平均之間45.53.相比0變異率完全靠25%的淘汰的48,也就表明對於遺傳演算法,變異率的重要性要大於淘汰。只變異不淘汰的效果要好於只淘汰不變異。特別是只淘汰不變異的情況下得到的最優時間是一個沒有變化的值(從1-100都是48,完全僵化),像是過擬合的效果。

第三步,將變異率固定在3%,將淘汰率固定在25%,調節染色體數。每組引數執行200次,取平均。

這組資料非常明確的是,染色體數量翻一倍,平均迭代需要時間要翻三倍,比如

從平均時間看來染色體數量超過60以後就差不多都是42左右,


從整體上看染色體數量60和200的值都比較優越,60 的迭代速度更快。但是200的平均時間最少。

這道題的最優時間可能是40小時。由染色體60和染色體200分別計算5次看看達到最優值40分別用多少時間


所以染色體60的平均迭代次數雖然是染色體200的7.46倍,但是因為迭代速度更快,染色體60達到40的平均時間只有染色體200達到40的平均時間的83%。

所以綜合起來看,

變異率可能至少有1個不大的最優值,

淘汰率在整個[0,0.95)的區間上可能有多個最優值,但是隨著淘汰率的增加效能變的不穩定

染色體數量增加一倍消耗時間變成原來的3倍左右,所以在保證效能和收斂速度的前提下染色體數量也不是越多越好。

所以選擇的最優引數是變異率3%,淘汰率25%,染色體數量60.

如果變異和淘汰只能選擇一樣,應該選擇變異,因為3%變異的效能是45.53,而25%淘汰的效能是48,變異比淘汰效能優5%。

一組40小時的解


具體資料










優化淘汰率資料










優化染色體數量資料