최종적으로
PlayerFactor[6] = { 0.0, 1.0, 2.0, 6.0, 0.0, 0.0 };
OpponentFactor[6] = { 0.0, 1.05, 5.0, 11.05, 0.0, 0.0 };
Breadth = 4
MaxDepth = 5
로 설정했습니다. 사실 3일 사이에 수많은 삽질을 했는데, 나의 Move와 상대의 Move를 저장하고 있다가 Is_Conn6 함수, Count_Threat 함수에서 계산할 때 기존의 코드보다 조금 더 효율적으로 짜려고 했습니다. 하지만 잘 짜지지 않았고 어쩔 수 없이 다 롤백했습니다.
Depth는 얼추 충분해보이지만 Breadth가 약간 아쉽습니다. 코드를 조금 더 효율적으로 짰으면 아마 Breadth = 6 정도까지는 가능하지 않았을까 싶습니다.
한 수당 시간제한이 7초이므로 6.2초가 지난 후에는 강제적으로 Depth를 따라 더 들어가지 못하도록 코드를 손봤습니다. 그런데 아마 이것저것 다 켜놓은 제 컴퓨터에서 돌려도 대충 5초 이내로 계산이 완료되는걸 보면 6.2초라는 한계선에 도달하는 일은 없을 것 같습니다.(만약 대회가 이루어지는 컴퓨터의 성능이 매우 안좋을 경우에도, 최적의 해를 내지는 못할지언정 시간초과로 인한 실격을 막기 위해서 꼭 필요한 제한이었습니다.)
시간이 더 있었다면 효율적인 Factor를 내부적으로 계속 대결하면서 찾아나갈 수 있었을텐데 그것까지 짜기에는 시간이 좀 부족했습니다. 1인팀이어서 그런 것일 수도 있겠네요. 또 Block의 존재 때문에 기계학습을 전혀 이용하지 못했습니다. 지금도 딱히 어떻게 학습을 해야할지에 대해서는 별 아이디어가 없습니다.
뭐 어찌됐든 거의 20시간? 30시간? 가까이 쏟아부어서 프로그램을 만들어냈습니다. 또 일주일 내내 계속 육목에 대해 고민을 많이 했습니다. 정말 오랜만에 나의 모든 것을 털어넣어 집중할 수 있었던 대회였습니다. 이제 밀린 학교숙제들을 처리해야겠네요.
'대회 > 육목 알고리즘 대회' 카테고리의 다른 글
[2017 삼성 육목대회] 10. 버그 수정 및 적절한 Factor를 찾기 위한 유전 알고리즘 (0) | 2018.01.16 |
---|---|
[2017 삼성 육목대회] 9. 효율적인 계산을 위한 함수 수정 (0) | 2018.01.16 |
[2017 삼성 육목대회] 8. 교내 대회 후기 (4) | 2018.01.16 |
[2017 삼성 육목대회] 6. 중간 성과 (0) | 2018.01.16 |
[2017 삼성 육목대회] 5. 계수 조정 및 여러 수 앞을 보게끔 수정 (0) | 2018.01.16 |
[2017 삼성 육목대회] 4. 프로토타입 완성 (0) | 2018.01.16 |