ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2023 프로야구 정규시즌 일정 만들기
    2023 KBO 일정 톺아보기 2023. 1. 1. 17:46

    1. 배경

    지난 글 (https://absorbed-in-optimization.tistory.com/15)을 통해 2023년 KBO 정규시즌 일정을 톺아보았습니다. 요약하자면 아래와 같습니다.

     

    - 이동 일수 및 거리 괌점에서 KIA 가 굉장히 불리한 일정을 치루고, 두산과 SSG가 유리한 일정을 치루게 됩니다.

    - 마케팅 관점에서는 두산, 롯데, NC가 어린이날을 포함하여 주말에 많은 홈경기를 치루게 됩니다.

     

    개발자로서 조금 더 공정한 정규 시즌 일정을 만들어보고,  팬분들과 공유하면 의미 있는 일이 될 것 같아서 진행해 보았습니다. 다만 제가 구축한 정보와 KBO가 사용하는 정보(구단 별 이동 거리, 휴일에 대한 기준)들이 KBO와 다를 수 있기 때문에 재미로만 봐주시면 감사하겠습니다. 기준 정보를 어떻게 설정하였는지는 지난 글 참고 부탁드립니다. 

    2. 주요 고려 사항

    계획을 세우기 위해 제가고려한 사항은 아래와 같습니다. 혹시 반영하지 못한 부분 있으면 알려주시면 감사드리겠습니다.

    - 개막 2연전전은 2년 전 순위로 결정되기 때문에, KBO 일정을 그대로 따랐습니다.

    - 어린이날은 구단마다 격년으로 돌아가면서 치루기 때문에, 5개 구단(두산, 롯데, NC, 키움, 한화)에서 홈경기를 치루는 것으로 고정하였습니다.

    - 목요일 이동 중 7월 13일(목)은 제외하였습니다. 7월 15일 올스타전이 열리고 7월 21일 경기가 열리기 때문에 이동 후 충분한 휴식 시간이 있다고 봤기 때문입니다.

    - 다만 홈 5연전을 치루는 것은 반영하지 않고 작년처럼 홈 2연전만 반영하였습니다. 홈 5연전은 초기에는 이동 거리를 균등하게 배분할 수 있지만, 시즌 중후반으로 가게 되면  전체적으로 이동거리를 더 크게 증가시키게 됩니다.  (혹시 정말 반영이 필요하다면 몇 줄 추가하여 반영할 수 있습니다.)

    "개막 2연전은 2년 전 상위 팀이 홈 개최권을 갖고, 다음 주중 3연전까지 이동 거리를 줄이기 위해 홈 5연전을 치른다.  그다음 3연전은 홈 경기를 치르지 못한 팀들이 안방에서 경기를 연다.
    KBO, 2023시즌 일정 발표... 드디어 '2연전' 사라진다 (daum.net)

    3. 주요 목적식 정의

    아래와 같이 주요 목적식을 정의하고, 이에 맞게 계획이 생성되도록 개발하였습니다.

    1. 구단별 목요일 이동(이동 일수 및 거리)을 균등하게 배분합니다. 

    2. 구단별 전체 이동(이동 일수 및 거리)을 균등하게 배분합니다.

    3. 구단별 휴일 홈경기 배정을 균등하게 배분한다.

    4. 이론적 배경 및 개발 방법

    144경기의 일정을 수립하는 것은 매우 큰 경우의 수를 다루는 문제입니다. 제가 알기로는 이 문제를 다항 시간 내 풀 수 있는 어떠한 알고리즘도 없습니다. 이에 대한 이론적 배경은 다음 글(https://absorbed-in-optimization.tistory.com/7)을 참고 부탁드립니다. 따라서 다양한 시뮬레이션 (강화 학습, 메타 휴리스틱 등)을 적용해 볼 수 있는데, 저는 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

     

    4. 결과

    3.1 구단별 상세 일정 결과

    - 혹시라도 다운로드가 안되시면  sindeaf@gmail.com로 메일 보내주시면 확인하는대로 보내드리도록 하겠습니다.

    https://docs.google.com/spreadsheets/d/1iCI28QLLtwOTqZVr_1KjkWUlnoIXCgNY/edit?usp=sharing&ouid=101115414770435008922&rtpof=true&sd=true (기존 결과)

    https://docs.google.com/spreadsheets/d/1fTAsShQjTkVrAGeVKzf7urPoRmQ4dKbC/edit?usp=sharing&ouid=101115414770435008922&rtpof=true&sd=true  (개선된 결과)

     

    - 또한 tableau를 활용하여 기본 결과와 개선 결과를 구단 별로 상세하게 확인하실 수 있는 대시보드를 구축하였습니다. 구단에 따라 일정이 어떻게 변경하였는지 비교해보시면 재미있으실 것 같습니다.

     

    3.2 구단 별 이동일

    - Solver가 수립한 계획이 기존 계획 대 최소-최대 차이가 2일에 지나지 않는 반면, KBO가 수립한 계획은 7일이나 차이가 납니다. KIA는 기존 21일에서 17일로 감소하게 되고, 두산은 기존 14일에서 15일로 증가합니다.

     

    표1 구단 별 이동일 비교 (단위 일)

    구단
    KBO Solver
    목요일 이동 그 외 이동 목요일 이동 그 외 이동
    KIA 21 16 37 17 18 35
    KT 18 19 37 17 19 36
    LG 16 18 34 17 17 34
    NC 16 19 35 16 19 35
    SSG 17 19 36 16 19 35
    두산 14 19 33 15 17 32
    롯데 18 17 35 15 19 34
    삼성 17 19 36 17 20 37
    키움 20 18 38 17 20 37
    한화 18 20 38 17 18 35
    범위 14~21(7) 16~20(4) 33~38(5) 15~17(2) 17~20(3) 32~37(5)

     

    Tableau를 통해 비교하여 보실 수 있습니다. 우측 상단에 시나리오를 선택하여 제가 만든 Solver가 수립한 계획과 KBO 계획을 비교하실 수 있습니다. 

     

     

    3.3 구단 별 이동 거리

    - 목요일 이동 거리 기준으로 Solver가 수립한 계획이 최소-최대 차이를 기존 2,372km에서 586km으로 줄였습니다. 전체 통행거리 기준으로도 기존 2,354km에서 1,067km으로 45% 수준으로 줄였습니다.

     

    표2 구단 별 이동 거리 비교 (단위 km)

    구단
    KBO Solver
    목요일 이동 그 외 이동 목요일 이동 그 외 이동
    KIA 5,142 3,187 8,329 3,266 4,428 7,694
    KT 3,344 2,715 6,059 3,009 3,694 6,703
    LG 4,025 3,490 7,515 3,512 3,625 7,137
    NC 3,380 3,909 7,288 3,182 3,974 7,157
    SSG 2,770 3,730 6,500 3,084 3,693 6,776
    두산 3,328 3,486 6,814 3,373 3,365 6,738
    롯데 4,855 2,875 7,731 3,497 4,146 7,643
    삼성 3,412 5,001 8,413 2,980 4,790 7,770
    키움 3,936 3,685 7,621 3,202 4,541 7,743
    한화 3,139 3,777 6,916 3,566 3,456 7,022
    범위 2770~5142
    (2,372)
    2715~5001
    (2286)
    6059~8413
    (2,354)
    2980~3566
    (586)
    3365~4790
    (1425)
    6703~7770
    (1,067)

    Tableau를 통해 비교해보실 수 있습니다. 우측 상단에 시나리오를 선택하여 제가 만든 Solver가 수립한 계획과 KBO 계획을 비교하실 수 있습니다. 

     


    3.4 구단별 휴일 경기의 홈경기 배정

    - 휴일의 홈경기 배정은 보다 공평해졌습니다. 기존 계획 대비 휴일 경기 배정 일수의 차이가 기존 22~27일에서 24~26일로 줄어들었습니다.

    - 또한 어린이날은 1년 중 가장 큰 행사입니다. 따라서 어린이날 홈경기를 배분받지 못한 구단이 주말 경기를 더 배정받을 수 있도록 가중치를 조절하였습니다. 

     

    표3 구단 별 주말 및 공휴일의 홈경기 배정 일수 (단위 일)

    구단
    KBO Solver
    어린이날 주말경기 그 외 휴일 전체 휴일 어린이날 주말경기 그 외 휴일 전체 휴일
    KIA 0 22 2 24 0 26 0 26
    KT 0 24 0 24 0 24 1 25
    LG 0 22 0 22 0 24 1 25
    NC 1 24 1 26 1 22 1 24
    SSG 0 24 0 24 0 24 1 25
    두산 1 24 2 27 1 22 1 24
    롯데 1 24 2 27 1 22 1 24
    삼성 0 22 2 24 0 22 2 24
    키움 1 22 1 24 1 22 1 24
    한화 1 22 0 23 1 22 1 24
    범위 1~1(0) 22~24(2) 1~2(1) 22~27(5) 1~1(0) 22~26(4) 22~27(5) 24~26(2)

     

    Tableau를 통해 비교해보실 수 있습니다. 우측 상단에 시나리오를 선택하여 제가 만든 Solver가 수립한 계획과 KBO 계획을 비교하실 수 있습니다.

    4. 정리하며

    이 계획은 현실과 부합하지 않을 수 있습니다. 특히 상대적으로 관중 수가 많은 계(예를 들어 여름)의 주말 경기는 조금 더 가중치를 두고 있을지도 모릅니다. 또한 숙소가 구장 근처라고 하기에 너무 멀수도 있습니다. 또한 여러 기사들을 통해 제약 조건들을 면밀히 검토하였지만 고려하지 못한 것이 있을 수도 있습니다.

     

    다만 말하고 싶은 것은 이것입니다. 144경기의 일정을 수립하는 것은, 수 많은 경우의 수에서 최적의 조합을 찾는 매우 어려운 문제입니다. 혹시 KBO가 메뉴얼 방식으로 계획을 세우고 계시거나, 사용하시는 프로그램이 효과적이지 않다고 생각하신다면, 외부에 이런 문제들을 풀 수 있는 훌륭한 엔지니어들이 많다는 것을 말씀드리고 싶습니다. (저는 그 수많은 개발자 중 한 명으로 그 가능성을 보여드리고 싶었습니다. ) 이런 분들과 협업한다면 매번 일정 발표때마다 생기는 공정성 이슈는 많이 줄어들 것이고, 훨씬 더 신뢰받는 KBO가 되지 않을까 싶습니다.

    댓글

Designed by Tistory.