# ============================================================ # 排产引擎包(moduleId: server-engines, 可重生 ✅) # RULE:CP = OR-Tools;HYBRID = RULE 热启动 + CP 改良;GA = 遗传算法; # NSGA2 = NSGA-II 多目标遗传(矩阵 85,round-40 方向 U) # ============================================================ from server.engines.base import EngineParams, ISchedulingEngine from server.engines.cp_engine import CpSatEngine, HybridEngine from server.engines.external_engine import ExternalEngine from server.engines.ga_engine import GeneticAlgorithmEngine from server.engines.nsga2_engine import NSGA2Engine, nsga2_defaults, solve_nsga2 from server.engines.pool_engine import PoolEngine from server.engines.rule_engine import RuleEngine __all__ = [ "CpSatEngine", "EngineParams", "ExternalEngine", "GeneticAlgorithmEngine", "HybridEngine", "ISchedulingEngine", "NSGA2Engine", "PoolEngine", "RuleEngine", "get_engine", "nsga2_defaults", "solve_nsga2", ] def get_engine(engine_type: str) -> ISchedulingEngine: """引擎工厂:RULE / CP / GA / HYBRID / NSGA2 / EXTERNAL。""" 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() if kind == "GA": return GeneticAlgorithmEngine() if kind == "NSGA2": return NSGA2Engine() return RuleEngine(requested_type="RULE")