파이톤으로 실제 수치 유전 알고리즘의 성능을 평가하다 ~ 그 2 ~

개시하다


지난번 기고파이톤으로 실제 수치 유전 알고리즘의 성능을 평가하다의 기고과제 중 하나인 BLX. -αUNDX는 비교차법으로 구현되었습니다.

이른바 UNDX


실제 GA의 교차 사용 부모 3개(BLX-)α변수 간의 의존 관계에 강한 방법이다.
게다가 세대교체 때 아이와 교환 대상이 되는 부모는 단 2명에 불과하다.
상세한 상황은 아래의 논문을 참고하시오.
실제 수치 GA의 개척자
단봉 정적 분포가 교차하는 실치 유전 알고리즘을 이용하여 광학 시스템을 최적화하다

이루어지다


github 위에 놓다.
https://github.com/SwitchBladeJW/RCGA

평가 방법


마지막과 같은 데이텀 함수 사용, BLX-αUNDX의 성능을 평가했다.
세대교체 모델은 MGG를 사용하고 있다.치사 개체에 대한 대응은 지난번부터 변경됐다.
  • 세대교체수: 2개 개체(정영선택: 1개, 바퀴선택: 1개 개체)
  • 치사 개체(임의의 파라미터가 검색 범위를 초과한 개체)에 대한 대응: 평가 대상에서 제외
  • 교차 매개 변수는 다음과 같다.
  • BLX-α(α=0.5)
  • UNDX(α=0.5、β=0.35)
  • Rastirin 함수

  • 다봉성 함수
  • 검색 범위: -5.12~5.12
  • 전역 최적: =0, (x[i]=0)
  • 2차원 그래프

  • 이차원

  • 최대 세대수: 100대
  • 집단수: 30개
  • 생성기 개수: 60개/세대
  • 초기 그룹의 분포: -5.12~-2.0(차원수가 적기 때문에 최적해를 제외하고 분포)
  • 개체의 분포를 나타내다.파란색은 집단이고, 빨간색은 가장 좋은 개체다.또한 부모 선택과 하위 생성을 표시할 수 있다.
    도례를 그리다.

    교차법
    드로잉
    BLX-α

    UNDX

    특징은 BLX. -αX축 및 Y축 방향에서 직사각형으로 분포된 자입니다.
    서브는 부모 1과 2를 연결하는 선 주위에 분포한다.

    RosenBrock 함수

  • 단봉성 함수
  • 검색 범위: -2.048~2.048
  • 전역 최적: =0, (x[i]=1)
  • 2차원 그래프

  • 20차원

  • 최대 세대수: 100000세대
  • 클러스터 수: 50개
  • 생성기 개수: 200개/세대

  • UNDX에서 30000세대는 가장 적합한 해결 방안을 찾을 수 있지만 BLX는α그렇다면 10만 세대라도 가장 적합한 해결 방안을 찾을 수 없다.RosenBrock 함수는 변수 간 의존 관계의 함수이기 때문에 UNDX가 유효하다고 여겨진다.

    Schwefel 함수

  • 다봉성 함수
  • 검색 범위: -512~512
  • 전역 최적: ≈0, (x[i] = 420.9687)
  • 2차원 그래프

  • 십차원

  • 최대 세대수: 30000세대
  • 집단수: 300개
  • 생성기 개수: 200개/세대

  • 마지막으로 치사 개체의 처리 방법을'탐색 범위를 초과한 파라미터를 한계값으로 설정', BLX-로 설정했다.α국부적 해결 방안이지만 치사 개체의 처리 방법을 바꾸어 개선했다.
    BLX-αUNDX와 함께 가장 적합한 해를 찾을 수 있다. BLX. -α보다 빠른 결과를 얻을 수 있습니다.모두 만능의 수법이 없다.

    학습 시간 정보


    Colaboratory에서RosenBrock 함수 20차원 100000세대의 학습 시간을 측정했습니다.
    () 내에는 치사 고체를 제외한 평가 횟수(평가 함수를 사용하는 횟수)가 있다.개체를 죽이지 않았다면 세대당 202회였다.
    컨디션
    BLX-α
    UNDX
    Colaboratory(CPU)
    40분(20186185회)
    37분(2019 3천164회)
    Colaboratory(GPU)
    40분(20186482회)
    35분(2019.3868회)
    ※ 2019.07.06시 기준.
  • 일반적으로 UNDX의 계산 원가가 비교적 높지만 UNDX의 처리는 비교적 일찍 끝난다.UNDX가 for회로를 완전히 배제했기 때문에 이 부분은 듣고 있는 것 같아요.python for 링은 귀신의 문입니다.
  • CPU 및 GPU 처리 속도는 거의 변경되지 않았습니다.GPU에 맞는 인코딩을 하지 않으면 좋을 게 없을 것 같습니다.
  • 좋은 웹페이지 즐겨찾기