3. 约束求解基础概念:变量、域、约束、可行解、最优解、约束满足问题(CSP)定义
在智能寻源算法中,约束求解的核心是将业务规则转化为数学语言。本章将系统讲解约束满足问题(CSP)的五大基础构件:变量、域、约束、可行解与最优解。理解这些概念是后续配置求解器参数、设计接口调用的前提。
3.1 约束满足问题(CSP)的形式化定义
一个约束满足问题由三元组 (X, D, C) 定义:
- X = {x₁, x₂, …, xₙ}:有限变量集合
- D = {D₁, D₂, …, Dₙ}:每个变量对应的域(取值范围)
- C = {c₁, c₂, …, cₘ}:约束条件集合,每个约束作用于一个或多个变量
核心思想: 为每个变量从其域中选取一个值,使得所有约束同时被满足。满足所有约束的赋值称为可行解;若存在目标函数,则从中选出最优的称为最优解。
3.2 变量与域
变量是问题中需要决策的对象。在寻源场景中,变量通常代表:
- 供应商选择(如:
supplier_A是否被选中) - 采购数量分配(如:
qty_to_B分配给供应商B的数量) - 运输方式(如:
mode_C选择海运/空运/陆运)
域是变量所有可能取值的集合,分为三种常见类型:
| 域类型 | 说明 | 寻源示例 |
|---|---|---|
| 布尔域 | {0, 1} 或 {true, false} | 是否选择某供应商 |
| 整数域 | 连续或离散整数区间 | 采购数量、交货天数 |
| 符号域 | 有限枚举值 | 运输方式、质量等级 |
实践注意: 域的大小直接影响求解效率。域越小,搜索空间越小,求解速度越快。在API参数配置中,应尽量通过域缩减(domain reduction)技术提前剪枝。
3.3 约束
约束定义了变量之间必须满足的关系。根据作用范围,约束可分为:
- 一元约束:限制单个变量的取值。例如:
supplier_A 的质量等级必须为 "A级" - 二元约束:关联两个变量。例如:
qty_to_A + qty_to_B = 总需求 - 高阶约束:涉及三个及以上变量。例如:
若 supplier_A 被选中,则其运输方式不能为 "空运"
在智能寻源中,常见的约束类型包括:
| 约束类型 | 数学表达 | 业务含义 |
|---|---|---|
| 容量约束 | ∑qtyᵢ ≤ capacity | 供应商产能上限 |
| 预算约束 | ∑(priceᵢ × qtyᵢ) ≤ budget | 采购总金额不超预算 |
| 互斥约束 | supplier_A + supplier_B ≤ 1 | 两个供应商不能同时选择 |
| 依赖约束 | supplier_A → mode_C ≠ "空运" | 选择A供应商时禁用空运 |
3.4 可行解与最优解
可行解:对每个变量赋予一个域内的值,且满足所有约束的完整赋值。一个CSP可能有零个、一个或多个可行解。
最优解:在可行解集合中,使目标函数(如总成本最小、交付时间最短)达到最优的解。当问题引入目标函数时,CSP扩展为约束优化问题(COP)。
关键区别: 寻源算法中,若只要求满足所有约束(如供应商资质、数量匹配),则只需寻找可行解;若需要最小化总成本或最大化准时率,则必须求解最优解。API调用时需明确指定求解模式。
3.5 CSP 求解流程与结构
下图展示了从问题定义到解输出的完整流程,以及各基础概念在流程中的位置:
3.6 概念对比与总结
下表汇总了五个核心概念在寻源场景中的具体体现:
| 概念 | 符号 | 寻源实例 | API 参数对应 |
|---|---|---|---|
| 变量 | xᵢ | 供应商选择标志、分配数量 | variables 数组 |
| 域 | Dᵢ | {0,1}、[0, 10000]、{"海运","空运"} | domains 对象 |
| 约束 | cⱼ | 产能上限、预算限制、互斥选择 | constraints 列表 |
| 可行解 | — | 满足所有约束的采购方案 | solutions 返回集 |
| 最优解 | — | 成本最低的可行采购方案 | bestSolution 字段 |
本章要点:
- CSP 由变量、域、约束三元组定义,是智能寻源算法的数学基础。
- 可行解满足所有约束;最优解在可行解基础上优化目标函数。
- 域的大小和约束的紧密度直接影响求解效率,API 参数配置时应优先考虑域缩减。
- 理解这些基础概念,是后续学习求解器接口调用与参数调优的前提。