跳转至

数据流

从用户建模到最终输出的完整数据流。

端到端数据流

sequenceDiagram
    participant U as User
    participant B as Builder
    participant IR as DAG IR
    participant A as Analyzer
    participant R as Recommender
    participant O as Orchestrator
    participant S as Solver
    participant Out as Output

    U->>B: Model API 调用
    B->>IR: ProgramSpec → DAG
    IR->>A: 传递 DAG
    A->>A: 特征提取 & 分解
    A->>R: Analysis Plan
    R->>R: 匹配预设
    R->>O: Preset Config
    O->>S: 分配求解任务
    S->>S: 执行求解
    S->>Out: 返回 Solution
    Out->>U: Report / Visualize

关键数据结构

ProgramSpec

建模层的输出,描述完整的优化问题:

ProgramSpec
├── variables: List[VariableSpec]
│   ├── name: str
│   ├── domain: (lb, ub) | Set[int]
│   └── vtype: CONTINUOUS | INTEGER | BINARY
├── constraints: List[ConstraintSpec]
│   ├── expr: LinearExpr | NonlinearExpr
│   └── sense: LE | GE | EQ
├── objective: ObjectiveSpec
│   ├── expr: LinearExpr
│   └── sense: MINIMIZE | MAXIMIZE
└── metadata: Dict[str, Any]

DAG IR

问题结构的图表示:

DAG
├── nodes: Dict[NodeId, Node]
│   ├── VarNode: 决策变量
│   ├── ConstraintNode: 约束
│   ├── ObjectiveNode: 目标函数
│   └── OpNode: 运算节点
├── edges: List[Edge]
│   ├── (src, dst, weight)
│   └── 表示依赖关系
└── attributes: Dict[NodeId, AttrDict]

Analysis Plan

分析器的输出:

AnalysisPlan
├── features: ProblemFeatures
│   ├── var_types: Counter
│   ├── constraint_types: Counter
│   ├── sparsity: float
│   └── symmetry_score: float
├── subproblems: List[SubProblem]
│   ├── dag_slice: DAG
│   └── coupling_vars: List[VarNode]
└── recommended_family: str

Preset Config

预设配置,驱动编排器行为:

{
  "name": "scheduling_evolutionary_repair",
  "heuristic": {
    "strategy": "genetic_algorithm",
    "population_size": 50,
    "generations": 200,
    "crossover_rate": 0.8,
    "mutation_rate": 0.1
  },
  "orchestrator": {
    "phases": [
      {"type": "evolutionary", "budget": 0.6},
      {"type": "local_search", "budget": 0.3},
      {"type": "exact_repair", "budget": 0.1}
    ],
    "warm_start": true
  }
}