2026-07-21 11:05:57 +08:00
|
|
|
|
# ============================================================
|
|
|
|
|
|
# 排产引擎包(moduleId: server-engines, 可重生 ✅)
|
2026-07-23 13:38:43 +08:00
|
|
|
|
# RULE;CP = OR-Tools;HYBRID = RULE 热启动 + CP 改良;GA 仍 RULE 代跑留痕
|
2026-07-21 11:05:57 +08:00
|
|
|
|
# ============================================================
|
2026-07-23 13:38:43 +08:00
|
|
|
|
from server.engines.base import EngineParams, ISchedulingEngine
|
|
|
|
|
|
from server.engines.rule_engine import RuleEngine
|
|
|
|
|
|
from server.engines.pool_engine import PoolEngine
|
|
|
|
|
|
from server.engines.cp_engine import CpSatEngine, HybridEngine
|
2026-07-21 11:05:57 +08:00
|
|
|
|
|
2026-07-23 13:38:43 +08:00
|
|
|
|
__all__ = [
|
|
|
|
|
|
"EngineParams", "ISchedulingEngine", "RuleEngine", "PoolEngine",
|
|
|
|
|
|
"CpSatEngine", "HybridEngine", "get_engine",
|
|
|
|
|
|
]
|
2026-07-21 11:05:57 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_engine(engine_type: str) -> ISchedulingEngine:
|
2026-07-23 13:38:43 +08:00
|
|
|
|
"""引擎工厂:CP / HYBRID 真管线;GA 仍由 RULE 代跑并留 engineType。"""
|
|
|
|
|
|
kind = (engine_type or "RULE").upper()
|
|
|
|
|
|
if kind == "CP":
|
|
|
|
|
|
return CpSatEngine()
|
|
|
|
|
|
if kind == "HYBRID":
|
|
|
|
|
|
return HybridEngine()
|
|
|
|
|
|
return RuleEngine(requested_type=kind if kind in ("RULE", "GA") else "RULE")
|