0

나는 코드 뒤에 규칙을 지정할 보드 게임에 대해보다 나은 경험적 함수를 계산하려고합니다. 내 평가 기능이있다 : 같이보드 게임을위한 발견 적 기능 AI

def evaluate(self, board): 
     score = 0 
     for i in range(board.LENGTH): 
      for j in range(board.WIDTH): 
       if board.board[i][j].token == "G": 
        score += 100 * (i+1) + 50 * (j + 1) 
       if board.board[i][j].token == "R": 
        score -= 100 * (i+1) + 50 * (j + 1) 
return score 

Board

초기 보드는 녹색과 빨간색 토큰을 보유하고 있습니다. 인공 지능이 먼저 움직이고, 당신의 토큰을 공격하여 상대방의 색을 플레이합니다. 검정색 셀에서 토큰은 직각 (왼쪽, 오른쪽, 위, 아래) 또는 대각선으로 이동할 수 있습니다. 흰색 셀에 있다면 직각으로 만 이동할 수 있습니다.

토큰을 상대방 토큰 옆으로 옮기면 해당 방향의 모든 상대방 토큰이 제거됩니다. 예 : C4에서 C5로 녹색 토큰을 이동하면 C-6에서 C-9까지의 모든 R 토큰을 삭제합니다. 이를 전방 공격이라고합니다. 마찬가지로 상대방의 토큰 옆에 토큰이 있다면 그 토큰에서 토큰을 모두 제거하여 멀리 이동할 수 있습니다.

분명히, 블랙 셀의 토큰은 더 많은 이동을 할 수 있습니다.

인공 지능을위한 훌륭한 휴리스틱 기능은 무엇입니까? 현재 기능에서 무엇을 변경해야합니까?

+0

저는 그것이 모든 규칙이 될 수 있다고 생각하지 않습니다. 승리 기준을 제시하지 않았습니다. – Prune

+0

승리의 기준은 모든 상대방 토큰이 완료되었을 때입니다. 그리고 각 측면에서 5 번 연속으로 실패 할 경우 무승부가 있습니다. – Bob

+0

반대쪽 토큰에서 다른 토큰으로 행을 이동하는 경우 이동의 양쪽 끝에서 토큰을 제거합니까? – Prune

답변

2

실제로 갖고있는 기능은 오른쪽 아래 구석과 조각 수를 나타냅니다. D8의 단일 조각은 센터에서 3 개 이상 가치가 있습니다.

저는 AI에서 현재의 기술을 사용하는 것이 좋습니다. 우리에게 당신의 연구를 요청하는 대신, 우주 탐험 프로그램을 개발하십시오. 폭 넓은 평가 기능을 개발하고 유전자 검색을 수행하여 해당 기능의 매개 변수를 최적화하십시오.

는 예를 들어, 모든 조각을 반복하지만, 행 & COL 번호

  • 는 검은 사각형을
  • 인접한 친화적 인 조각을
  • 인접한 적의 조각을 차지

    의 기능을 사용하는 대신
  • 또는 가장자리 근처/모퉁이
  • 사용 가능한 동작

이제 평가 기능을 이러한 기능의 선형 조합으로 만드십시오. 100 개의 매개 변수 집합을 선택하십시오. 이러한 프로그램을 라운드 로빈 마상 시합 (round-robin tourney)으로 서로 대결하십시오.

상위 20 개의 피니셔를 유지하십시오. 돌연변이와 교차에 의해 매개 변수의 또 다른 80 세트를 만드십시오. 마상 시합을 반복하십시오.

프로그램 강도가 수렴 될 때까지 또는 적어도 자신을 만족시키는 수준의 게임에 도달 할 때까지 이러한 반복을 계속하십시오.

+0

이미 나무를 반복하는 미니 맥스 (miniax)와 검색 알고리즘이 있습니다. 나는 AI 플레이어의 효율성에 대한 타협없이 좋은 휴리스틱 기능을 어떻게 구현할 지 확신하지 못했습니다.검정색 셀에 조금 더 가중치를 주겠다고 생각했지만 토큰은 흰색 셀로 이동하는 더 좋은 옵션이 있더라도 검정색으로 이동하기 시작했습니다. – Bob

+1

그래서 알고리즘을 찾기 위해이 연구를 제안합니다. 이 게임을 그대로 두지 마십시오. 이 실험을 완료하여 완료 한 다음 전체적인 승자를 새 평가 함수로 사용하십시오. – Prune

관련 문제