https://github.com/nestedsoftware/tictac/tree/master/tictac
결국 색을 플레이어가 고르는데, 흑 고르면 플레이어 두고, (current_player == -1 이면, ai 불러서 값 뱉어내고 그 값을 이제 그냥 두는)
# depth 처음에는 3으로 하고, 4~5까지 늘려보기 (걸리는 시간)
import math
def minimax(depth, node_index, maximizing_player, values, alpha, beta):
# depth 추후에 수정하기
if depth == 3:
return values[node_index]
if maximizing_player:
best = -math.inf
for i in range(2):
# opponent's turn
val = minimax(depth + 1, node_index * 2 + i, False, values, alpha, beta)
best = max(best, val)
alpha = max(alpha, best)
if beta <= alpha:
break
return best
else:
best = math.inf
for i in range(2):
val = minimax(depth + 1, node_index * 2 + i, True, values, alpha, beta)
best = min(best, val)
beta = min(beta, best)
if beta <= alpha:
break
return best
| 구성 요소 | 설명 |
|---|---|
| MCTS | 둘을 바탕으로 시뮬레이션과 트리 확장을 진행 |
| 정책망 (Policy Net, π(s)) | 유망한 수를 제시함 (어떤 수부터 탐색할지 힌트 줌) |
| 가치망 (Value Net, V(s)) | 시뮬레이션 대신 상태의 가치를 바로 추정 |