2011-03-18 2 views
2

유전자 알고리즘을 사용하는 Java로 응용 프로그램을 개발했습니다. 내 응용 프로그램 등의 매개 변수를 필요 :신경망 알고리즘을 사용하여 적은 시간에 실행하는 유전자 알고리즘을 사용하는 응용 프로그램에 적합한 매개 변수를 찾는 알고리즘

How many genes will be populate at first? 
How many genes will be killed after crossover and mutation? 
What will be the mutation rate? 

나는 등 뭔가를 테스트 할 수 있습니다

How long(milliseconds) does it take to find a solution. 

가 어떻게 내 응용 프로그램에 대한 매개 변수로 좋은 값을 찾을 수 있습니다. 나는 결과를 입력으로 줄 것이다 의미 : 결과는 무작위

Genes to populate | Genes to kill | Mutation rate | Result(milliseconds) 
--------------------------------------------------------------------------------- 
50      5     16/1000     146 
50      5     16/1000     208 
50      5     16/1000     1000 
50      5     16/1000     216 
100      5     16/1000     178 
100      5     16/1000     546 
100      5     16/1000     646 
100      5     16/1000     46 
100      5     16/1000     186 
50      10    16/1000     346 
50      10    16/1000     246 
50      10    16/1000     546 
50      5     34/1000     746 
50      5     34/1000     186 
50      5     34/1000     196 
50      10    34/1000     496 
50      10    34/1000     23 
50      10    34/1000     169 

있다. 나는 내 프로그램을 시험하지 않았다.

You should use that parameters to get a result that takes 78 milliseconds: 
Genes to populate | Genes to kill | Mutation rate 
-------------------------------------------------------- 
34      7     24/1000   

PS1 : 하나 더는 내가 그 알고리즘을 실행 한 후

은 그런 것을 말할 것이다 (나는 78 밀리 초 예를 들어 나를 위해 좋은 결과 시간을 줄 것이라 생각합니다) 그것은 그것을 테스트하기 위해 내가 따라야 할 전략이다. 예를 들어 한 매개 변수 만 변경하고 몇 번 테스트하고 다른 매개 변수 등을 변경합니다 (필자의 예제 값을 제공하려고했습니다). 또는 일부 값을 테스트하고 한 매개 변수를 찾고 해당 매개 변수를 항상 사용하고 다른 매개 변수를 테스트합니다 하나씩 변경하고 다른 매개 변수를 찾고 그 두 개의 매개 변수를 사용하고 다른 매개 변수를 하나씩 변경하고 그런 식으로 진행하십시오.

PS2 API 나 소프트웨어 프로그램을 사용하여 찾을 수도 있습니다.

편집 : 이 내가 그 값 nowwith 사용 내 변수 :

MAX_POPULATION_SIZE = 50; 
HARD_WEIGHTS = {1,20,1,1,1,20,1};/* It means that I have 7 variables for this */ 
NUMBER_OF_GENES_TO_KILL = 5; 
MUTATION_RATE = 100; 
MAX_MUTATION_NUMBER = 1000; 
/* Mutation rate is MUTATION_RATE/MAX_MUTATION_NUMBER */ 

답변

1

내가 첫 번째 매개 변수의 조합에 대한 통계를 얻을 거라고는
(실제로는 모든 조합을 시도 할 수 것 - 또는 > {최소, 최대, 평균, DEV}-
그런 다음 직접적인 방법은
{A, B, C}처럼 에서 이러한 통계를 매핑의 일종을 구축하는 것입니다 당신이 이상의 매개 변수를해야합니까)? (메트릭 값 통계에 대한 매개 변수)
그런 다음 원하는 메트릭 값에 해당하는 매개 변수 세트를 찾으십시오.

전체 열거가 불가능하도록 매개 변수 공간이 너무 큰 경우 더 복잡합니다. 그런 다음 임의의 지점에 충분한 수의 샘플 을 모은 후에 매개 변수 공간의 근사값을 먼저 작게 만들어야합니다.

업데이트 :
일부 기존 도구를 사용할 수 있습니다. 기본적으로 압축기가 수행해야하는 것과 동일한 작업입니다. 따라서 N {metric; params} 행을 가진 (2 진) 테이블을 작성하여 모델을 빌드 한 다음 {metric; ...} 부분 행을 작성할 수 있습니다. 그런 다음 원하는 메트릭 값을 처리 한 후 유효한 산술 코드 대신 임의의 데이터를 디코더에 공급해야하며 축적 된 통계를 기반으로 "가장 가능성있는"매개 변수 조합을 디코딩해야합니다.
그것을위한 가장 좋은 도구는 아마 paq8 것 - http://www.mattmahoney.net/dc/#paq
제안 아이디어의 간단한 데모 (오류를 소개합니다) 다음 , paq8와 텍스트를 압축 끝 부분에서 아카이브를 수정하는 것입니다. 아카이브에서 압축을 푼 (깨진) 파일에는 대개 오류 발생 후 생성 된 문장이 포함됩니다.
Paq8은 일반적으로 테이블에서 행 크기를 감지 할 수 있지만 특정 테이블 차원을 사용하여 테이블에 .bmp 헤더를 추가하여 해당 예측을 개선 할 수 있습니다 ( ).

+0

매개 변수에 대한 내 질문을 편집합니다. – kamaci

+0

답변이 업데이트되었습니다. – Shelwien

관련 문제