2014-09-28 2 views
-1

지금 GAUL 사용법을 배우고 있습니다. 나는 첫번째 예제 투쟁에서 시작했다 .c 나는 그것을 이해하고 성공적으로 실행할 수있다. 그러나 최상의 결과가 대상 문자열과 결코 같을 수없는 것처럼 보입니다.GAUL 라이브러리가 작동하지 않는 것 같습니다.

목표 문자열은 "우리가이 투쟁에 대해 생각할 때, 우리는 자연의 전쟁이 끊이지 않고, 두려움이 느끼지 않으며, 죽음이 일반적으로 신속하고, 활발한 건강하고 행복하게 살아남아 번식하십시오. "

유전자 알고리즘 50 번을 실행하고 최상의 결과는 %에^예일^코네티컷 %이 strsggln 승, # 우리가 우리 자신에게 nith 콘솔 수 있습니다 때

"그녀는 GBLL^eomef '그 & THK WIR 같은 것입니다 V gormxs, rhe'he_jshy,&apd the hapsy survivT NA #의 kqitiphy [+ 일에서] #od (N qure bl nfx kgciss\nt,)what no#bear is-[egt, wh_t deaxh is g_jerally promph, an의. "

이 정상인가, 아니면 내가 잘못 든 설치 여기에 감사합니다. 는 struggle.c의 튜토리얼에 대한 링크입니다 http://gaul.sourceforge.net/tutorial/simple.html

+0

더 많은 반복주기 – trailmax

+0

@trailmax 반복 횟수는 500 회입니다. 1000 회 시도했지만 여전히 개선되지 않았습니다. 이 예제가 단지 예시적인 것인지 잘 알고 싶습니다. 따라서 실제로 잘 수행되지 않습니다. – Knightq

답변

0

나는 GAUL에 익숙하지 않지만이 유형의 exa 엘리트주의가 일반적으로 큰 차이를 만듭니다. 이 기능을 켜면 좋은 부분 솔루션을 끊임없이 버리지 않으므로 훨씬 더 빠른 수렴을 볼 수 있습니다.

세대 수를 늘리는 대신에 작업 할 수있는 다양성을 갖도록 인구 크기를 늘릴 수 있습니다. 또한 돌연변이 비율을 변경해보십시오. 링크하는 페이지에 언급 된 0.2를 사용하는 경우 조금 높을 수 있습니다. 돌연변이가 너무 빈번하게 발생하면 알고리즘이 진행되는 과정을 약화시킵니다.

프로그램에서 대상 문자열을 찾으려면 짧은 문자열을 사용해보십시오. 문자열이 길수록 수렴하는 데 더 많은 세대가 걸립니다.

+0

감사합니다 댄, 정말 자세히 설명되어 있습니다. 나는 그 예가 그럴 수없는 정확한 목표를 제시해야한다고 생각했다. 또한 검색 공간을 줄이는 바이너리 유전자로 작업하는 경우 훨씬 빠르게 수렴 할 것입니다. 감사 – Knightq