답변:
진화 알고리즘은 다윈의 자연 선택 원리에 기반한 최적화 알고리즘의 계열이다 . 자연 선택의 일부로서, 주어진 환경에는 생존과 재생산을 위해 경쟁하는 개인이 있습니다. 각 개인이 이러한 목표를 달성 할 수있는 능력은 아동을 가질 수있는 기회, 즉 유전자를 차세대 개인에게 전달할 수있는 기회를 결정합니다. 두 가지 목표.
세대에 걸쳐 지속적으로 개선되는 이러한 원칙은 문제에 대한 솔루션을 최적화하기 위해 진화 알고리즘에 의해 취해집니다. 에서 초기 세대 상이한 구성된 인구 개인 랜덤 또는 다른 방법에 의해 생성된다. 개인은 문제에 대한 해결책, 다소 좋은 것입니다. 문제와 관련하여 개인의 질을 fitness 라고합니다 . 이는 해결해야 할 문제에 대한 솔루션의 적절성을 반영합니다. 개인의 체력이 높을수록 유전자형의 일부 또는 전부가 다음 세대의 개인에게 전달 될 가능성이 높습니다.
개인은 유전자형 으로 코딩되며 ** 비트 벡터 ( 유전자 알고리즘 ) 또는 실제 벡터 (진화 전략) 와 같은 모든 모양을 가질 수 있습니다 . 각 유전자형은 개체를 평가할 때, 즉 적합성이 계산 될 때 표현형 으로 변환됩니다 . 어떤 경우에는 표현형이 유전자형과 동일합니다 : 직접 코딩 이라고합니다. 그렇지 않으면 코딩을 간접이라고합니다. 예를 들어, 길이, 높이 및 너비로 정의 된 직육면체의 크기를 최적화한다고 가정합니다. 예제를 단순화하기 위해이 3 개의 수량이 0과 15 사이의 정수라고 가정합니다. 그런 다음 4 비트 이진수를 사용하여 각 수량을 설명 할 수 있습니다. 가능한 해결책의 예는 유전자형 0001 0111 01010 일 수 있습니다. 해당 표현형은 길이 1, 높이 7 및 너비 10의 평행 육면체입니다.
구세대에서 신세대로 전환하는 동안 변형 이라고 연산자 operator ) , 그 목적은 개인을 조작하는 것입니다. 변형 연산자에는 두 가지 유형이 있습니다.
진화 알고리즘은 운영 연구, 로봇 공학, 생물학, 뉘앙스 또는 암호화와 같은 다양한 분야에서 입증되었습니다. 또한 여러 대물 렌즈를 동시에 최적화 할 수 있으며, 수학적 모델의 특성을 최적화하지 않기 때문에 블랙 박스로 사용할 수 있습니다. 그들의 유일한 제한은 계산 복잡성입니다.
유전자 알고리즘은 문제에 대한 여러 시도 된 솔루션을 임의로 생성하는 알고리즘입니다. 이 시도 된 솔루션을 "인구"라고합니다.
그런 다음 주어진 체력 함수를 사용하여 이러한 솔루션이 문제를 얼마나 잘 해결하는지 확인합니다 . 최고의 피트니스 가치를 가진 시도 된 솔루션 은 새로운 인구를 생성하는 데 사용됩니다. 시도한 솔루션을 약간 변경 (돌연변이)하거나 기존 시도한 솔루션을 결합하여 수행 할 수 있습니다 (크로스 오버).
아이디어는 시간이 지남에 따라 문제를 해결하기에 충분한 체력 가치를 가진 시도 된 솔루션이 등장한다는 것 입니다.
이것에 대한 영감은 진화론에서 나왔다. 가장 적합한 솔루션은 살아남고 생성합니다.
실시 예 1
나무 조각에서 여러 가지 모양을 잘라내는 가장 효율적인 방법을 찾고 있다고 가정 해 봅시다. 가능한 적은 목재를 낭비하고 싶습니다.
시도한 해결책은 나무 조각에 이러한 모양을 무작위로 배치하는 것입니다. 적합성 은이 배열에 따라 모양을 자른 후 얼마나 적은 목재가 남을지에 의해 결정됩니다.
나무가 적을수록 시도한 해결책이 더 좋습니다.
실시 예 2
여러 점을 통과하는 다항식을 찾으려고한다고 가정하십시오. 시도한 솔루션은 임의 다항식입니다. 이러한 다항식
의 적합도 를 결정하려면 주어진 다항식이 얼마나 잘 맞는지 결정합니다. (이 특별한 경우에는 다항식이 점에 얼마나 잘 맞는지 결정하기 위해 최소 제곱 법을 사용합니다). 여러 번의 시도를 통해 점에 충분히 다항식이 나올 때까지 점에 더 적합한 다항식을 얻게됩니다.
이 답변은 하나가 어떻게 사용될 수 있는지에 대한 실제적인 예를 요청하며, 다른 답변과 함께 제공하려고 시도 할 것입니다. 그들은 유전자 알고리즘이 무엇인지 설명하는 데 아주 좋은 직업으로 보입니다. 예를 들어 보겠습니다.
주어진 입력에서 일부 출력을 생성하는 신경망이 있다고 가정 해 봅시다 (단, 네트워크의 유일한 응용 프로그램은 아니지만). 유전자 알고리즘은 이들의 모집단을 생성 할 수 있으며, 어떤 출력이 가장 좋은지 확인하여 모집단 구성원을 번식시키고 제거합니다. 결국, 신경망이 충분히 복잡하다면 신경망을 최적화해야합니다.
여기에 내가 작성한 데모가 잘못 코딩되었지만 이해하는 데 도움이 될 수 있습니다. http://khrabanas.github.io/projects/evo/evo.html 진화 버튼을 누르고 목표를 어지럽히십시오.
그것은 간단한 유전자 알고리즘을 사용하여 어떤 개체군이 생존 하는지를 번식, 돌연변이 및 결정합니다. 입력 변수 설정 방법에 따라 네트워크는 어느 정도 가까운 수준에 도달 할 수 있습니다. 이러한 방식으로 모집단은 결국 목표와 유사한 동종 집단이 될 것입니다.
유전자 알고리즘은 RGB를 사용하여 출력 색상을 생성하는 일종의 "신경망"을 만들려고합니다. 먼저 무작위 모집단을 생성합니다. 그런 다음 모집단에서 임의의 3 명의 무작위 구성원을 가져 와서 가장 낮은 체력을 가진 구성원을 선택하고 모집단에서 제거합니다. 체력은 최고 목표 제곱 차이와 최저 목표 제곱 차이와 같습니다. 그런 다음 나머지 두 개를 함께 번식시키고 죽은 구성원과 같은 위치에 아이를 추가합니다. 짝짓기가 발생하면 돌연변이가 발생할 가능성이 있습니다. 이 돌연변이는 값 중 하나를 무작위로 변경합니다.
참고로, 설정 방법으로 인해 상대적 근접성에 도달하더라도 많은 경우 완전히 수정하는 것은 불가능합니다.
여기에는 유전자 알고리즘이 무엇인지 설명하고 응용 프로그램을 제공하는 여러 가지 좋은 답변이 있습니다. 나는 그들이 유익한 것에 대해 일반적인 조언을 추가하고 그것을 사용해서는 안되는 경우를 추가하고 있습니다. 내 말투가 거칠다면 적절하지 않은 섹션의 사례에 GA를 사용하면 논문이 최고 저널에서 즉시 거부되기 때문입니다.
먼저, 문제는 최적화 문제 여야합니다. 최적화하려는 "피트니스 기능"을 정의해야하며이를 측정 할 방법이 필요합니다.
좋은:
적절하지 않은:
마지막으로, GA를 고려하고 있다면, 진화 전략에 대한 최신 연구를 고려하십시오. 나는 CMA-ES에 편향되어 있는데, 이것은 전통적인 GA 가하지 않는 방식으로 피트니스 환경에서 그라디언트의 개념을 포착하는 좋은 간단한 알고리즘이라고 생각합니다.
다른 답변에서 볼 수 있듯이, GA (Genetic Algorithms)를 적용하기 위해 필요한 것은 크로스 오버 및 돌연변이의 형태로 문제에 대한 잠재적 인 솔루션을 나타내는 것입니다. 이상적으로, 피트니스 기능은 단순히 '건초 더미의 바늘'이 아니라 솔루션의 품질에 대한 부드러운 피드백을 제공합니다.
다음은 유전자 알고리즘 ( 일반적 으로 메타 휴리스틱 스 )이 좋은 문제의 특징입니다.
그러나 이러한 목적으로 널리 사용되었지만 GA는 실제로는 아닙니다. 기능 최적화 - GA 메커니즘 먼 고품질의 해결책을 찾기위한 희망으로 검색 공간의 '외곽'지역을 탐험하는 것이 아니라 주변 이상의 클러스터하지 않는 경향이 '피트니스 풍경'에서 쉽게 얻을 수있는 피크.
GA의 적용 가능성에 대한 자세한 내용은 유명한 초기 논문 인 "유전자 알고리즘에 문제를 야기시키는 요인"에 나와 있습니다.