# ============================================================ # 排产引擎包(moduleId: server-engines, 可重生 ✅) # RULE;CP = OR-Tools;HYBRID = RULE 热启动 + CP 改良;GA 仍 RULE 代跑留痕 # ============================================================ 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 from server.engines.external_engine import ExternalEngine __all__ = [ "EngineParams", "ISchedulingEngine", "RuleEngine", "PoolEngine", "CpSatEngine", "HybridEngine", "ExternalEngine", "get_engine", ] def get_engine(engine_type: str) -> ISchedulingEngine: """引擎工厂:CP / HYBRID / EXTERNAL;GA 仍由 RULE 代跑并留 engineType。""" kind = (engine_type or "RULE").upper() if kind.startswith("EXTERNAL"): skill_id = None if ":" in engine_type: skill_id = engine_type.split(":", 1)[1].strip() or None return ExternalEngine(skill_id=skill_id) if kind == "CP": return CpSatEngine() if kind == "HYBRID": return HybridEngine() return RuleEngine(requested_type=kind if kind in ("RULE", "GA") else "RULE")