Go에서 유전 알고리즘을 사용하여 10개의 수수께끼를 풀다

2536 단어 Go
Code-Hex/tenpuzzle - GitHub   
Tenpuzzle - Find the solution of the 10 puzzles in Genetic Algorithm
10개의 수수께끼<-10 수수께끼를 모르는 사람에게

왜 그랬어


대학 강의에서 유전 알고리즘에 대한 생각을 보고서로 정리할지, 아니면 유전 알고리즘으로 어떤 프로그램을 만들지 해서 만들었다는 것이다.이 기사가 언젠가 다른 사람에게 도움이 되었으면 좋겠어요. 제가 기록해 놓을게요.

구조


유전 알고리즘은 존재하는 개체에 대해 대체로 세 가지 사건이 필요하다.바로
  • 교차
  • 돌연변이
  • 개체의 사망
  • .쉽게 말하면 자연에서 훌륭한 존재는 살아남는 것과 같다.
    ※ 우수한 인상

    엇갈리다


    10 수수께끼의 해답은 네 개의 연산을 사용하여 그것을 10으로 바꾸는 공식을 가리킨다.식은 이렇게 이분목으로 표현할 수 있다.

    만약 이런 상황이라면 결과는 8727달러 (5-2) 달러이다.
    10개의 수수께끼 규칙 중 이런 이분수 도안은 5개의 패턴만 존재한다.어떤 패턴이 존재하는지메모는 간단하게 기록되어 있다.
    이 부분의 나무를 사용해 교차시키는 것이다.두 부모의 나무가 될 준비를 하고 각 부모의 나무의 모양이 같은 부분의 나무(잎도 포함)를 서로 바꾸어 새로운 나무를 만든다.

    돌변하다


    각양각색의 생각이 있었지만, 이번에 진행된 방법은 생존한 두 종류의 나무를 사용해 갑자기 변이하는 것이다.
  • 연산자의 변경
  • 수치의 변경
  • 개체의 멸종


    슬픈 일이지만 유전 알고리즘은 필수적인 기능이다.
    열세를 배제하는 개체를 위해 적응도 함수를 사용하여 우수한 개체인지 우수한 개체인지 판단한다.이번에 생성된 공식의 계산 결과와 10의 거리가 얼마나 되는지에 따라 우수 여부를 판단한다.그리고 10에서 멀어질수록 우수하다.스케줄러: 의식을 보면 10이 되기 쉬운 의식이야!! 안되지...
    그 부분소스 코드입니다.
    이 판단만 할 수 있다면 우수한 순서대로 서열을 정할 수 있다는 것이다.서열을 정한 후 열세 개체를 반삭제씩 진행한다.
    상술한 교차, 돌연변이, 사망 후의 최종 개체 수량은 최초로 창설된 집단 수량과 같다.
    일련의 절차의 코드는 이런 느낌.이다.

    실행

    go get github.com/Code-Hex/tenpuzzle
    go get github.com/Code-Hex/tenpuzzle/cmd/ga
    
    다음
    ga
    
    구문을 사용합니다.

    감상


    10개의 수수께끼를 모두 풀려면 일반적으로 총해법이 빠르기 때문에 이 프로그램이 어떤 작용을 하는지 알 수 없지만 유전 알고리즘 학습에 매우 유용하다.
    생물 생존 경쟁이 정말 심각하다는 것도 알게 되었다.

    좋은 웹페이지 즐겨찾기