퍼온~바둑..!/관련 자료들~

[=] 컴퓨터 프로그램 작성을 통한

온울에 2008. 7. 2. 06:15

컴퓨터 프로그램 작성을 통한

물리적 바둑 분석 시도

작성자 :20030346 윤홍기

지도 교수: 박우석 교수님

1. 컴퓨터를 이용하여서 바둑을 분석한 이유

물리적으로 바둑을 바라 본 것을 어느 정도 사실성이 있는지 검사를 해보고 싶어서 컴퓨터로 분석을 시도 하였다. 분석을 해보기 위해서는 실제로 게임을 많이 진행해봐야 한다. 그런데 그 게임들은 최적의 수라고 판단 할 수 있는 것 들을 이용해서 해야 한다. 앞에서도 언급을 했듯이 게임이 성립하기 위해서는 둘 다 이기기 위해서 노력을 해야 한다. 그리고 의미 있는 돌들과 돌들 사이에서 생기는 에너지관계를 찾기 위해서는 분석하는 게임 결과들이 가능한 최적으로 진행된 것들을 사용해야 한다. 그래서 분석에 사용한 기보들은 “http: //www.cyberoro.com“ 에 있는 프로 기사님들의 경기 내용이다.

2. 분석프로그램의 구동 방법

(1)실행순서

1. 기보파일을 읽어서 컴퓨터가 이해 할 수 있는 형태로 변환한다.

2. 읽은 기보파일대로 게임을 진행하면서 각 턴마다 돌들의 위치,사석의 수를 저장한다.

3. 분석을 위한 데이터 스트럭쳐를 초기화 한다.

여기정보에는 게임의 결과 , 게임이 몇 턴에 끝났는지 , 각 턴마다 바둑돌들의 배치상황 , 각턴에 21*21선에 있다고 여기는 가상 돌들의 배치 상황 , 각 턴 각 위치마다의 에너지합(흑의 에너지합 ,백만의 에너지 합 ,두 에너지의 합) 이 저장이 되다. 게임결과 , 몇턴에 끝났는지 ,각 턴마다 바둑돌들의 배치 상황은 2번에서 얻은 정보로 초기화한다.

4. 분석하기

4. 1 -처음:약 10개에 해당하는 임의의 함수들을 만들어 낸다.

-나중: 함수들 리스트 중 평가 함수에 의한 값이 높던 함수들을 불러낸다.

그리고 값이 높은 함수들의 특징을 다른 낮은 함수들과 비교해서 찾아낸다.

그런 뒤 새로운 함수들을 특징을 좀 더 부각시켜서 여러 가지 만들어본다.

분석해볼 함수목록에 추가한다.

4. 2 만들어진 함수들로 각각 게임을 분석해 본다.

4. 3 분석해 본 뒤에 각각의 함수로 인한 결과를 평가 함수를 이용해서 함수들의 순위를 매긴다.

4. 4 함수리스트에 함수들의 값에 따라서 순서대로 넣어둔다.

4. 5 다시 4.1로 돌아간다.

(2)함수란 무엇인가?

함수란 여러 가지 타입들의 함수로 분석 할 수 있게 해두었다. 함수 타입이란 각각 가상의 외각의 돌들을 판단할 때, 에너지총합을 구할 때 어떤 것에 주안점을 두하고 계산을 하는 가 이다. 예를 들면 가상 외각의 돌을 판단할 때 자신에게서 가까이 있는 돌들을 가장 중요시하게 처리하는 식의 설정이다.

(3)4.2에서 만들어진 함수로 게임을 분석해보는 과정

이 과정은 3가지로 나누어진다.

1. 가상의 외각돌 들을 계산하는 과정 2. 에너지를 구해보는 과정 3. 각턴의 에너지합, 흑과 백이 각각한 집의 수, 외각 돌들 중 흑의 편 혹은 백의편의 수 ,등 나중에 평가함수가 판단할 자료로 사용할 데이터들

1. 가상의 외각돌을 계산하는 과정 -

그 전 턴의 바둑판정보를 가지고 판단을 한다. 21*21곱하기 상의 어떤 외각의 돌에서 가장가까이 실제 바둑판에 있는 돌을 가장 중요시 여긴다. 자신에게서 가까이 있는 돌들 순서로 우선순위를 주어서 어느 편을 할 것인지 결정하게 한다.

2. 바둑판 각위치의 에너지를 계산하는 과정.

현재 바둑판에 놓여 있는 바둑돌들의 정보를 가진 리스트가 있다. 저 리스트를 사용해서 (1,1) 공간부터 (19,19) 공간까지의 에너지 합을 구한다. 계산하는 법은

바둑돌 간의 거리에 따라서 에너지 값을 기록해둔 함수표 가있다.

3. 각턴의 에너지 합 구하기

여기서는 바둑 한턴 한턴 마다의 가상의 외각집 들의 흑과 백의 돌의 수 , 각턴의 에너지 총합 을 정리해서 데이터에 기록을 해둔다.

3. 기존프로그램의 서버와 클라이언트로의 확장

(1).멀티 클라이언트 멀티 서버 로 나누게 된 경위

바둑을 컴퓨터로 접근 할 때에 생기는 문제점. 바로 빠르다고 생각하는 컴퓨터도 원하는 성능을 내지 못한다는 점이 있다. 프로그램을 완성하고 테스트로 돌려보았다. 한 기보파일을 분석하여서 10가지 테스트 함수로 평가를 해보는 것만 해도 1분 30초가 소요 되었다. 그런데 분석에 사용될 기보 파일들은 400개를 넘어 가고 테스트 함수로 적어도 200개 이상을 대입해 봐야 한다고 생각을 했다. 적어도 단일 pc로는 80일 이상이 걸린다는 결과가 나왔다. 이럴 때에 필요한 것은 여러대의 컴퓨터를 사용해서 작업을 나누어서 처리를 하는 것 이다. 이러한 이유로 기존 분석 프로그램을 클라이언트와 / 서버로 나누어서 다시 작성을 해야 했다.

(2) 클라이언트 부분설명

클라이언트

클라이언트는 기보 파일을 읽어서 게임을 한번 실행 한 뒤에 서버에서 받아온 함수들로 분석을 한다. 서버에 분석결과를 보내고 다시 분석할 함수들을 받아 올때 까지 기다린다.

(단 처음에 시작할 때는 서버에서 분석할 함수들을 보내주지 않기 때문에 자체적으로 함수를 만들어서 분석 후 결과를 서버에 보내준다.)

(3)서버 부분 설명.

서버

서버는 클라이언트들이 보내준 함수분석 결과를 가지고 , 평가함수를 돌려서 그 값들을 평가해본다. 평가를 마친 뒤에는 함수들 리스트에 평가 값이 큰 순서대로 넣는다. 그리고 함수들 리스트에서 값이 높은 좋은 함수들을 골라 서 다시 분석해볼 함수들을 만들고 클라이언트에 배포 해준다.

전체 결과파일에서 함수들을 읽어와 정렬해서 배포하는 기능도 있다. 이것은 중간에 서버가 죽을 경우나 서버가 업데이트할 경우를 대비하여서 바로 지장 없이 시작할 수 있게 하였다.

클라이언트나 서버나 서로 독립적으로 실행될 수 있다. 그리고 클라이언트들이 더 많이 생기면 서버에서 자동으로 클라이언트 수를 늘려서 처리하는 기능도 가지고 있다. 그리고 서버 클라이언트로 프로그램을 나누면서 기존 분석 부분의 성능 항상도 얻을 수 있었다.

(4)이렇게 함으로 빨라진 성능과 정확한 분석에 대한 설명

분산처리에 사용된 컴퓨터는 전산동의 이브룸 컴퓨터를 사용했다. 15대에 해당하는 윈도우 피시를 사용하였고 , 서버로 사용할 컴퓨터는 저의 개인컴퓨터 (bluehope.kaist.ac.kr)과 방에 있는 룸메이트의 컴퓨터를 사용했다. 컴퓨터를 여러 대 나누어 사용함으로 한번 분석을 할 때 10종류의 함수들을 이용해서 테스트 해보았다. 기존 단일 컴퓨터에서 실행하면 470시간 걸릴 것을 2시간 만에 처리 할 수 있었다. 이러서 한번 분석마다 단일컴퓨터에서 실행할 때 얻었던 함수들보다 좀 더 많은 함수들을 동시에 정확히 분석해 볼 수 있었다.

4. 분석한 결과를 이용해서 실제 게임할 때 판세를 분석해서 보여주는 프로그램

(1)기능

기본적으로는 기보작성기와 같은 기능을 한다. 2인이 바둑돌을 놓으면서 그냥 게임을 진행 할 수 있다. 여기에 현재 게임 상태를 분석해주는 모듈을 장착 한다. 현제 누가 더 많은 집을 가지고 있는지 , 어떤 구역에서 힘(세력)합과 에너지 합을 별도로 보여 줄 수 도 있다. 또 가상의 외각의 돌 들을 어느 편이 더 많이 자기편으로 만들었는지도 보여줄 수 있다.

5. 분석 결과

6.세부 프로그램 세팅

5.6번항목은.. 지금 현재 8월 14일 현재까지도 데이터를 받고 있음. 데이터에 이것저것 계속 추가를 하면서 분석이 늦어지고 있습니다. 이 부분에 대하여서는 추가로 분석결과부분만 따로 레포트를 제출하도록 하겠습니다.

특히 프로그램세팅을 계속 바꾸어주면서 결과를 얻어내고 있어서 시간이 좀더 걸리게 되는 것 같습니다.

7. 프로그램 스크린샷

사용자 삽입 이미지

키보드로 입력을하면 되고 잘못된 입력이나 입력이 없을 경우에는 다시 입력하라고 한다.

c :클라이언트로 실행하기 - 다음화면에서 클라이언트 번호를 입력하라고 한다.

s :서버로 실행하기 - 다음화면에서 클라이언트들 에게 배포할 함수들의 가지 수 세팅

g :게임을 해보면서 결과를 보기 -게임을 해보면서 아래와 같이 결과들같이 함수들로

분석된 결과를 볼 수 있다.

사용자 삽입 이미지
그림 2 프로그램에서 게임을 실행하는 과정보여주기

사용자 삽입 이미지

그림 3 게임을 실행해보고 분석결과 보여주기

x_Etotal 은 흑의 에너지합 y_Etotal은y의에너지합

xhouse는 흑의 집이라고 판단되는 크기

bound x는 외각의 돌들중 흑의 돌이라고 판단되는 수들






사용자 삽입 이미지

그림 4

생각하는 함수들을 원하는 평가함수로 분석한 값들. 정렬되어서 기록되고 있음. 그리고 더해진 때라고 보여이는 것은 언제 만들어진 함수인지 나타내준다.