ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2024 KBO 일정 톺아보고 개선하기
    카테고리 없음 2024. 1. 7. 04:17

    원본 및 더 정확한 내용은 아래 노션 참고 바랍니다.

    https://foul-digit-1a5.notion.site/2024-KBO-58c52c40427c4caca12ca4800c29dd45?pvs=4

    1 들어가면서

    KBO가 2024년 일정(KBO 보도자료 | 미디어/뉴스 | KBO (koreabaseball.com)) 을 발표하였습니다. 작년에 이 일정을 분석하는 글(2023 프로야구 정규시즌 일정 톺아보기)을 작성하면서 대부분의 틀을 개발한 상태라서, 데이터만 2024년도로 변경해서 진행하였습니다.

    항상 느끼는 것이지만 일정 수립은 고려할 사항이 많은 매우 복잡한 문제라서, 사람의 직관이 최선의 결과를 내기에는 어렵다고 생각합니다. 데이터를 오픈하고 외부 개발자 인력들과 협업한다면 좋은 결과를 가져올 수 있을 것 같습니다.

    2 데이터 구성하기

    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

    2.2 휴일 기준

    • 모든 구단은 마케팅 측면에서 주말 및 공휴일에 많은 경기를 하기를 원하므로, 이를 공정하게 배분하는 것이 중요합니다.
    • 2024년 일정 중 주말(토요일, 일요일) 은 총 44일이며, 주요 공휴일은 아래와 같습니다.
      • 4월 10일 총선 (수요일)
      • 5월 5일 어린이날 (일요일)
      • 5월 15일 석가탄신일 (수요일)
      • 6월 6일 현충일 (목요일)
      • 8월 15일 광복절 (목요일)

    3 KBO 일정 톺아보기

    3.1 이동 거리

    먼저 KBO에서 제시하는 가장 중요한 기준인 이동 거리를 구단 별로 비교해보겠습니다. 이동 거리는 주중(목요일)에 이동하는 것과 주말(일요일)에 이동하는 것을 따로 분류해보았습니다. 주중(목요일)에 이동한다면 휴식 없이 다음날 경기를 치루어야 하지만, 주말(일요일)에 이동한다면 우천으로 취소되지 않는 한 월요일 휴식 후 화요일에 경기를 치룰 수 있습니다.

    • 올해 가장 이동 거리가 긴 구단은 SSG와 롯데입니다. 이 두 구단은 주중 이동거리도 다른 구단에 비해 상대적으로 깁니다. 반면 삼성과 한화는 이동 거리가 가장 짧습니다.

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

    구단 주말 이동 거리 주중 이동 거리 총 이동 거리

    KIA 3,541 4,031 7,572
    KT 3,556 3,987 7,543
    LG 3,625 3,757 7,381
    NC 3,625 4,344 7,969
    SSG 4,008 4,166 8,174
    두산 3,736 3,491 7,227
    롯데 3,711 4,427 8,138
    삼성 3,574 3,258 6,832
    키움 3,367 3,645 7,011
    한화 2,893 3,932 6,825
    범위 2,893~4,008 3,528~4,427 6,825~8,174

    3.2 이동 횟수

    또한 구단별로 이동 횟수를 비교해보았습니다. 저는 이동 거리보다 이동 횟수가 더 중요할 수 있다고 생각합니다. 예를 들어서 SSG 입장에서 홈에서 2번 경기를 치루고 사직으로 한 번 이동하는 것과, 홈에서 1번 경기를 치루고 대전에서 경기를 치루고 다시 문학으로 돌아오는 일정 중 선택할 수 있다면 무엇을 선택할까요? 비록 이동 거리가 길지만 한번만 이동하는 일정이 훨씬 낫지 않을까요?

    • 이동하는 횟수가 많은 구단은 SSG와 의외로 한화입니다. 한화는 전체 이동거리는 짧지만 자주 이동을 해야 하는 일정이고, 특히 주중에 많은 이동을 하게 됩니다. 반면 삼성은 이동 거리도 짧고 이동 횟수도 적은 상대적으로 유리한 일정이 되겠습니다.

    표3 구단 별 이동 횟수

    구단 주말 이동 주중 이동 총합계

    KIA 17 19 36
    KT 17 20 37
    LG 15 19 34
    NC 16 20 36
    SSG 18 21 39
    두산 16 19 35
    롯데 17 19 36
    삼성 17 18 35
    키움 17 20 37
    한화 16 22 38
    범위 15~18 18~22 35~39

    3.3 이동 경로

    일단 가장 정확한 것은 눈으로 보는 것이기 때문에 이동 경로를 시작화해보았습니다. 시각화는 태블로(tableau)라는 시각화도구를 사용하였습니다. (원본으로 확인하시면 더 좋아요~ )

    • 살펴보면 SSG 구단의 일정을 살펴보면 굉장히 하드합니다. 사직을 왕복하는 일정이 2차례(4월 23일~28일, 6월 7일~13일), 창원을 왕복하는 일정이 2차례(4월 5일~11일, 8월 13일~18일)가 있습니다. 7월 초에는 문학 → 잠실 → NC → 문학 → 광주 → 잠실 로 연이어 이동하는 일정이 있습니다. 또한 한 번에 이동하는 거리가 300km이 넘는 장거리 이동도 17회나 있습니다. 왜 이동거리가 8,174km으로 모든 구단 중 가장 긴지 알 수 있습니다.

    3.4 휴일 일정 배분

    구단 별로 휴일 일정을 비교해 본 결과 NC가 상대적으로 많은 휴일(27일)을 배정 받았습니다. 반면 삼성은 가장 적은 휴일(21일)을 배정 받았습니다.

    표4 구단 별 휴일 배정 수

    구단 휴일 배정 수

    KIA 24
    한화 23
    NC 27
    SSG 24
    두산 24
    키움 23
    롯데 23
    KT 23
    LG 23
    삼성 21

    4 KBO 일정 업그레이드

    이제는 KBO가 만든 일정을 업그레이드 해보겠습니다. 참고한 주요 일정은 아래와 같습니다.

    4.1 주요 일정

    개막전, 어린이날, 올스타 브레이크 등을 고려하여 일정을 수립하였습니다.

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

    4.2 개발 도구

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

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

    4.3 결과

    여차여차(??)해서 업그레이든 한 결과는 아래와 같습니다.

    각 구단 별 이동 횟수

    먼저 구단 별 이동 횟수를 살펴보겠습니다. 구단 별로 이동 횟수의 편차가 줄어 들었습니다. 특히 주중에 이동하는 횟수의 편차를 기존( 18~22)보다 크게 개선하였습니다.

    구단 주말 이동 주중 이동 총합계

    KIA 16 18 34
    KT 19 18 37
    LG 16 18 34
    NC 16 18 34
    SSG 17 19 36
    두산 15 19 34
    롯데 16 18 34
    삼성 18 18 36
    키움 18 17 35
    한화 18 19 37
    범위 15~19 17~19 34~37

     

    각 구단 별 이동 거리

    각 구단 별로 이동 거리의 편차도 크게 줄어들었습니다. 기존에는 SSG와 롯데가 총 이동거리가 8,000km이 넘었는데 개선 후에는 8,000km이 넘는 경우가 없습니다.

    구단 주말 이동 주중 이동 총 이동거리

    KIA 3618.3 3855 7473.3
    KT 3705.7 3599.2 7304.9
    LG 3673 3734.4 7407.4
    NC 3849.1 3967.5 7816.6
    SSG 3678.1 3514.3 7192.4
    두산 3187.1 3812.1 6999.2
    롯데 3776.9 4033.4 7810.3
    삼성 3388.6 3722.7 7111.3
    키움 3797.7 3501.8 7299.5
    한화 3250.8 3805.3 7056.1
    범위 3187.1~3849.1 3501.8~4033.4 6999.2~7816.6

    각 구단 별 휴일 배정 수

    기존에는 가장 많은 휴일을 배정받은 구단(NC 27일)과 적게 배정 받은 구단(삼성 21일)의 차이가 6일로 크게 나타났습니다. 그러나 개선 후에는 그 편차를 이틀 이내로 맞출 수 있었습니다.

    구단 배정 휴일 수

    KIA 24
    한화 24
    NC 24
    SSG 24
    두산 23
    키움 22
    롯데 24
    KT 23
    LG 24
    삼성 23

    각 구단 별 경로 보기

    개선 전/후로 경로는 아래에서 비교할 수 있습니다. SSG 구단의 이동 경로를 비교해보면 확실히 개선 후 결과가 스마트해졌다는 것을 알 수 있습니다. 예를 들어 기존에는 단순히 부산/창원을 왕복하는 일정이 줄었고, 중간에 다른 구단을 경유하도록 일정이 만들어졌습니다. 즉 보다 원정 경기를 효과적으로 치루는 일정이 만들어졌습니다. (아래에서 원본으로 확인하세요~)

     

    5 마치면서

    소파에 누워서 스토브리그를 보다가 단장끼리 이동 거리를 두고 싸우는 모습을 보고 저게 진짜인가 라는 생각이 들어서 찾아보고 해볼까 생각했던 것이 벌써 3년이 지났네요. 이것을 포함해서 벌써 세번째 작업인데 이미 틀을 만들어 놓아서 이번에는 정말 빠르게 작업했습니다.

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

    또한 이번 작업에 투입한 순수 시간은 대략 6시간 정도인데… 힘들게 경기를 마친 선수들의 이동 시간을 줄이는데 기여할 수 있다면 아주 굉장히 남는 장사라고 생각합니다. 회사에서는 정말 작은 비용을 줄이기 위해 그렇게 애를 쓰는데요. 이정도면 꽤 높은 B/C 같습니다.

    이게 사람의 직관으로 하기에는 너무 어려운 작업이지만 개발자가 작업하기에는 그렇게 어려운 일이 아닙니다. 혹시 글을 읽으시는 분들 중에서 기여할 수 있는 방법을 알고 계시다면 알려주시면 감사하겠습니다.

    댓글

Designed by Tistory.