SL 3.0 최종 결과 보고

SL 3.0
최종 결과 보고

SL 3.0은 2017 삼성라이온스 타자들의 기록을 기반으로 타순의 평균득점을 비교하는 소프트웨어이다.





1. samsung.py : 삼성라이온즈 타자들의 타격 기록과 진루 기록을 크롤링 한 후 9명을 선발해내는 파일

 1) Line 7-69 : NC 다이노스 홈페이지에서 타격 기록 크롤링
   - ​선수명포지션타수안타, 2루타, 3루타홈런볼넷, OPS, 병살타

 2) Line 71-84 : 동일 포지션에서 타수가 많은 선수와 지명타자 선발 
 3) Line 124-558, 1160-1194 : STATIZ라는 야구 통계 기록 사이트에서 진루 기록 크롤링
   - ​Out 시 1루 주자가 2루 이상 진루, 2루 주가가 3루 이상 진루, 3루 주자가 홈 진루 안타 시 1루 주자가 3루 이상 진루, 2루 주자가 홈 진루 / 2루타 시 1루 주자가 홈 진루에 관한 횟수 및 확률병살타 상황 횟수
 4) Line 1299-1309 : samsung.txt에 타격 기록과 진루 기록을 입력


2. game.py : main.py에서 import되는 파일
 
 1) Line 16-41 : 타격 기록이 들어가도록 하는 Class

 2) Line 57-105 : samsung.txt 파일을 열어 진루 기록을 비어있는 Dict에 넣음

 3) Line 142-396 : 타격 결과로 인한 주자들의 움직임을 구현하고 출력하는 함수
   - 24가지 야구 상황 적용 : 주자 없음, 1, 2, 3, 1-2, 1-3, 2-3만루 무사, 1, 2

 4) Line 398-430 : 9이닝 동안 실시하며 경기가 종료된 후 총점을 출력하는 함수

 5) Line 434-694 : 입력한 라인업에 따라 Simulation이 실행되고 평균 점수를 출력하는 함수

3. main.py : Simulation이 진행되는 파일

 Line 13 : Simulation을 실행하기 위해서 기본적으로 ‘~lineup.txt’라는 파일이 존재해야 함
   - ​testlineup.txt, 100lineup.txt 등의 파일이 있어야 하며 test, 100만 입력하면 실행
4. test.py : main.py와 같이 Simulation이 진행되는 파일

 1) main.py는 1,000,000회 단위로 실행되지만, test.py는 10,000회 단위로 실행됨

 2) main.py는 실행시간이 오래 소요되기 때문에 상대적으로 실행시간이 적게 하도록 하는 소규모 버전 파일
5. visualization.py : Simulation 후 평균 점수를 보여주는 파일

 1) Line 3-54 : 감독개발자 기준의 라인업으로 Simulation을 진행한 후 각각의 파일을 열어 평균 점수를 저장
 
 2) Line 58-67 : 저장한 평균 점수 시각화

6. visualization2.py : visualization.py와 같이 평균 점수를 보여주는 파일

 visualization2.py는 감독, 개발자 기준 라인업에 무작위로 선정한 라인업의 Simulation 평균 점수도 시각화 되어있음


7. khslineup.txt, kglineup.txt, kmjlineup.txt, anylineup.txt : 감독 및 개발자 기준의 라인업과 무작위 라인업의 Simulation을 진행한 후 평균 점수가 저장되는 파일
​ 1) khslineup.txt : 감독 기준 라인업
 2) kglineup.txt, kmjlineup.txt : 개발자 기준 라인업
 3) anylineup.txt : 무작위 라인업
 
 4) main.py에서 실행할 때마다 각각의 텍스트 파일에 평균 점수가 저장되므로 visualization.py의 결과가 바뀔 수 있음
 

8. defaultlineup.txt : 임의의 라인업으로 저장된 기본 파일

​ 1) main.py를 실행시켜 진행하면 됨

 2) ​다른 내용을 변경하지 않고 선수의 이름 순서만 변경시키면 원하는 타순에 따른 결과가 얻어짐

 3) 첨부된 라인업 텍스트 파일과 달리 defaultlineup.txt는 Simulation이 실행되지 않은 파일임
9. atbat_hit_homerun.py, bb_homerun.py, bb_ops.py : 타격 관련 시각화 파일

 1) samsung.py와 samsung.txt를 이용해서 전체 타자의 타격 관련 시각화
 2) 각각의 파일을 실행시키면 확인할 수 있음
10. 모듈
​ 1) samsung.py에서 requests, BeautifulSoup4 모듈이, visualization.py,
visualization2.py, atbat_hit_homerun.py, bb_homerun.py, bb_ops.py에서 matplotlib 모듈이 사용됨

 2) 명령 프롬포트(CMD) 창을 열어 파이썬 하위 폴더인 Scripts로 이동 후 pip install requests(BeautifulSoup4, matplotlib)를 입력하면 설치됨


​11. Term-Project를 진행한 결과

 아래는 감독의 주요 선발 라인업과 개발자가 선발한 라인업 및 무작위로 선정한 라인업 Simulation 결과를 비교한 사진입니다. 감독의 라인업이 개발자보다 좋지 못하다는 점에서 2017 시즌 삼성라이온즈 성적이 왜 하위권이었는지 알 수 있었습니다. 그리고 왜 타순을 아무렇게나 짜면 좋은 성적이 날 수 없는지도 확인할 수 있었습니다. 결론적으로 감독의 선발 라인업은 최적의 타순이 아니었음을 증명했습니다.

<visualization.py>

<visualization2.py>


* 각 파일은 첨부파일로 확인바랍니다.

역할 분담
김민재 : 조장, 크롤링, visualization
강건 : 야구 시뮬레이션(game.py) 설계 및 제작


댓글

이 블로그의 인기 게시물

소프트웨어융합개론 : Term Project 제안서