ga 예제

아래는 Java에서 유전 알고리즘의 예구현입니다. 자유롭게 코드를 가지고 놀 수 있습니다. ga는 돌연변이와 크로스오버 기능을 사용하여 모든 세대에서 새로운 개인을 생산합니다. ga가 선형 및 바인딩된 구속조건을 충족시키는 방법은 가능한 점만 생성하는 돌연변이 및 크로스오버 함수를 사용하는 것입니다. 예를 들어, ga에 대한 이전 호출에서, 기본 돌연변이 함수 돌연변이가우션은 선형 제약조건을 충족시키지 못하므로 돌연변이적응이 대신 사용된다. 사용자 지정 돌연변이 함수를 제공하는 경우 이 사용자 지정 함수는 선형 및 바인딩된 구속조건과 관련하여 가능한 점만 생성해야 합니다. 툴박스의 모든 크로스오버 함수는 선형 구속조건과 경계를 충족하는 점을 생성합니다. 이 예제에서는 유전 알고리즘을 사용하여 비선형 부등식 제약 조건 및 경계에 따라 객관적인 함수를 최소화하는 방법을 보여 주며 있습니다. 이것은 일부 조건 (예를 들어 모집단 수 또는 최상의 솔루션의 개선)이 충족 될 때까지 반복됩니다. 다음 예제에서는 실제 값 도메인에 대한 최적화 기능을 위해 유전자 알고리즘을 적용한 것을 보여 줍니다.

Shubert 함수의 최소값은 다음과 같습니다. 예를 들어 아래와 같이 크로스오버 점을 3으로 간주합니다. 주: 이 예제에서는 크로스오버 및 돌연변이 후 가장 적합한 개별이 새 적합자에서 대체됩니다. 유전 알고리즘은 찰스 다윈의 자연 진화 이론에서 영감을 얻은 검색 휴리스틱입니다. 이 알고리즘은 다음 세대의 자손을 생산하기 위해 가장 적합한 개인이 재생을 위해 선택되는 자연 선택 과정을 반영합니다. 다음으로 최적화 옵션을 사용하여 두 개의 플롯 함수를 선택합니다. 첫 번째 플롯 함수는 gaplotbestf로 모든 세대에서 인구의 최고 및 평균 점수를 플롯합니다. 두 번째 플롯 함수는 gaplotmaxconstr로, 모든 세대에서 비선형 구속조건의 최대 구속조건 위반을 플롯합니다.

또한 표시 옵션을 사용하여 명령 창에 정보를 표시하여 알고리즘의 진행 률을 시각화할 수도 있습니다. 유전 알고리즘은 다윈의 진화 론에서 영감을 받았습니다. 유전 알고리즘에 의해 해결 된 문제에 대한 해결책은 진화 적 과정을 사용합니다 (진화). 형성된 특정 새로운 자손에서는, 그들의 유전자의 몇몇은 낮은 무작위 확률을 가진 돌연변이를 복종될 수 있습니다. 이는 비트 문자열의 일부 비트를 대칭 할 수 있음을 의미합니다. 개인은 유전자로 알려진 매개 변수 (변수)의 집합을 특징으로한다. 유전자는 염색체 (해결책)를 형성하기 위하여 문자열로 결합됩니다. 여기에 애플릿이지만 브라우저는 Java를 지원하지 않습니다. 애플릿을 보려면 브라우저 요구 사항을 확인하십시오. 유전 알고리즘 함수 ga는 피트니스 함수가 문제의 변수 수만큼 많은 요소를 가지고 있는 하나의 입력 x를 취한다고 가정합니다. 피트니스 함수는 함수의 값을 계산하고 하나의 반환 인수 y에서 해당 스칼라 값을 반환합니다.

ga 함수를 사용하여 피트니스 함수를 최소화하려면 함수 핸들을 피트니스 함수에 전달하고 변수 수를 두 번째 인수로 지정해야 합니다.