● 솔루션
사람이 일일이 따지기엔 경우의 수가 너무 많은 결정들.
네 가지 분야에 걸쳐 실제로 돌아가는 모델이 22개 있습니다. 모델마다 이름이 붙은 제약, 테스트, 그리고 OR-Tools 같은 검증된 솔버와의 벤치마크를 갖췄습니다. 제약과 선호 조건이 플러그인이라, 실제 프로젝트는 대개 가장 가까운 모델에서 출발해 필요 없는 제약은 빼고 고객 현장에만 있는 규칙을 더하는 식으로 진행합니다.
- 직원 · 간호사 근무표 모든 근무를 자격을 갖춘 사람으로 채우면서 휴식 규칙, 주간 근무시간, 연속 근무 제한, 개인 희망을 반영합니다.
- 항공 승무원 배정 모든 항공편의 승무원 자리마다 자격이 맞는 승무원을 배정합니다. 일정이 겹치면 안 되고, 연결편으로 이어서 탈 수 있어야 합니다.
- 정비 일정 정비 작업마다 작업조와 시작일을 정합니다. 너무 이르지도 늦지도 않게, 작업조 일정이 겹치지 않게 배치합니다.
- 프로젝트 일정 (RCPSP) 선후 관계와 공유 자원 한도를 지키면서 작업 순서와 수행 방식을 정해, 프로젝트 전체를 최대한 빨리 끝냅니다.
- 반도체 팹 스케줄링 재진입 공정의 로트를 대체 가능한 설비에 배정합니다. 레시피 셋업, 배치 처리, 큐타임 제한, 예방정비, 납기를 함께 고려합니다.
- 생산 라인 순서 계획 포장 작업을 생산 라인에 나누고 순서를 정합니다. 제품을 바꿀 때 드는 청소 시간과 여러 라인을 오가는 작업자를 고려합니다.
- 업무 배정 사람마다 처리할 업무 목록과 순서를 정합니다. 역량과 업무 숙련도를 맞추고, 중요한 일부터 끝냅니다.
- 회의 일정 필수 참석자가 모두 올 수 있고, 회의실이 충분히 크고, 일정이 겹치지 않도록 회의 시간과 장소를 정합니다.
03
시간표
칸은 정해져 있고, 이해관계자는 많고, 여유는 거의 없습니다. 제약을 얼마나 정확하게 다루느냐가 가장 중요하고, 잘 만든 시간표 하나가 학기마다 몇 주씩 걸리던 수작업을 덜어 줍니다.
자세히 보기 →- 학교 시간표 모든 수업을 교시와 교실에 배정합니다. 교사 · 학급 · 교실이 겹치지 않게 한 뒤, 공강, 연속 수업, 교사 희망을 다듬습니다.
- 학회 일정 발표를 시간대와 발표장에 배치합니다. 발표자가 가능한 시간을 지키고, 같은 주제가 한 시간대에 몰리지 않게 하며, 인기 발표는 큰 발표장에 배정합니다.
- 스포츠 리그 일정 모든 경기를 라운드에 배정합니다. 이동 거리를 줄이고, 홈 경기나 원정 경기가 너무 길게 이어지지 않게 합니다.
- 대회 일정 대회 날짜마다 팀을 고르게 배치해 일정 부담을 골고루 나누고, 모든 팀이 공정한 일정을 받게 합니다.
04
배정 · 적재
무엇을 어디에 둘 것인가. 환자는 어느 병상에, 물건은 어느 컨테이너에, 작업은 어느 공정에 둘지 정합니다. 고전적인 모델에 현장의 추가 제약을 얹습니다.
자세히 보기 →- 병상 배정 입원 일정마다 병상을 배정합니다. 성별 규칙, 필요한 장비, 선호 병실을 지키고, 한 병상에 겹쳐 배정하지 않습니다.
- 빈 패킹 (상자 채우기) 어떤 상자도 용량을 넘지 않게 하면서, 최대한 적은 수의 상자에 물건을 담습니다.
- 배낭 문제 · 항목 선택 하나 이상의 예산 한도 안에서 가장 가치 있는 조합을 고릅니다. 필수 항목, 항목 간 의존 관계, 그룹별 한도를 함께 다룹니다.
- 조립 라인 밸런싱 선후 관계를 지키고 어느 공정도 사이클 타임을 넘지 않도록 작업을 라인의 각 공정에 나눕니다.
- 이차 할당 (QAP) 물동량이 많은 시설끼리 가까이 놓이도록 위치를 정합니다. 설비 배치, 배선, 창고 로케이션 배정 같은 문제에 씁니다.
- 맥스컷 · 그래프 분할 가중치가 있는 그래프를 두 쪽으로 나눠, 두 쪽을 잇는 간선의 가중치 합을 최대로 만듭니다. 양쪽 크기 균형과, 같은 쪽 또는 다른 쪽에 둘 짝 규칙도 함께 다룹니다.
프로젝트 진행 방식
- 01
규칙부터
코드를 짜기 전에, 반드시 지켜야 할 규칙과 선호 사항을 평범한 말로 정리합니다.
- 02
모델링
가장 가까운 유스케이스에서 출발해 제약 플러그인을 더하고 빼고 가중치를 조정합니다.
- 03
검증
고객 데이터로 돌려서 기존 계획과 비교하고, OR-Tools 같은 검증된 솔버와도 비교합니다.
- 04
적용
Python 패키지로 쓰거나, 고객 서비스에 넣거나, 저희 API로 운영합니다.