2013-05-26 1 views
2

유전자 알고리즘을 사용하여 두 개의 변수가있는 두 선형 방정식의 간단한 시스템을 풀고 싶습니다. 이는 주로 그들이 일하는 방식을 더 잘 이해할 수있게 도와줍니다.숫자를 유전 알고리즘에서 어떻게 염색체로 표현할 수 있습니까?

모든 것이 꽤 간단 해 보이지만,이 문제에 대한 염색체에서 가능한 솔루션을 인코딩하는 방법을 확신 할 수 없습니다.

솔루션을 나타 내기 위해 염색체에서 인코딩하려고하는 두 개의 변수가 있습니다. 각 변수가 8 비트 숫자로 표현 될 수 있다면 16 비트 2 진 코드화 된 염색체 (1과 0의 문자열)를 만들 수 있습니까?

나는 그것이 어떻게 작동하는지 잘 모르겠습니다. 두 부모가 번식을 위해 선발된다면 어떻게 이진 문자열로부터 무작위로 유전자를 선택하면 아마도 더 좋은 해결책이 될까요? 이것이 바이너리 문자열이 작동하지 않는다고 생각하는 이유입니다. 그래서 어떤 대답이라도 대단히 감사하겠습니다!

+0

두 부모의 비트를 무작위로 선택하는 것이 아닙니다. 당신은 순서대로 비트를 통과합니다. 두 부모 모두 같은 비트 위치에 1이 있으면 유전자가 전달됩니다. 양쪽 부모가 같은 비트 위치에 0을 가지고 있다면 유전자는 전달되지 않습니다. 부모 중 한 명이 1이고 다른 하나가 0 인 경우에만 무작위 선택이 적용됩니다. –

+0

답장을 보내 주셔서 감사합니다. 답변이 맞으면 올바르게 표시해 드리겠습니다. – Zach

+0

Gilbert LeBlanc이 말하는 것은 UniformCrossover입니다. 매우 혼란스럽고 한 쪽 부모의 더 큰 조각을 보존하지 않기 때문에 사용하지 않는 것이 좋습니다. 싱글 포인트 크로스 오버가 가장 좋습니다. 여기서 문자열의 교차점을 선택하고 첫 번째 부모에서 첫 번째 절반을 선택하고 두 번째 부모에서 두 번째 절반을 선택합니다. 점은 무작위로 선택됩니다. – Andreas

답변

6

왜 숫자를 숫자로 사용하지 않습니까? GA에서 이진 인코딩을 사용할 필요가 없습니다. 실제 값 인코딩을 위해 잘 작동하는 돌연변이 및 크로스 오버 연산자가 있습니다. 말하듯이 학습 사례입니다. 나는 두 가지 접근법을 시도해 보는 것이 좋습니다. 실제 값 인코딩은 훨씬 더 수렴해야합니다.

이진 인코딩의 경우 단일 포인트 크로스 오버 및 비트 플립 (Bit Flip) 변이를 사용합니다. 실수 값 인코딩의 경우 Blend-Alpha-Beta Crossover (BLX-a-b) 또는 Simulated Binary Crossover (SBX) 및 Normal Distributed Mutation을 사용합니다. HeuristicLab에있는 SingleObjectiveTestFunctions에서 이러한 연산자와 더 많은 연산자를 시도해 볼 수 있습니다.

+0

HeuristicLab은 놀라운 소프트웨어 조각처럼 보입니다. 지금 다운로드 중입니다. 나는 정말로 가치있는 인코딩을 시도 할 것이다. 답변 주셔서 감사합니다! – Zach