UC Berkeley CS188 Intro to AI/[Pacman Project 2] Multi-Agent Search

[Multi-Agent Search_5] Evaluation Function (1)

컴공돌이​ 2022. 6. 15. 12:00

※ 이 글은 "UC Berkeley CS188 Intro to AI"의 "Project 2: Multi-Agent Search"을 해결하는 과정을 정리한 글입니다.

Evaluation Function

Pacman을 위하여 betterEvaluationFunction에 더 좋은 평가 함수를 구현해 보십시오. 이번에 구현해야 하는 평가 함수는 Reflex Agent의 평가 함수처럼 Action을 평가하는 것이 아닌 State를 평가해야 할 것입니다. 코드를 구현하기 위하여 과제의 탐색 코드를 포함한 어떠한 도구도 사용 가능합니다. 1개의 유령이 포함되어 있는 smallClassic 게임에서 깊이가 2인 탐색 코드를 사용하여 구현된 평가 함수는 전체 소요 시간의 절반 이상을 Pacman이 적당한 스피드로 움직일 수 있게 만들어야 할 것입니다.

- python autograder.py -q q5

 

python autograder.py -q q5 실행 시 시작되는 게임 화면

 

autograder는 구현이 완료된 평가함수를 smallClassic 게임에서 10번 실행시켜볼 것입니다. 구현이 완료된 평가 함수는 아래와 같은 기준으로 점수가 매겨집니다.

autograder를 실행시켰을 때 시간 초과 없이 1번이상 게임을 이겼다면 1점을 받게 될 것입니다. 반대로 이것이 불가능하다면 0점을 받게 될 것입니다.

게임을 5번 이상 이겼다면 1점을 추가적으로 받을 수 있으며, 10번 모두 이겼다면 2점을 추가적으로 받을 수 있습니다.

게임들의 평균 점수가 500점 이상이라면 1점을 추가적으로 받을 수 있으며, 평균 점수가 1000점 이상이라면 2점을 추가적으로 받을 수 있습니다.

autograder를 실행시켰을 때, 게임들의 평균 실행시간이 30초 보다 적게 걸렸다면 1점을 추가적으로 얻을 수 있습니다. autoencoder는 상당한 양의 리소스가 있는 EC2에서 문제가 없었지만, 개인용 컴퓨터는 이보다 성능이 낮을 수도 있고 게임용 장비의 경우 이보다 성능이 높게 나올 수도 있습니다.

평균 점수 혹은 평균 실행시간에 대한 추가적인 점수는 10번 중 5번 이상 이겼을 때만 주어질 것입니다.

Reflec Agent의 평가함수처럼, 어떠한 값을 그대로 사용하는 것보다는 그 값을 역수로 사용해보는 것도 좋은 방법일 수 있습니다. 

평가 함수를 쉽게 작성하는 방법 중 하나는 선형 조합의 형태를 사용하는 것입니다. 게임의 상태에서 중요하다고 생각되는 특징의 값을 계산한 다음 그 값에 가중치를 곱한 후 결과를 전부 더하는 방식을 말합니다. 가중치의 경우 해당 특징이 얼마나 중요하다고 생각하는지에 따라 그 값을 결정해야 할 것입니다.

반응형