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 求解流程与结构

下图展示了从问题定义到解输出的完整流程,以及各基础概念在流程中的位置:

CSP 求解流程与基础概念关系图 变量集合 X 域集合 D 约束集合 C 约束求解引擎 搜索 + 传播 + 回溯 可行解(无目标) 最优解(有目标) 目标函数(可选) 说明: 无目标函数时输出可行解;有目标函数时,求解器在可行解空间中搜索最优解。 API 参数中通过 optimize 字段控制是否启用目标优化。

3.6 概念对比与总结

下表汇总了五个核心概念在寻源场景中的具体体现:

概念 符号 寻源实例 API 参数对应
变量 xᵢ 供应商选择标志、分配数量 variables 数组
域 Dᵢ {0,1}、[0, 10000]、{"海运","空运"} domains 对象
约束 cⱼ 产能上限、预算限制、互斥选择 constraints 列表
可行解 — 满足所有约束的采购方案 solutions 返回集
最优解 — 成本最低的可行采购方案 bestSolution 字段
本章要点:
  • CSP 由变量、域、约束三元组定义,是智能寻源算法的数学基础。
  • 可行解满足所有约束;最优解在可行解基础上优化目标函数。
  • 域的大小和约束的紧密度直接影响求解效率,API 参数配置时应优先考虑域缩减。
  • 理解这些基础概念,是后续学习求解器接口调用与参数调优的前提。