aps-agent/server/engines/__init__.py

30 lines
1.3 KiB
Python
Raw Normal View History

2026-07-21 11:05:57 +08:00
# ============================================================
# 排产引擎包(moduleId: server-engines, 可重生 ✅)
# RULE;CP = OR-Tools;HYBRID = RULE 热启动 + CP 改良;GA 仍 RULE 代跑留痕
2026-07-21 11:05:57 +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
from server.engines.external_engine import ExternalEngine
2026-07-21 11:05:57 +08:00
__all__ = [
"EngineParams", "ISchedulingEngine", "RuleEngine", "PoolEngine",
"CpSatEngine", "HybridEngine", "ExternalEngine", "get_engine",
]
2026-07-21 11:05:57 +08:00
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")