출력에서 볼 수 있듯이, 우리의 알고리즘은 때때로 로컬 최적의 솔루션에 갇혀, 이것은 피트니스 점수 계산 알고리즘을 업데이트하거나 돌연변이 및 크로스 오버 연산자조정하여 더 향상 될 수있다. 세대를 통해 진화하기 위해 알고리즘은 많은 연산자 중 하나를 사용할 수 있습니다. 그 중 일부는: 인구 크기는 일정 하기 때문에, 일부 개인 새로운 것 들을 위한 공간을 만들기 위해 죽어야 합니다. 우리는 현재와 조상 인구에 의해 생성 된 자손의 차이가 더 이상 중요하지 않은 때 수렴의 상황에 도착합니다. 그런 다음 알고리즘이 문제에 대한 솔루션 집합으로 수렴합니다. 배낭 최적화는 고전적인 알고리즘 문제입니다. 크기(보유할 수 있는 무게)가 있는 배낭과 다른 가중치와 다른 값을 가진 상자 세트의 두 가지가 있습니다. 목표는 최대 무게를 초과하지 않고 가능한 한 가치 있도록 가방을 채우는 것입니다. 그것은 1972 년부터 유명한 수학적 문제입니다. 유전 알고리즘은 가능한 많은 솔루션의 최적화 문제이기 때문에 이를 해결하는 데 적합합니다. 이제 파이썬에서 이것을 구현해 보겠습니다. 후보자의 피트니스 가치는 최적의 위치에 얼마나 가깝다는 것을 명심하십시오.
여기, 그것은 얼마나 많은 문자가 있어야 일치 의미- „안녕하세요 세계!”. 유전자 세트를 구축하는 것부터 시작합시다. 이 응용 프로그램을 사용하면 이전보다 더 많은 요청이 있습니다. 관절, 뼈, 근육이 있는 „생물”을 만들어야 합니다. 점프, 달리기, 계단 오르기 등 작업을 실행하기 위해 유전 알고리즘은 생물의 움직임을 최적화하려고 합니다. GAs에서 우리는 인구의 각 개인이 얼마나 좋은지 , `피트니스`라고 합니다. calculate_fitness 함수는 알고리즘에 적용하려는 평가 절차가 됩니다. 이 예에서는 f=참조 표준과 일치하는 잠재적용 솔루션(염색체)에서 유전자(요소)의 수를 반환할 것입니다. 유전 알고리즘은 최고의 피트니스 코어를 가진 개인이 번식하고 자신의 유전자에 전달 할 가능성이 가장 높다는 점에서 생물학을 모방.
그러나 우리는 단순히 `번식`위험 할 수 있기 때문에, 번식하기 위해 우리의 인구에서 모든 최고의 개인을하지 않습니다. 오히려, 우리는 더 나은 개인이 번식 할 가능성이 moire 것을 의미하는 방법을 사용하지만, 낮은 피트니스 개인은 때때로 번식하도록 선택 될 수있다. 오늘, 우리는 파이썬 유전 알고리즘과 그 연산자 – 선택, 크로스 오버 및 돌연변이에 대해 배웠습니다. 우리는 피트니스 기능에 대해 이야기하고 이러한 유전 알고리즘 파이썬을 시연하기 위해 예제 문제를했다.