2014-04-22 2 views
0

염색체가 정수 목록 인 문제를 해결하기 위해 유전 알고리즘을 구현하고 있습니다 (N은 잘 맞춰야합니다. 해결책은 단지 적자가 아닌 결과).GA Jgap : 순서가 계산되지 않는 중복 (doublettes) 염색체를 피하십시오

(... I 중복 대립 유전자와 염색체에 피트니스 = 0을 설정하여했고, 괜찮아요) 각 정수 염색체에 한 번만 나타나야합니다

내 문제 : 내 문제에

의 숫자가 염색체에 나타나는 순서는 포함되지 않습니다 (1 2 3은 2 1 3과 같습니다).

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

그러나 :

그래서 실행의 끝에서, 나는 가능한 해결책

내가 여기에보고 솔루션 (using JGAp (genetic algorithm library) and the duplicated chromosomes) 이런 식으로 중복 염색체를 제거하기 위해 사용

의 목록을했습니다 그것은 예를 들어, 삭제하지 않습니다 단지 동일한 염색체를 제거합니다 : 내 문제에

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

그 염색체는 동일한 솔루션을 나타내는

그래서 나는 같은 적응력과 같은 의미를 지니지 만 다른 순서로 유전자를 가진 염색체 목록으로 끝납니다.

표현 순서에 관계없이 동일한 솔루션을 나타내는 염색체를 제거하려면 어떻게해야합니까?

감사합니다. 좋은 하루 보내십시오.

답변

0

염색체를 저장하기 전에 정렬 만하면됩니다. 동일한 정수 집합의 다른 순열이 동일한 순서로 정렬되므로 이미 사용중인 코드를 사용하여 중복을 제거 할 수 있습니다.

+0

Pragy, 고맙습니다. JGAP 염색체를 확장하지 않고 가능한 경우 JGAP에서이를 수행하는 방법을 궁금해합니다. 그렇지 않은 경우 올바른 방법으로 유전자를 확장하는 동안 어디에서 확장해야합니까? . 그러나 귀하의 대답은 괜찮습니다, 고마워요 .. 더 나은 아무것도 나오지 않으면 내가 올바른 것으로 표시합니다. – MaxS

관련 문제