约束
| 约束 | 函数 | 用途 |
|---|---|---|
| 等式 | equal_to(expr, v) | expr == v(如“正好选 K 个”) |
| 唯一选择 | one_hot(array) | 数组中正好一个为 1 |
| 不等式 ≤ | less_equal(expr, v) | 预算 / 容量上限(背包、装箱) |
| 不等式 ≥ | greater_equal(expr, v) | “至少 N 个”(排班最低人数) |
from isingio import equal_to, one_hot, less_equal, greater_equal model += equal_to(q.sum(), 3) # 正好 3 个 model += one_hot(m[0, :]) # 这一行正好选一个 model += less_equal(sum(w[i]*q[i] for i in range(5)), 100) # 总重 ≤ 100 model += greater_equal(q.sum(), 1) # 至少 1 个
不等式自动引入隐藏松弛变量、整数自动二进制编码,对你完全透明。