ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2025 KBO 일정 톺아보고 개선하기 (AI와 시각화를 곁들인)
    카테고리 없음 2025. 1. 18. 14:01

    1. 발단

    드라마 스토브리그 를 보다가 우연히 단장 회의 장면을 보게 되었습니다.

    https://youtube.com/shorts/zIvEyFzEFds?si=jNZDWkycb-aEFD3q

    스토브리그 단장회의 장면

     

    • 서울, 수도권에 굉장히 많은 팀들이 몰려있기 때문에 지방팀들이 경기를 하기 위해서 이동을 하다 보면 버스 안에서 굉장히 많은 시간을 보내게 됩니다. 저는 이것이 불합리적으로 적용될 수 있다고 생각합니다.
    • 자 우리팀 야구 못하는 얘기는 그만하시고 (ㅠㅠ) 야구를 못하는 만큼만 지고 싶지 멀리서 이동하느라 피곤해서 지는 경기는 없어야겠지요

    처음에는 '대한민국처럼 작은 나라에서 이동 거리가 그렇게까지 차이가 날까?' 하는 생각이 들었습니다. 하지만 드라마 작가가 근거 없는 설정을 만들지는 않았을 것 같아서 찾아보니 실제로 이런 기사들이 있더군요.

    태평양 왕복 거리…롯데, 피곤한 ‘이동거리 1위’ https://www.youtube.com/watch?v=WcvTEtw6he0
    알쏭달쏭' 프로야구 경기 일정의 비밀 / YTN (Yes! Top News) https://www.youtube.com/watch?v=oOe1h7LvmPU&t=6s

    먼저 선수단이 가장 중요하게 여기는 건 이동 거리. 대부분 버스로 움직이는데, 수도권과 비수도권을 계속 왔다 갔다 하면 체력과 컨디션을 유지하기 힘듭니다. 때문에 이동 거리가 가장 긴 남쪽 지역의 3개 구단은 무더위가 심할 때 수도권에서 한 차례 원정 9연전을 할 수 있는 특혜 아닌 특혜를 받습니다. (생략)
    구단은 마케팅 쪽에 관심이 더 높습니다. 관중이 많은 주말에 각 팀의 홈 경기 수를 최대한 비슷하게 만드는 게 중요합니다. 서울에도 팬들이 많은 몇몇 비수도권 팀들은 두산이나 LG와 원정 경기가 주말에 많이 배정되길 원합니다. 원정팀도 관객 수입의 28%를 가져가기 때문입니다.

     

    그런데 경기 일정을 짜는 것이 제가 회사에서 하는 일과 굉장히 비슷합니다. (저는 계약 운임을 바탕으로 운송 비용을 최소화하는 차량 배차 프로그램을 개발하고 있고, 또한 공정 순서를 최적하하는 프로그램을 개발했습니다.)

    그래서 충분히 할 수 있겠다는 생각을 했고, KBO 일정을 모든 구단에 잘 수립하는 것은 프로야구 구단의 공정한 경쟁의 시작이기 때문에 분석과 개발을시작하게 되었습니다.

    2. KBO가 수립한 일정 분석하기

    KBO가 2024년 일정(KBO 보도자료 | 미디어/뉴스 | KBO)을 발표하였습니다. 이 계획을 바탕으로 먼저 KBO가 수립한 일정의 이동 거리휴일 경기 수를 분석하였습니다.

    2.1 이동 거리 분석하기

    먼저 구장 간 거리는 경기 종료 시간인 오후 10시 기준으로 카카오맵에서 각 구장별로 이동 거리를 측정하였고, 출발지와 도착지의 거리는 대칭이라고 가정했습니다. (각각 측정하기 귀찮아서)

     

    표1 ) 구장 별 이동거리

      고척 광주 대구 문학 사직 수원 잠실 창원 대전
    고척 0 311.7 308.2 24.9 407.2 39.2 31.1 361.6 173.4
    광주 311.7 0 210.8 312.4 254.6 273.3 291.7 205.3 175.6
    대구 308.2 210.8 0 314.1 95.8 276.2 290 90.5 161.8
    문학 24.9 312.4 314.1 0 405.8 43.2 46.2 367.4 182.8
    사직 407.2 254.6 95.8 405.8 0 375 388.9 56.9 262
    수원 39.2 273.3 276.2 43.2 375 0 31.4 329.4 143.3
    잠실 31.1 291.7 290 46.2 368.9 31.4 0 343.4 163.7
    창원 361.6 205.3 90.5 367.4 56.9 329.4 343.4 0 215.2
    대전 173.4 175.6 161.8 176.7 262 143.3 163.7 215.2 0

     

    제가 구한 구장 별 이동 거리와 2025 KBO 일정을 바탕으로, 구단 별 이동 거리를 분석해 본 결과, 올해 가장 이동 거리가 긴 구단은 KIA 와 롯데입니다. 반면 이동 거리가 가장 짧은 구단은 두산  SSG 입니다. 지방팀의 이동거리가 길고 수도권팀의 이동거리가 상대적으로 짧습니다.

     

    2025 KBO 정규시즌 경기 일정.docx
    0.04MB

     

    표2) 구단 별 이동 거리의 합 (2025 KBO 일정 )

    구단  이동거리(km)  평균 차이(km)
    두산 6,711 -584
    SSG 6,791 -505
    KT 6,933 -362
    LG 6,936 -359
    한화 7,220 -76
    삼성 7,231 -65
    키움 7,235 -61
    NC 7,837 542
    롯데 7,978 683
    KIA 8,084 788
    평균 7,296 0
    범위 6,711~8,084 (1,373) -584~788(1,373)

    2.2 이동 횟수 분석하기

    저는 이동 거리보다 이동 횟수가 더 중요할 수 있다고 생각합니다.

    • 예를 들어서 SSG가 홈에서 2번 경기를 치루고 사직으로 한 번 이동하는 것과, 홈에서 1번 경기를 치루고 고척에서 경기를 치루고 다시 문학으로 돌아오는 일정 중 선택할 수 있다면 무엇을 선택할까요? 비록 이동 거리가 길지만 한번만 이동하는 일정이 훨씬 낫지 않을까요?

    한화, 키움, KT는 이동 횟수가 가장 많은 구단입니다. 이들은 지리적으로 중간에 위치해 있어서인지 다른 구단보다 자주 이동합니다. 반면 두산은 단 32회만 이동하는데, 이는 평균보다 4회 적을 뿐만 아니라 이동 거리도 매우 짧습니다.

     

    표3) 구단 별 이동 횟수 (2025 KBO 일정 )

    구단 이동 횟수 평균 차이
    두산 32 -4
    LG 35 -1
    NC 35 -1
    롯데 35 -1
    KIA 36 0
    SSG 36 0
    삼성 36 0
    KT 38 2
    키움 38 2
    한화 38 2
    평균 36 0
    범위 32~38 -4~2

     

    2.3 홈경기 휴일 배정 수 기준

    모든 구단은 마케팅 측면에서 주말 및 공휴일에 많은 홈경기를 하기를 원하므로, 이를 공정하게 배분하는 것이 중요합니다.

    2025년 일정 중 주말(토요일, 일요일) 은 총 44일이며, 주요 공휴일은 아래와 같습니다.

    • 5월 5일 어린이날(월요일)
    • 5월 6일 석가탄신일 대체공휴일(화요일)
    • 6월 6일 현충일 (금요일)
    • 8월 15일 광복절 (금요일)

    LG, KIA, 한화가 주말이나 공휴일에 상대적으로 경기를 적게 하고, 주중에 많은 경기를 하게 됩니다. 반면에 두산이나 한화 팬들은 주말이나 공휴일에 상대적으로 경기를 많이 하게 됩니다

     

    표4) 2025 KBO 일정 구단 별 홈경기의 휴일 배정 수

    구단 휴일배정 수 평균 차이
    LG 22 -3
    KIA 23 -2
    한화 24 -1
    NC 25 0
    SSG 25 0
    롯데 25 0
    KT 25 0
    삼성 25 0
    두산 28 3
    키움 28 3
    평균 25 0
    범위 22~28 -3~3

     

    2.4 구단별 이동 경로 보기

    일단 가장 정확한 것은 눈으로 보는 것이기 때문에 이동 경로를 시작화해보았습니다. 시각화는 태블로(tableau)라는 시각화도구를 사용하였습니다. 아래 링크를 통해서 원본으로 확인하시면 더 쾌적하게 확인할 수 있습니다

    https://public.tableau.com/shared/H4NNGYT8X?:display_count=n&:origin=viz_share_link

     

    2025_kbo_result

    2025_kbo_result

    public.tableau.com

     

     

    KIA, 롯데 구단의 이동 거리가 긴 이유를 아래 시각화를 통해 더 정확하게 확인할 수 있습니다. 수도권에 많은 팀들이 모여 있기 때문에 상대적으로 장거리 이동이 많을 수밖에 없습니다.

    • 따라서 이 장거리 이동 계획을 얼마나 효과적으로 세우느냐가 중요한 포인트입니다. 특히 롯데의 경우 8월 1일 이후 이동이 비효율적으로 보입니다.  (사직→ 고척, 고척 → 사직, 사직 대전, 대전 사직)
    • 원정 경기의 경우 최소 2연전 이상을 하는 것이 장기적으로 효율적입니다. 특히 잠실이나 고척으로 이동하려면 그 중간에 다른 구장을 거쳐서 원정 경리를 하나라도 더 치루는 것이 단기적으로는 힘들더라도 장기적으로 효율적입니다.

    표5) 롯데 구단의 이동 거리 상세 분석 (2025 KBO 일정)

    2.5 종합 분석 결과

    두산 구단이 이동 거리, 이동 횟수, 마케팅 등 모든 측면에서 좋은 일정을 부여 받았습니다.

    • 롯데와 KIA는 이동 거리가 가장 길었고, 특히 롯데의 경우 잠실, 고척을 오고 가는 경우가 많아 상대적으로 피곤할 수 있는 일정입니다.
    • 마케팅 측면에서는 키움과 두산이 휴일에 28일이나 경기를 열지만 LG의 경우는 22일밖에 경기를 열지 않습니다.

    지방 구단인 KIA, NC, 롯데 등이 긴 이동 거리를 가지며, 이는 원정 경기 일정이 효율적이지 못한 것이 원인으로 보입니다.

    3. KBO 일정 업그레이드 (AI와 시각화를 곁들인)

    3.1 주요 규칙

    이제는 KBO가 만든 일정을 업그레이드 해보겠습니다. 먼저 아래 규칙을 준수하였습니다.

    • 개막전은 전년도 순위 기준으로 상위 5개 팀의 홈 경기로 진행
      • NC vs KIA (광주)
      • 키움 vs 삼성(대구)
      • 롯데 vs LG (잠실)
      • 한화 vs KT (수원)
      • 두산 vs SSG (문학)
    • 어린이날은 격년제 편성 원칙에 따라 잠실(항상 고정), 고척, 대전, 사직, 창원에서 진행
    • 올스터전은 7월 12일 대전 개최 (올스타 브레이크 7월 11일~16일)

    또한 원정경기는 최대 3연속으로 제한하였습니다. 이전에 “지옥의 4연속 원정” 이런 기사를 많이 봤었던 것 같아서요.

    3.2 개발 도구

    업그레이드의 주요 목표는 각 구단 별로 이동 횟수, 이동 거리, 휴일 배분 일수를 공평하게 나누는 것이었습니다. 이를 위해 AI Constraint Solver인 Optaplanner를 사용하였습니다.

    https://www.optaplanner.org/

     

    The fast, Open Source and easy-to-use solver

    Solve any constraint optimization problem easily, including the Vehicle Routing Problem, Employee Rostering, Maintenance Scheduling and many others.

    www.optaplanner.org

     

    또한 데이터 시각화를 위해서 Tableau를 활용했습니다.

    public.tableau.com

     

    Discover | Tableau Public

    Explore stunning data visualizations and the talented community that creates them on Tableau Public.

    public.tableau.com

     

    3.3 KBO vs AI Solver

    AI Solver인 Optaplanner를 활용하여 개발을 진행하였습니다. KBO 결과를 개선하는 방향으로 진행하였고, 구단 별로 이동 거리, 이동 횟수, 휴일 경기 배정 수를 공정하게 배분하도록 코드를 작성하였습니다. 그리고 부가적으로 전체 10개 구단의 총 이동 거리 및 이동 횟수를 줄이는 방향으로 진행하였습니다. 

     

    여차여차(??)해서 개선한 결과는 아래와 같습니다. 아래 파일을 다운받으시면 전체 결과를 엑셀로 보실 수 있습니다.

    opta_solver_result.xlsx
    0.07MB

     

    엔진이 실행한 결과가 KBO가 수립한 결과보다 모든 구단에게 공정하였습니다. 특히 이동 거리와 이동 횟수의 평균도 크게 감소 시켰습니다. 아래 링크 클릭하시면 이동 거리, 이동 횟수, 휴일 배정 수를 KBO 결과와 AI Solver 결과를 비교할 수 있습니다. (링크를 클릭해서 보세요!)

     

     

    2025 Compare Finish

    2025 Compare Finish

    public.tableau.com

    각 구단 별 이동 거리

    AI Solver 결과가 KBO가 수립한 결과보다 이동거리를 감소시켰고, 구단 별로 공정하고 이동 거리를 배분하였습니다.

    • 구단별 전체 평균 이동거리는 기존 7,295km에서 6,978km으로 감소시켰고, 구단 별로 보면 NC가 가장 많게 1,046km, KIA는 804.9km, 롯데는 736km 를 감소시켰습니다.
    • 구단별 이동 거리의 범위도 1,372km서 487.6km으로 크게 감소시켰습니다.

    표5) KBO 일정과 AI Solver 일정 결과 비교 (이동 거리)

    구단 KBO AI Solver 증강분
    KIA 8,083.6 7,278.7 -804.9
    KT 6,933.4 7,007.8 74.4
    LG 6,936.3 7,032.3 96
    NC 7,837.2 6,791.1 -1,046.1
    SSG 6,790.7 6,876.9 86.2
    두산 6,711.1 6,946.1 235
    롯데 7,978.2 7,242.1 -736.1
    삼성 7,230.8 6,861.1 -369.7
    키움 7,234.8 6,799.5 -435.3
    한화 7,219.7 6,952.2 -267.5
    평균 7,295.58 6,,978.78 -316.8
    범위 1,372.5
    (6,711.1~8,083.6)
    487.6
    (6,791.1~7,287.7)
    -884.9

     

    각 구단 별 이동 횟수

    AI Solver의 결과가 KBO가 수립한 결과보다 이동 횟수를 감소시켰고, 이동 횟수도 구단 별로 공정하게 배분하였습니다.

    • 구단별 이동 평균 횟수를 35.9에서 34.1로 줄일 수 있었습니다.
    • 가장 많은 이동을 하였던 KT, 한화, 키움의 이동 횟수를 각각 5번, 4번, 3번 줄일 수 있었습니다.
    • 구단 별 이동 횟수의 편차도 기존 (32~38)보다 훨씬 개선(33~36)하였습니다.

    표7) KBO 일정과 AI Solver 일정 결과 비교 (이동 횟수)

    구단 KBO AI Solver 증감분
    KIA 36 34 -2
    KT 38 33 -5
    LG 35 36 1
    NC 35 35 0
    SSG 36 34 -2
    두산 32 33 1
    롯데 35 33 -2
    삼성 36 34 -2
    키움 38 35 -3
    한화 38 34 -4
    평균 35.9 34.1 -1.8
    범위 6
    (32~38)
    3
    (33~36)
    -3

    각 구단 별 홈경기 휴일 경기 배정 수

    AI Solver의 결과가 KBO가 수립한 결과보다 구단 별로 휴일 경기 수를 골고루 배분시켰습니다.

    • KBO가 수립한 구단 별 휴일 경기 수는 22개에서 28개로 편차가 다소 크게 나타났으나 AI Solver에서는 이를 24~26개로 개선할 수 있었습니다.

    표8) KBO 일정과 AI Solver 일정 결과 비교 (휴일 배정 수 )

    구단 KBO AI Solver 증감분
    LG 22 24 2
    KIA 23 26 3
    한화 24 24 0
    KT 25 24 -1
    NC 25 25 0
    SSG 25 26 1
    롯데 25 24 -1
    삼성 25 26 1
    두산 28 26 -2
    키움 28 25 -3
    평균 25 25 0
    범위 6
    (22~28)
    2
    (24~26)
    -4

     

    각 구단 별 이동 상세 경로 

    Tableau를 활용하여 AI Solver로 개선한 결과를 바탕으로 구단 별 상세 경로를 시각화해보았습니다. (아래 링크를 클릭해주세요! 임베딩 된 대시보드는 숫자가 표시되지 않은 부분이 있어서 정확한 결과를 확인하기 어렵습니다.)

    https://public.tableau.com/shared/RBG67GM42?:display_count=n&:origin=viz_share_link

     

    distance_detail_analysis_solver_original

    distance_detail_analysis_solver_original

    public.tableau.com

     

    AI Solver가 어떻게 개선했는지는 아래 결과를 보면 알 수 있습니다.

    • 롯데 구단의 경우 8월 1일 이후 “사직 → 고척 → 사직 → 대전 → 사직 “ 으로 이동하게 됩니다.

    • 그러나 AI Solver는 이를 개선하여 “사직 → 고척→ 대전 → 사직” 으로 이동하게 만들어줍니다. 이로서 이동 횟수와 이동 거리가 줄어들게 됩니다.

     

    NC의 경우에는 수도권 원정시 가급적 "잠실, 수원, 고척"을 방문시 한꺼번에 방문하도록 계획이 생성되었습니다. 이로서 이동거리가 기존 7,837.2km에서  6,791.1km으로 1,046.1km만큼이나 줄일 수 있었습니다. (AI Solver가 똑똑하네요.)

    4. 마치면서

    소파에 누워서 스토브리그를 보다가 단장끼리 이동 거리를 두고 싸우는 모습을 보고 저게 진짜인가 라는 생각이 들어서 찾아보고 해볼까 생각했던 것이 이렇게까지 왔습니다.

     

    이 글을 읽으시면서 어떤 분들은 이 문제가 이렇게까지 에너지를 쏟을 일인가 라고 생각하실 수 있는데요.. 사실 개발하는 작업은 정말 금방이었습니다. 오히려 글을 쓰고 어떻게하면 시각화하여 보여줄까 그리고 정말 맞는 결과인가 검증하는 작업이 대부분이었습니다.

     

    특히 한 번 만들어놓으면 데이터만 바꾸면 되는 것이기 때문에, 힘들게 경기를 마친 선수들의 이동 시간을 줄이고 구단 별로 공정한 경쟁 환경을 만드는데 기여할 수 있다면 매우 남는 장사라고 합니다.

     

    이게 사람의 직관으로 하기에는 너무 어려운 작업이지만 개발자가 작업하기에는 그렇게 어려운 일이 아닙니다. 이런 작업들은 개발자와 협업하면서 보다 공정하게 구단들이 경쟁할 수 있는 환경을 만들면 좋을 것 같습니다.

     

    스토브리그 드라마 대사를 인용하면서 마무리합니다.

     

    야구를 못하는 만큼만 지고 싶지 멀리서 이동하느라 피곤해서 지는 경기는 없어야겠지요

     

    댓글

Designed by Tistory.