2. 伊辛模型与QUBO建模基础
量子退火求解器并不直接理解“排班”“选路”或“装箱”这类业务语言,它只接受一种统一的数学形式:一组取值为 ±1 或 0/1 的变量,以及一个由这些变量构成的二次多项式目标函数。把实际问题翻译成这种形式,是使用量子退火的第一步,也是最容易出错的一步。本节聚焦两种最常用的表达——伊辛模型与 QUBO 模型——并厘清自旋变量、耦合系数、外场与目标函数之间的对应关系。
一、两种变量约定:自旋与二进制
伊辛模型使用自旋变量,记作 si,取值只有 +1 和 −1,物理上对应“自旋向上”和“自旋向下”。它的能量函数写作:
E(s) = Σ_i h_i · s_i + Σ_{i<j} J_ij · s_i · s_j
其中 hi 是作用在第 i 个自旋上的外场(局部偏置),Jij 是第 i 与第 j 个自旋之间的耦合系数。求和遍历所有变量与所有变量对。
QUBO 使用二进制变量,记作 xi,取值 0 或 1,目标函数通常写成矩阵形式:
f(x) = Σ_i Q_ii · x_i + Σ_{i<j} Q_ij · x_i · x_j
Qii 是线性项系数,Qij 是二次项系数。QUBO 默认求最小值,若原问题是最大化,只需对目标函数整体取负号。
两种形式可以互相转换,桥梁是线性代换 si = 2xi − 1。代入后,伊辛的 h、J 与 QUBO 的 Q 之间存在确定的换算关系。理解这一点,就能在两种建模语言之间自由切换,而不必重复推导。
二、耦合系数与外场分别“管”什么
耦合系数 Jij(或 Qij)描述两个变量之间的相互偏好,它决定的是“关系”,而不是单个变量的取值:
- Jij < 0:两个自旋倾向同向(si = sj),对应 QUBO 中两个二进制变量倾向同时为 1,即“奖励共现”。
- Jij > 0:两个自旋倾向反向,对应 QUBO 中两个变量倾向不同时为 1,即“惩罚共现”。
- |Jij| 越大,这种偏好越强,在最终解中越难被违反。
外场 hi(或线性项 Qii)描述单个变量自身的偏好:
- hi < 0:自旋倾向取 +1;在 QUBO 中若 Qii < 0,则 xi 倾向取 1。
- hi > 0:自旋倾向取 −1;在 QUBO 中若 Qii > 0,则 xi 倾向取 0。
一个直观的类比:外场像每个人的“个人意愿”,耦合像两个人之间的“合得来或合不来”。最终解是所有人意愿与两两关系共同作用下的最低能量配置。
三、从业务约束到系数的映射规则
建模的核心工作,是把“必须满足的约束”和“希望优化的目标”都写成二次多项式。常用映射规则如下:
| 业务语义 | QUBO 写法 | 作用 |
|---|---|---|
| 两个任务不能同时选 | P · xi · xj,P > 0 | 惩罚同时为 1 |
| 两个任务最好一起选 | −R · xi · xj,R > 0 | 奖励同时为 1 |
| 选中某任务有收益 | −ci · xi,ci > 0 | 降低选中成本 |
| 选中某任务有代价 | +ci · xi,ci > 0 | 提高选中成本 |
| 恰好选 k 个 | P · (Σ xi − k)² | 惩罚数量偏离 k |
其中 P 是惩罚系数,必须足够大,才能保证违反约束的解不会成为最低能量解。经验上,P 应大于该约束可能带来的最大收益差,否则求解器可能“宁愿违约”。
四、一个可手算的建模示例
假设要从三个任务 A、B、C 中选两个执行,收益分别为 3、2、4,且 A 与 B 不能同时选。定义 xA、xB、xC ∈ {0,1},取惩罚系数 P = 10。
f = -3x_A - 2x_B - 4x_C
+ 10 · x_A · x_B
+ 10 · (x_A + x_B + x_C - 2)²
展开平方项后,会得到线性项与二次项,全部并入 Q 矩阵。逐个枚举 8 种取值,可以验证:满足“选两个且不含 A、B 同选”的可行解中,{B, C} 的 f = −2 − 4 = −6 最低;而违反约束的 {A, B} 虽然收益 5,但惩罚 10 使其 f = −5 + 10 = +5,明显更高。这说明惩罚系数设置合理时,最低能量解就是可行最优解。
五、变量、系数与目标函数的对应关系图
下图把本节的核心对应关系集中呈现:左侧是伊辛语言,右侧是 QUBO 语言,中间通过 s = 2x − 1 建立映射;下方则展示业务约束如何落到耦合与外场上,并最终汇入同一个目标函数。
六、建模时的三个关键检查点
第一,变量语义要唯一。每个 xi 必须对应一个明确的“是/否”决策,例如“任务 A 是否被选中”。如果一个问题需要“从三个选项中选一个”,应使用三个二进制变量加一个“恰好选一个”的约束,而不是一个取值为 0/1/2 的变量。
第二,惩罚系数要足够大但不能过大。P 太小会导致约束被违反;P 过大则会让目标函数的数值范围被惩罚项主导,降低求解器对真实优化目标的区分度。实践中可以先取“最大单项收益的 1.5~3 倍”作为起点,再根据求解结果调整。
第三,常数项可以忽略。展开平方项时会产生常数,它不影响最优解的位置,只影响目标函数值。但若需要比较不同解的实际收益,应把常数加回去。