01 — 엔진
하나의 엔진, 데이터로 표현하는 제약.
핵심은 의존성 없는 C++17 메타휴리스틱 엔진과 Python 바인딩입니다. 문제마다 작은 도메인 모델을 얹고, 업무 규칙과 선호 조건은 더하고 빼고 가중치를 조절하는 제약 플러그인으로 다룹니다. 솔버 코드를 고칠 필요가 없습니다.
- 필요한 곳에서 빠르게
- 이동이 건드린 부분만 다시 계산하는 증분 채점 덕분에 단일 코어에서도 초당 수백만 개의 후보 변경을 탐색합니다.
- 주장 대신 측정
- Google OR-Tools 같은 검증된 솔버, 그리고 CVRPLIB, Li & Lim, Patterson 같은 공개 인스턴스와 비교합니다. 모든 해는 별도 검증기로 다시 채점합니다.
- pip install optimaru
- 모든 유스케이스가 담긴 Python 패키지 하나. Linux, macOS, Windows용으로 빌드되어 있습니다. 몇 줄로 풀거나, 고객 서비스 안에 넣어 쓰세요.
- 플러그인 제약
- 모든 필수 규칙과 선호 조건은 이름, 가중치, 필수/선호 수준을 가진 플러그인입니다. 프로젝트마다 더하고 빼도 솔버 코어는 그대로이고, 같은 규칙은 엔진, 참조 모델, 화면에서 모두 같은 뜻입니다.
$ pip install optimaru
from optimaru import vehicle_routing as vrp
from optimaru.vehicle_routing.constraints import (
get_constraints, vehicle_capacity, maximize_visits_assigned,
MinimizeTravelTime, MaxRouteDuration,
)
config = vrp.SolverConfig()
config.spent_limit_seconds = 5
solver = vrp.Solver(config)
# Plug in only the rules you need, weighted your way.
solver.solve_with_constraints(plan, get_constraints([
vehicle_capacity,
maximize_visits_assigned,
MinimizeTravelTime(weight=10),
MaxRouteDuration(hard=True),
])) 02 — 벤치마크
OR-Tools와 비교했습니다.
같은 인스턴스, 같은 시간 예산, 모든 결과는 다시 검증. 비긴 결과도 그대로 보여 드립니다.
학교 시간표 — 총 벌점 · 낮을수록 좋음
두 솔버 모두 필수 규칙은 전부 지켰습니다. 벌점이 낮을수록 어긴 선호 조건이 적습니다.
- optimaru
- OR-Tools CP-SAT
S · 6학급
M · 12학급
L · 24학급
다른 결과
| 문제 | 지표 | optimaru | OR-Tools |
|---|---|---|---|
| 학교 시간표 · 24학급 | 충돌 없는 첫 시간표 | 11 ms | 10초 안에 못 찾음 |
| 차량 경로 · CVRPLIB A-n32-k5 | 최적해와의 차이 | 5.48% | 24.36% |
| 픽업 · 배송 · Li & Lim lc101 | 총 이동 거리 | 156 동률 | 156 |
| 프로젝트 일정 · Patterson Pat1 | 전체 소요 시간 | 67 동률 | 67 |
같은 인스턴스, 같은 10초 예산. 모든 해는 별도 검증기로 다시 채점했습니다. 시간표에서 OR-Tools CP-SAT는 8 worker, 나머지는 1 worker. 2026년 8월 측정.
03 — 솔루션
22개 유스케이스, 네 가지 분야.
각각 고유한 제약, 테스트, 벤치마크를 갖춘 실제로 동작하는 모델입니다. 발표 자료가 아니라, 고객의 규칙에 맞춰 바로 고쳐 쓰는 출발점입니다.
- 01 경로 · 물류 차량 경로 최적화 (VRP) · 픽업 · 배송 (PDPTW) · 오더 피킹 · 설비 입지 선정 4 개 유스케이스 →
- 02 스케줄링 직원 · 간호사 근무표 · 항공 승무원 배정 · 유지보수 일정 · 프로젝트 일정 (RCPSP) · 반도체 팹 스케줄링 · 생산 라인 순서 계획 · 업무 배정 · 회의 일정 8 개 유스케이스 →
- 03 시간표 학교 시간표 · 학회 일정 · 스포츠 리그 일정 · 대회 일정 4 개 유스케이스 →
- 04 배정 · 적재 병상 배정 · 빈 패킹 · 배낭 문제 · 선택 · 조립 라인 밸런싱 · 이차 할당 · 맥스컷 · 분할 6 개 유스케이스 →
05 — 시작한 이유
조합최적화는 배송, 병원 근무표, 학교 시간표 뒤에서 조용히 돌아갑니다. 그런데 대부분의 팀은 여전히 비싼 블랙박스 솔버와, 첫 번째 실제 제약에서 무너지는 연구용 코드 사이에서 고릅니다. 쓰기 쉽고 현실에서 버티는 오픈소스 엔진을 만들기 위해 optimaru를 시작했습니다.
— 강승현, 창업자 · 회사 소개 →
경로나 일정 문제가 있으신가요?
지금 쓰고 있는 규칙을 보내 주세요. 최적화가 도움이 되는지, 얼마나 되는지 솔직하게 말씀드립니다.