Python을 이용한 Genetic 알고리즘 튜토리얼

이 글에서는 유전 알고리즘의 개념을 설명하려고합니다. 그 기원과 그 목표를 설명하고 파이썬으로 구현하는 방법을 보여 드립니다.

좋은 인공 지능을 만드는 단순한 해결책은 일련의 규칙인 “경험적 알고리즘”을 만드는 것입니다. “이 조건을 충족하면 그와 같이 행동하십시오”. 이런 규칙으로 우리는 자연의 지능을 재현할 수 있다고 상상할 수 있습니다. 그러나 작업량은 엄청나고 최종 솔루션은 제작자가 감당할 수 없습니다. 그것이 완벽 할 수 없다는 것을 알고 있는 동안 무언가를 창조하기 위하여 많은 시간을 소비하는 것은 우울합니다.

이를 피하기 위해 새로운 아이디어가 나타났습니다. 직접 해결책을 만드는 대신 진화를 재창조하는 것입니다. 최초의 선사 시대의 물고기를 만들어서 진화에 적합한 조건에 놓고 인간으로 자유롭게 진화하도록 할 수있었습니다. 이 아이디어는 “유전 알고리즘”이라고 부르며 다음 부분에서 하나를 만들 것입니다. 먼저 우리의 기억을 새롭게하고 다윈에 의해 이론화된 자연 선택을 이해하려고 노력하십시오.

이 이론은 간단합니다. 인류가 번성하기를 원한다면 끊임없이 개선되어야합니다. 적자 생존입니다. 인류의 가장 좋은 요소는 자손에게 영감을 주어야하지만 다른 사람들은 어떤 다양성을 유지하고 자연 환경의 변화에 ​​적응할 수 있도록 해야 합니다.

 

 

이 알고리즘은 특히 최적화 문제와 함께 효율적입니다.

Knapsack 문제
backpack 최적화는 고전적인 알고리즘 문제입니다. 크기가 있는 배낭(들고 올 수있는 무게)과 다른 무게의 다른 값을 가진 상자 세트 두종류가 있습니다. 목표는 최대 무게를 초과하지 않고 가능한 한 가방을 채우기 위한 것입니다. 이것은 1972년 이래로 유명한 수학적 문제입니다. 유전 알고리즘은 가능한 많은 솔루션을 가진 최적화 문제이기 때문에 이를 해결하기에 적합합니다.

 

 

fitness 함수 선택하기
유전 알고리즘을 만들 때 가장 먼저해야 할 일은 항상 evaluation 함수를 만드는 것입니다. 이것은 표본의 성공을 평가하는 함수입니다. 추악한 오리와 아름다운 백조 사이에서 인기도로 분리할 수 있습니다. 이 분리의 목표는 나중에 성공적인 표본이 다음 세대를 형성하기 위해 더 많은 “기회”를 갖게된다는 것입니다.

원문
https://blog.sicara.com/was-darwin-a-great-computer-scienti…

Tags:

Genetic

유전알고리즘

Knapsack

backpack

fitness

evaluation