> 백엔드 개발 > 파이썬 튜토리얼 > 유전 알고리즘을 사용한 도트 시뮬레이션 - 2부

유전 알고리즘을 사용한 도트 시뮬레이션 - 2부

Barbara Streisand
풀어 주다: 2025-01-16 18:58:11
원래의
437명이 탐색했습니다.

이 튜토리얼은 엘리트 강조, 장애물 복잡성 증가, "도달" 카운터, 교차 번식과 같은 기능을 추가하여 유전자 알고리즘 시뮬레이션을 향상시킵니다. 개선사항을 분석해보겠습니다.

1부: 시각적 개선 및 장애물 복잡성

시뮬레이션은 엘리트 도트(이전 세대에서 가장 성능이 좋은 도트)를 파란색으로 표시하여 시각적으로 구별할 수 있도록 업그레이드되었습니다. 이는 is_elite 클래스의 Dot 메소드에 draw 부울 매개변수를 추가하고 조건부로 파란색을 적용함으로써 달성됩니다. Population 클래스의 draw 메소드는 elites 목록에 점이 있는지 여부에 따라 이 부울을 전달하도록 수정되었습니다.

더 나은 유연성을 위해 장애물 생성이 리팩터링되었습니다. ObstacleGoal 클래스가 별도의 obstacles.py 파일로 이동되어 더욱 깔끔한 코드 구성이 가능해졌습니다. 화면 크기 및 인구 크기와 같은 전역 변수를 저장하기 위해 constants.py 파일이 도입되어 파일 간의 중복을 방지합니다. 여러 장애물 구성(OBSTACLES0, OBSTACLES1, OBSTACLES2, OBSTACLES3, OBSTACLES4, OBSTACLES5)이 obstacles.py에 정의되어 있어 다양한 챌린지 레벨 간에 쉽게 전환할 수 있습니다. 기본 스크립트는 이러한 구성을 가져오고 원하는 구성을 선택합니다. 목록 이해를 통해 생성된 장애물 목록(예: OBSTACLES4)을 사용하는 경우에도 목표가 항상 존재하는지 확인하는 검사가 추가되었습니다.

이전 세대에서 성공적으로 목표에 도달한 도트 수를 표시하기 위해 "도달" 카운터가 추가되었습니다. 이는 generate_next_generation 클래스의 Population 메서드를 수정하여 이 값을 계산하고 반환함으로써 구현됩니다. 그러면 메인 루프가 이 개수를 화면에 표시합니다.

Dots Simulation using Genetic Algorithm - Part 2

엘리트가 강조되고 장애물이 있는 시뮬레이션

Dots Simulation using Genetic Algorithm - Part 2

OBSTACLES0 장애물 달리기 시뮬레이션

2부: 단일 지점 교차 구현

시뮬레이션은 자손 생성을 위해 복제에서 단일 지점 교차로 전환됩니다. crossover 클래스에 Dot 클래스 메소드가 추가되었습니다. 이 방법은 두 개의 상위 점을 입력으로 취하고 임의의 교차점을 선택한 다음 각 상위의 이동 시퀀스 부분(방향 벡터 목록으로 표시됨)을 결합하여 두 개의 자손을 생성합니다. generate_next_generation 방법은 이 교차 방법을 활용하여 단일 클론 대신 자손 쌍을 생성하도록 업데이트되었습니다. 자손에게 돌연변이가 계속해서 적용됩니다.

Dots Simulation using Genetic Algorithm - Part 2

단일 포인트 크로스오버

향상된 시뮬레이션은 향상된 시각화, 조정 가능한 난이도, 더욱 정교한 번식 메커니즘을 제공하여 유전자 알고리즘의 더욱 강력하고 통찰력 있는 예가 됩니다. 언급된 향후 개선 사항에는 저장/로드 기능 및 속도 최적화가 포함됩니다. 저자는 또한 추가적인 협업을 위해 Discord 커뮤니티에 가입할 것을 권장합니다.

위 내용은 유전 알고리즘을 사용한 도트 시뮬레이션 - 2부의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿