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

[Multi-Agent Search_1] Reflex Agent (1)

컴공돌이​ 2022. 6. 5. 12:52

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

 

Reflex Agent

게임을 훌륭하게 통과하기 위해서는 multiagents.py 파일 안에 있는 ReflexAgent를 향상시켜야 할 것입니다. 기본적으로 제공되는 ReflexAgent 코드 안에는 문제 해결에 도움 되는 몇 개의 함수를 제공하고 있으며, 이 함수들은 현재 게임 상태에 대한 정보를 사용하여 동작됩니다. ReflexAgent가 잘 작동되기 위해서는 음식의 위치와 유령의 위치를 모두 고려해야 합니다. 이것이 가능하다면, Pacman은 쉽고 확실하게 testClassic 게임을 완수할 수 있을 것입니다.

 

- python pacman.py -p ReflexAgent -l testClassic

 

python pacman.py -p ReflexAgent -l testClassic 실행 시 시작되는 게임 화면
python pacman.py -p ReflexAgent -l testClassic 실행 시 출력 화면

 

testClassic 게임을 클리어했다면, 다음으로 ReflexAgent를 하나 혹은 두 개의 유령이 존재하는 mediumClassic 게임에서 테스트해 보십시오.

 

- python pacman.py --frameTime 0 -p ReflexAgent -k 1

 

python pacman.py --frameTime 0 -p ReflexAgent -k 1 실행 시 시작되는 게임 화면
python pacman.py --frameTime 0 -p ReflexAgent -k 1 실행 시 출력 화면

 

- python pacman.py --frameTime 0 -p ReflexAgent -k 2

 

python pacman.py --frameTime 0 -p ReflexAgent -k 2 실행 시 시작되는 게임 화면
python pacman.py --frameTime 0 -p ReflexAgent -k 2 실행 시 출력 화면

 

Pacman이 잘 움직였습니까? 평가 함수의 결과가 좋게 나옴에도 불구하고 가끔 2개의 유령이 있는 게임에서 죽게 될 수도 있습니다.

 

Pacman과 음식과의 거리 같은 중요한 값을 그대로 사용하는 것보다는 역수로 사용해 보십시오.

 

작성된 평가 함수는 현재의 상태와 행동을 모두 평가하지만, 프로젝트의 후반으로 넘어가면 행동을 제외한 상태만을 평가하게 될 것입니다.

 

기본 설정의 유령은 랜덤 하게 움직입니다. 만약 조금 더 똑똑하게 움직이는 유령을 상대로 게임을 플레이해보고 싶다면 -g DirectionalGhost를 사용해보십시오. 만약 랜덤성으로 인하여 Pacman의 움직임이 개선되고 있는지를 확인하기가 어려운 경우에는 -f 옵션을 사용하여 random seed를 고정한 상태로 게임을 실행해볼 수 있습니다. 또한, -n 옵션을 사용하면 여러 게임을 연속으로 실행해볼 수도 있습니다. 만약 빠르게 많은 게임을 실행해보고 싶다면 -q 옵션으로 게임 화면이 안 나오게 설정할 수도 있습니다.

 

우리는 구현된 Pacman을 openClassic 게임에서 10번 실행시켜볼 것입니다. 만약 실행된 게임에서 제한된 시간을 초과하거나, 한 번도 완수하지 못할 경우 점수는 0점이 나올 것입니다. Pacman이 5번 이상 게임을 완수하면 1점이, 10번 전부 게임을 완수하면 2점이 나올 것입니다. 또한, 게임을 완수하였을 때의 평균점수가 500점 이상이라면 추가로 1점을 받게 되고, 1000점 이상이라면 2점을 받게 될 것입니다. 아래의 명령어를 사용하면 앞에서 설명한 조건으로 게임을 실행해볼 수 있습니다.

 

- python autograder.py -q q1

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

 

게임 화면을 안 나오게 실행하고 싶다면 아래의 명령어를 사용하십시오.

 

- python autograder.py -q q1 --no-graphics

 

python autograder.py -q q1 --no-graphics 실행 시 출력 화면

 

프로젝트의 핵심은 아직 나오지 않았으니 이번 문제에 너무 많은 시간을 사용하지 말기 바랍니다.

반응형