aps-agent/server/engines/__init__.py

51 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ============================================================
# 排产引擎包(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.optimize_engine import OptimizeEngine
from server.engines.pool_engine import PoolEngine
from server.engines.rule_engine import RuleEngine
__all__ = [
"CpSatEngine",
"EngineParams",
"ExternalEngine",
"GeneticAlgorithmEngine",
"HybridEngine",
"ISchedulingEngine",
"NSGA2Engine",
"OptimizeEngine",
"PoolEngine",
"RuleEngine",
"get_engine",
"nsga2_defaults",
"solve_nsga2",
]
def get_engine(engine_type: str) -> ISchedulingEngine:
"""引擎工厂:RULE / CP / GA / HYBRID / NSGA2 / OPTIMIZE / 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()
if kind == "OPTIMIZE":
return OptimizeEngine()
return RuleEngine(requested_type="RULE")