67세대에 도달했을 때 승률 1위는
double PlayerFactor[6] = { 0.0, 1.0, 37.05, 158.25, 0.0, 0.0 };
double OpponentFactor[6] = { 0.0, 1.73, 36.24, 266.28, 0.0, 0.0 }; 이었습니다.(같은 세대의 다른 개체들과 대결했을 때 승률 대략 60%)
맨 처음에 사용하던
double PlayerFactor[6] = { 0.0, 1.0, 2.0, 6.0, 0.0, 0.0 };
double OpponentFactor[6] = { 0.0, 1.05, 5.0, 11.05, 0.0, 0.0 }; 와 비교했을 때 많은 변화가 있었네요.
유전 알고리즘은 일단 계속 돌릴 계획이고 이외에도 추가적으로 일정한 시간(현재는 6.2초로 두었는데 6.7초 내지는 6.9초로 앞당길까 생각하고 있습니다.)이 지날 경우 탐색을 중단하는 것과 더불어 아예 후보에서 제하도록 코드를 수정했습니다.(이전에는 탐색은 중단하지만 운이 나쁘면 후보로 들어갈 수도 있었습니다.)
전반적으로 Threat을 계산할 떄 매 (x, y)에 대해서 (x, y)부터 (x+5*dx[dir], y+5*dy[dir])까지 6칸을 전부 확인하는 대신 DP를 이용하면 계산을 줄일 수 있을 것 같긴 하지만 그렇게 될 경우 코드를 너무 많이 고쳐야해서 포기했습니다.
두 수를 착점할 때 Score를 계산하는 Get_ScoreOfDoubleMoves 함수를 여러 번 호출할 때 계산한 것을 또 계산하는 문제점이 있는 것으로 보입니다. 내일 이 함수를 잘 손봐서 계산을 조금 더 효율적으로 하도록 만들 계획입니다.
'대회 > 육목 알고리즘 대회' 카테고리의 다른 글
[2017 삼성 육목대회] 14. Factor 확정 및 합리적인 Breadth, Depth 정하기 (0) | 2018.01.16 |
---|---|
[2017 삼성 육목대회] 13. 유전 알고리즘 결과 확인 (0) | 2018.01.16 |
[2017 삼성 육목대회] 12. 하루종일 삽질 (0) | 2018.01.16 |
[2017 삼성 육목대회] 10. 버그 수정 및 적절한 Factor를 찾기 위한 유전 알고리즘 (0) | 2018.01.16 |
[2017 삼성 육목대회] 9. 효율적인 계산을 위한 함수 수정 (0) | 2018.01.16 |
[2017 삼성 육목대회] 8. 교내 대회 후기 (4) | 2018.01.16 |