문제

유전자 알고리즘을 통해 근사하고 싶은 알려지지 않은 기능이 있다고 상상해 봅시다. 이 경우 y = 2x라고 가정하겠습니다.

나는 x = 0에서 x = 4에서 각각의 y에 대해 1 개의 y로 구성된 5 가지 요소로 구성된 DNA를 가졌으며, 많은 시험과 계산 후에는 형식의 무언가 근처에 도착할 것입니다.

best_adn = [0, 2, 4, 6, 8

그것이 선형 함수, 다항식 또는 더 못생긴 방법이라면 미리 알지 못합니다. 또한 내 목표는 Best_adn에서 기능의 유형이 무엇인지 추론하지 않는 것입니다. 나중에 사용할 수 있습니다.

이것은 단지 예제 문제였습니다. 제 경우에는 DNA에 5 점 만있는 대신 50 또는 100과 같은 것이 있습니다. 최상의 포인트를 찾는 GA와 가장 좋은 방법은 무엇입니까?

  1. 인구 100 명을 생성하고 20% 더 나쁜 20%를 버립니다.
  2. 나머지 80%를 재결합 하시겠습니까? 어떻게? 임의의 지점에서 그들을 자른 다음 어머니의 두 번째 부분으로 아버지의 Adn의 첫 번째 부분을 구성합니까?
  3. 돌연변이, 이런 종류의 문제 돌연변이에서 어떻게 정의해야합니까?
  4. 엘리트주의를 사용하는 것이 가치가 있습니까?
  5. 주변에 사용할 가치가있는 다른 간단한 아이디어가 있습니까?

감사

도움이 되었습니까?

해결책

가우스 적응은 일반적으로 표준 유전자 알고리즘을 능가합니다. 자신의 패키지를 처음부터 쓰고 싶지 않다면 Mathematica Global Optimization 패키지가 우수합니다. 표준 피터가 비참하게 실패한 정말 불쾌한 비선형 기능에 맞게 사용했습니다.

편집하다:위키 백과 기사

기사에서 나열된 논문의 인쇄물을 사냥하면 백색 인물 및 구현을 찾을 수 있습니다. 그러나 일반적으로 피트니스 기능을 최대화하기위한 솔루션 공간이 어떻게 보이는지 아이디어가 있어야합니다. 변수의 수가 적거나 로컬 최대 값의 수가 적거나 글로벌 최대 값으로 연결/경사면 단순한 사각형이 잘 작동합니다. 각 지역 최대 주변의 영역이 작다면 (즉, 최고의 솔루션을 쳤다면, 그렇지 않으면 나쁜 솔루션을 쳤다), 더 좋은 알고리즘이 필요하다.

유전자 알고리즘의 변수를 선택하는 것은 솔루션 공간의 모습에 따라 다릅니다.

다른 팁

일반적으로 실험을 통해서만 찾을 수 있습니다 ... 아마도 GA를 조정하기 위해 GA를 작성합니다.

그러나 그 외에도, 나는 당신이 무엇을 요구하는지 이해하지 못합니다. 기능이 무엇인지 모르고 그에 대한 요점을 모르는 경우 체력을 어떻게 결정합니까?

현재 문제에 대한 나의 이해에서 이것은 신경망에 더 잘 맞습니다.

편집하다:

2. 나머지 80%를 소매 하시겠습니까? 어떻게? 임의의 지점에서 그들을 자른 다음 어머니의 두 번째 부분으로 아버지의 Adn의 첫 번째 부분을 구성합니까?

이것을 크로스 오버라고합니다. 당신이 소스를 원한다면, 임의의 시작점을 선택하고 임의의 길이를 바꾸는 것과 같은 것을하십시오. 예를 들어, 객체에 10 개의 요소가 있습니다. 무작위로 1과 10 사이의 스팟 X를 선택하고 x..10- 랜드%10+1을 바꾸십시오. 당신은 사진을 얻습니다 ... 약간의 양념.

3. 양육, 이런 종류의 문제 돌연변이에서 어떻게 정의해야합니까? 일반적으로 그것은 다른 것보다 법적 솔루션으로 정의 된 것에 더 의존합니다. 다른 표본으로 바꾸지 않고 임의의 데이터 (합법적 인)로 채우는 것을 제외하고는 크로스 오버를하는 것과 같은 방식으로 돌연변이를 할 수 있습니다. 많이 낮은 요율.

4. 엘리트주의를 사용하는 것이 가치가 있습니까? 실험하고 알아보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top