or-tools cp-sat CpModel.AddAllowedAssignments
1 示例程序
链接: 官方文档
from ortools.sat.python import cp_model
def allowed_assignments_example(target_sum):
# 创建一个 CP-SAT 模型
model = cp_model.CpModel()
# 创建变量
x = model.NewIntVar(-10, 10, 'x')
y = model.NewIntVar(-10, 10, 'y')
# 添加允许的分配约束:x + y = target_sum
allowed_values = [(i, target_sum - i) for i in range(-10, 11)]
model.AddAllowedAssignments([(x, y)], allowed_values)
# 创建求解器
solver = cp_model.CpSolver()
# 解决问题
status = solver.Solve(model)
# 打印解
if status == cp_model.FEASIBLE:
print("找到解:")
print("x =", solver.Value(x))
print("y =", solver.Value(y))
else:
print("未找到解.")
# 目标和
target_sum = 5
# 调用示例函数
allowed_assignments_example(target_sum)
把一组变量约束到若干组常数组合上。