알고리즘
DispatchAtlas는 솔버 동작을 벤치마크 생성 및 캠페인 실행과 분리합니다. 모든 솔버는
dispatchatlas.solve 안에서 하나의 레지스트리 뒤에 살며, 솔버 메타데이터는 목표,
능력, 인코딩, 의존성, 확률성, 증거 계층 가시성, 선택적 백엔드에 대한 공개 계약입니다. 이
페이지는 솔버 패밀리를 실무 수준에서 설명합니다; 솔버 시스템
레지스트리 페이지가 솔버별 권위 카탈로그입니다.
🏗️ 솔버가 조직되는 방법
default_solver_registry() 는 무상태 솔버 팩토리의 레지스트리를 반환합니다. 각 항목은
능력 태그, 지원 목표, 기본 정지 기준, 결정적 또는 시드-확률적 재생 동작, 해 인코딩,
선택적 의존성 요구, 증거 계층 가시성, 그리고 정전적 인용(또는 명시적
인용-해당-없음 근거)을 선언합니다. 인용은 닫는 쪽으로 실패합니다: 정전적인 시초적
출처를 가지면서 그 참조를 누락한 패밀리는 구성될 수 없습니다.
🧰 솔버 패밀리
| 패밀리 | 예시 | 용도 |
|---|---|---|
| 구성적 디스패칭 | earliest-start, shortest-processing-time, earliest-deadline, minimum-slack | 빠른 결정적 베이스 스케줄과 스모크 체크. |
| 메타휴리스틱 베이스라인 | 유전, 어닐링, 개미 군집, 입자 군집, 차분 진화 | 선행-안전 작업 순서 위의 대표적 시드 탐색 베이스라인. |
| 인코딩 어댑터 | clpso, d-clpso, lshade, d-lshade | 인코딩 어댑터를 통해 스케줄링에 묶인 연속 최적화기. |
| 최근 동류 | epso, adpso, ccgp | 출처 기반 발표지-강도 바를 넘은 최근 발표 동류. |
| 다목적 | nsga3 | 다목적 벡터 위의 참조점 니칭. |
| 정확해 어댑터 | ortools-cp-sat, pulp-milp, branch-and-bound, logic-based-benders-decomposition, gurobi-exact, exhaustive-enumeration, decision-diagram-sequencing | 선택적 의존성 뒤의 엄선된 정확해 한 줌, 또는 네이티브 유계 탐색. |
| NDSO | ndso-core, ndso-fast, ndso-summit | 레지스트리의 네이티브 인코딩 솔버 패밀리. |
📋 구성적 디스패칭 규칙
번들된 결정적 베이스라인은 구성적 리스트-스케줄링 솔버입니다: 각각 작업 순서를 제어하며,
직렬 생성자는 각 작업의 선언된 리소스 요구를 존중합니다. 일곱 패밀리 — earliest-start,
shortest-processing-time, longest-processing-time, earliest-deadline, earliest-finish-time, minimum-slack,
greedy-completion — 은 각각 메타데이터에 정전적 시초 참조를 명명합니다. 이들은 실행
가능한 스케줄로 가는 가장 빠른 경로이며, 첫 번째 튜토리얼 처럼 모든
비교를 정박합니다.
🔀 메타휴리스틱 베이스라인
다섯 개의 대표적 시드 메타휴리스틱 — 유전 알고리즘, 모의 담금질, 개미 군집, 입자 군집, 차분 진화 — 은 동일한 실행 가능성·수리·점수·국소 탐색 연산자를 공유하므로, 비교는 부수적 배관 차이가 아니라 탐색 전략을 측정합니다.
🔌 인코딩 어댑터 솔버
포괄적 학습 입자 군집(clpso, d-clpso)과 성공-이력 적응 차분 진화(lshade,
d-lshade)는 작업마다 한 성분을 가진 연속 실수값 벡터를 탐색합니다. 각 코어는 연속
목표에 대해 일반적이며, 명명된 인코딩 어댑터(random-key, spv, rounding, 그리고
전달-함수 디코드)를 통해 스케줄링에 묶입니다. 그것은 벡터를 선행-실행 가능 작업 순서로
바꾸며, 수리가 발화했는지 기록하는 명시적 수리 정책을 동반합니다.
🥊 다양화된 경쟁자와 다목적 차선
엄선된 최근 발표 동류 집합이 대표 베이스라인을 넘어 비교를 넓히며, 각각 전문 참조,
강점, 유의점을 메타데이터에 담습니다. 동류는 출처 기반 발표지-강도 바를 넘을 때만 공개
필드에 합류합니다; 더 넓은 고전 베이스라인 풀은 내부 비교를 위해 등록된 채 유지됩니다.
nsga3 는 명명된 다목적 경쟁자입니다: 각 선행-안전 순서를 다목적 벡터(makespan, 지각,
부하 공정성) 위에서 평가하고 참조점 니칭으로 생존자를 선택합니다.
🎯 정확해 어댑터
선택적-백엔드 어댑터(CP-SAT, MILP, branch-and-bound)는 선택적 의존성을 선언하고 런타임에
그 임포트 루트를 탐색합니다; 백엔드가 없으면 패키지 임포트 시 중량 의존성을 임포트하는
대신 extra 이름과 라이선스 비고를 동반한 MissingOptionalDependencyError 를
일으킵니다. 네이티브-유계 어댑터(exhaustive-enumeration 및
decision-diagram-sequencing)는 서드파티 의존성을 지니지 않고 작은 인스턴스를 정확히
풀며, 지원 작업 수를 초과하면 UnsupportedCapabilityError
를 일으킵니다. 상용 Gurobi 래퍼는 exact-commercial extra 뒤에 머물며 결코 번들되지
않습니다; 더 넓은 선택적 백엔드 풀은 내부 사용을 위해 등록된 채 유지됩니다.
🐝 NDSO 패밀리
NDSO는 레지스트리의 네이티브 인코딩 솔버 패밀리입니다: 실행 가능 스케줄 위를 직접 탐색하므로, 그것이 생산하는 모든 스케줄은 구성상 실행 가능하며, 패밀리는 인코드/디코드 단계나 수리 패스를 결코 실행하지 않습니다. 그것은 명명된 메커니즘의 작은 집합을 구성합니다:
- 더 나은 스케줄로 강화되는, (위치, 작업) 셀별 학습된 신뢰의 신뢰 행렬;
- 그 행렬로 가중된 모집단에 걸쳐 투표하여 엘리트 스케줄을 합성하는 신뢰-가중 투표;
- 후보가 얼마나 변하고 어떤 안내 출처로부터 학습하는지를 설정하는 수량-과-품질 스케줄;
- 세-출처 안내 — 합성된 엘리트(활용), 동류(다양성), 또는 사라진-지식 출처(급진적 탐험);
- 패밀리를 탐험에서 활용으로 옮기는 하나의 비선형 스케줄, 통합 적응 계수.
| 변형 | 구성 |
|---|---|
ndso-core | 신뢰-가중 투표, 적응 계수, 세-출처 안내. |
ndso-fast | 다수결 합성, 고정 계수, 단일 안내 출처. |
ndso-summit | 여러 군집을 조율하고 그 결과를 하나의 포괄적 엘리트로 합성하는 군집-간 협의회. |
절제 맵은 명명된 메커니즘마다 하나의 격리 구성을 열거하여 하류 분석이 각 메커니즘의 기여를 귀속할 수 있게 하며, 단계적 내보내기 필터는 더 낮은 보고 범위 아래에서 더 나중 계층 메커니즘을 노출하는 대신 닫는 쪽으로 실패합니다. 메커니즘·협의회·절제·진단의 완전한 세부는 솔버 시스템 에 있습니다; 비교 캠페인이 실행되기 전에는 어떤 성능 주장도 하지 않습니다.
🎛️ 선택
SolverRegistry.select 는 능력 태그, 선언된 제약, 지원 목표, 증거 계층 가시성으로
솔버를 매칭합니다 — 빠른 시작의 registry.select(objective="makespan", disclosure_label=DisclosureLabel.CORE) 가 가장 작은 예입니다. 레지스트리 위에서 선택
계층은 특성화 특징과 공개 메타데이터로부터 문제에 대해 솔버 순위를 매기고, 각 추천을 그
출처와 신뢰도로 라벨링하며, 보편적 최고 솔버를 결코 주장하지 않습니다.
솔버 추천기 는 솔버가 왜 제외되었는지를 포함하여 그
설명들을 제시합니다.