数据流¶
从用户建模到最终输出的完整数据流。
端到端数据流¶
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
}
}