2014-04-22 17 views
0

我正在實施與JGAP遺傳算法來解決染色體是一個整數列表的問題(我想保持N擬合結果中的解決方案,而不僅僅是最適合的解決方案)。GA Jgap:避免重複(doublettes)染色體的訂單不計數

每個整數必須在染色體只出現一次(我做到了,通過設置適合度= 0與重複等位基因染色體,它的確定...)

我的問題:

在我的問題,數量出現在染色體中的次數不計數(1 2 3與2 1 3相同)。

所以在執行結束時,我可能的解決方案

我用(using JGAp (genetic algorithm library) and the duplicated chromosomes)刪除重複染色體這樣此報告的解決方案列表:

 conf.getNaturalSelectors(false).clear(); 
     BestChromosomesSelector bcs = new BestChromosomesSelector(conf, 0.8d); 
     bcs.setDoubletteChromosomesAllowed(false); 
     conf.addNaturalSelector(bcs, false); 

但去除剛剛相同染色體,它不會刪除例如:

A B C D 
A C B D 
B A C D 

那些染色體我的問題表示相同的溶液

因此,我最終得到一個具有相同適應度和相同含義但具有不同順序基因的染色體列表。

如何刪除代表相同解決方案的染色體,儘管其代表的順序是?

謝謝,祝你有美好的一天。

回答

0

只需在存儲染色體之前對它們進行排序即可。 由於同一組整數的不同排列可以排列成相同的序列,因此可以使用已用於刪除重複項的代碼。

+0

謝謝Pragy,我已經想到了這一點,我想知道如何在JGAP中做到這一點,如果有可能不擴展JGAP染色體,或者,如果不能擴展JGAP染色體, 。 但是你的回答是可以的,謝謝..如果沒有更好的東西出現,我會把它標記爲正確的。 – MaxS