2012-11-05 3 views
1

나는 게임 (탱크 게임 2D) (예 : link) AI 플레이어를 개발 중입니다. 내 플레이어는 최대 동전을 얻기 위해 게임을하는 5 명의 다른 플레이어 (AI도) 중 하나가 그리드 어딘가에 무작위로 나타납니다. (위에 주어진 그림을보십시오). 또한 플레이어는 서로 쏠 수 있습니다. 그리고 헬스 팩은 무작위로 그리드 어딘가에 나타납니다.게임을위한 최소 - 최대 평가 기능

그래서 max max 트리를 사용하고 가장 현명한 다음 동작을 찾으려면 평가 기능을 만들어야합니다. 문제는 여기에서 발생합니다. 나는 그러한 평가 기능에 대한 이전의 경험이 없습니다. 따라야하는 지침이 있습니까 아니면 그것을 수행 할 수있는 일반적인 방법이 있습니까? 나는 내 마음에 무언가가 있다는 것을 의미합니다. 작업. 어느 지역을 공부해야할지 제안 해 주시겠습니까? 나는 그것을 봤고 많은 것들을 발견했지만 적절한 튜토리얼이나 그와 같은 것이 없다. 고맙습니다.

+1

그렇다면 질문은 어떻게 평가 함수를 작성합니까? 이것에 대한 예가 많이 있지만, 분명히 그들의 도메인에 특화되어 있습니다.체스 보드 평가 기능은 여기에 너무 많은 도움이되지 않습니다. 당신이 염두에두고있는 것을 말해주십시오. –

+0

예, 체스 평가 기능이 도움이되지 않습니다. 나는 이런 생각을했다. 나는 선수의 필요를 우선시해야한다. 플레이어가 죽지 않아야하는 최대 우선 순위입니다. 그래서 다른 플레이어가 내게 총을 쏘면 총알 트랙에서 즉시 빠져 나와야합니다. 동전 수집은 다음에옵니다. 현명한 것처럼 나는 필요를 우선시하고 각각에 일정한 가치를 부여 할 수있다. 이와 같은 평가가 발생하면 각 상수의 곱의 합을 해당 상수 값과 함께 반환합니다. 우선 순위가 높은 최대 필요성은 더 높은 가치 상수를 가져옵니다. – Sudheera

+1

괜찮은 시작처럼 들립니다. 우선 순위가 건강 상태에 따라 달라야하는 것처럼 보입니다. 당신이 완벽한 건강 상태에 있다면, 건강 진료소를 추구하는 것은 우선 순위가 매우 낮아야합니다. 그러나, 당신이 죽음의 문에있는 경우에, 건강 팩을 추구하는 것은 동전보다는 더 귀중 할 수있다. –

답변

5

기본적으로 게임의 평가를 얻기 위해 할 수있는 가장 좋은 방법은 다음과 같습니다

  • 게임
    재생 - 당신은 피하려고 좋은있는 어떤 상황보고하려고합니다. 이러한 상황을 일반적인 평가로 공식화하십시오.
  • 연구 누군가가 이미 이와 유사한 문제를 연구했을 수도 있습니다. 그렇다면 일부 기사 나 기타 휴리스틱 기능을 제안하는 자료가있을 수 있습니다. 다음과 같이

는 내가 할 줄 것은 :

  1. 가장 가까운 적에서, 게임 (거리의 각 기술 한 측면을 발견 함수의 집합을 작성, 화재의 라인을 적, 내 건강 바, ...). 가능한 한이 목록을 확장하기 위해 게임을하고 다른 사람들이이 게임이나 유사한 게임에서 찾았을지도 모르는 아이디어를 온라인으로 보게됩니다. 단계 하나에서
  2. , 우리는 실제로 함수의 집합 가지고 : h_1(board),h_2(board),...,h_n(board)를 -하지만 우리는 아직도 내가 몇 가지 매개 변수 a_1,a_2,...,a_n를 찾아보십시오, 내 휴리스틱 기능을 만들 것입니다 우리의 휴리스틱 기능
  3. 무엇인지 모른다 :
    h(board) = a_1 * h_1(board) + a_2 * h_2(board) + ... + a_n * h_n(board
    질문은 지금 -이 매개 변수를 얻는 방법입니다. 이제 최적화 문제가 발생합니다.
    이 특정 문제에 대한 해결책 중 하나는 몬테카를로 학습입니다.

몬테 - 카를로 학습 :

몬테 - 카를로 학습의 아이디어는 에이전트 목록 (활성 성분), a_1,...,a_n에 대한 어떤 임의의 값으로 초기화 각을 만드는 것입니다

- 그리고 그들 사이에 대회가 .
토너먼트가 끝나면 가장 먼저 수행 한 에이전트를 기반으로 각 에이전트의 값을 a_1,...,a_n으로 변경하고 토너먼트를 다시 실행합니다. (이를 수행하는 한 가지 방법은 Genetic Algorithms의 "세대"단계와 유사합니다 - 교차 및 돌연변이가 있지만 다른 방법이 있습니다).

결국 몬테카를로 학습 과정은 좋은 가치를 제공해야합니다. - 보드에 대한 훌륭한 경험적 학습 기능을 제공합니다.

+0

"Monte-Carlo Learning"과 유사하게, 신경망의 훈련. through temporal differences] (http://www.research.ibm.com/massive/tdl.html)는 특정 도메인에서 매우 성공적 일 수 있습니다. 주사위 놀이에서는 빈 슬레이트에서 시작하여 실제로 놀라운 AI ​​플레이어를 제작했습니다. –

+0

글쎄, 당신이 위에서 언급 한 것에 정말 감사드립니다. 고마워요. – Sudheera