게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
유니티로 간단한 자동차 인공지능 구현해보았습니다.
게시물ID : humordata_1811139짧은주소 복사하기
작성자 : ACEight
추천 : 8
조회수 : 2428회
댓글수 : 15개
등록시간 : 2019/04/20 20:56:37
옵션
  • 창작글





텐서플로우나 다른 라이브러리는 사용하지 않았고
오직 유니티(C샵) 으로만 비교적 쉽고 간단하게 구현했습니다.

한 번의 세대에 130개의 자동차 개체를 동시에 플레이 시키고
1프레임 진행당 1점의 점수를 주어 한 판이 끝났을때
가장 높은 점수를 얻은 개체에 높은 가중치를 주어
비교적 간단한 교배, 변이 등의 유전 알고리즘을 사용하여 인공신경망을 최적화 했습니다.

인공신경망의 입력값은
자동차의 노말라이즈된 Forward 벡터값 x,y,z 와
6방향의 라인센서의 충돌 거리값
이렇게 총 9개의 데이터 입력을 사용했고

출력값은 좌측 회전, 우측 회전 2개의 값을 받아
이 둘 중 큰값이 0.5 이상이면 해당 방향을 선택하게 했습니다.

자동차의 속도는 일정하고 가속이나 감속 또는 후진은 불가능하게 했습니다.

유니티엔진으로 많은 수의 개체를 동시에 테스트하고
또한 플레이 속도를 최대 100배속까지(CPU만 빠르다면) 올릴 수 있는
테스트 환경을 만들었기 때문에 더욱 빠른 최적화가 가능합니다.

동영상 마지막 부분에서 한자리에서 계속 회전하는 이유는 개체의 점수 책정을
오로지 오래 살아남으면 높게 나오게 처리했기때문인데
어쩌면 저런 방식이 오래 살아남을 수 있는 최적의 해를 찾았다고 볼 수도 있습니다.
의도하지 않았는데 이 부분이 정말 재밌네요.

실제로는 한 곳의 자리에서 계속 돌면 감점 처리를 해줘야 하는데 하지 않았습니다.

시청해주셔서 감사합니다.

혹시 궁금한 점 댓글 남겨주시면 답변드리겠습니다~!
출처 본인제작
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호