You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OR-tools中打印可变数量配对的二维数组解?

OR-Tools中打印二维数组形式的求解结果

你可以通过嵌套循环遍历listOfPairs中的每个变量,调用solver.Value()方法获取变量的求解值,再按照指定格式输出。以下是两种实用实现方式:

方式一:逐个变量分行打印

# 遍历二维数组里的每一组配对
for pair in listOfPairs:
    # 遍历组内的每个变量
    for var in pair:
        print(f"{var.Name()} = {solver.Value(var)}")

方式二:整行拼接输出(匹配示例格式)

# 收集所有变量的结果字符串
result_parts = []
for pair in listOfPairs:
    for var in pair:
        result_parts.append(f"{var.Name()} = {solver.Value(var)}")
# 用逗号加空格连接所有结果并打印
print(', '.join(result_parts))

关键说明

  • var.Name():直接获取变量创建时定义的标识名(如x_0、x_1)
  • solver.Value(var):提取求解器计算出的变量具体数值
  • 嵌套循环可适配配对数量不固定的二维数组,无论外层有多少组配对、内层每组有多少变量,都能遍历输出所有结果

替换后的完整代码示例:

from ortools.sat.python import cp_model

model = cp_model.CpModel()
solver = cp_model.CpSolver()
numberOfPairs = 4

listOfPairs = [[model.NewIntVar(0, 5, 'x_{i}'.format(i=i+2*j)) for i in range(2)] for j in range(numberOfPairs)]

status = solver.Solve(model)
if status in [cp_model.OPTIMAL, cp_model.FEASIBLE]:
    # 采用整行输出的实现
    result_parts = []
    for pair in listOfPairs:
        for var in pair:
            result_parts.append(f"{var.Name()} = {solver.Value(var)}")
    print(', '.join(result_parts))
else:
    print('unsat')

内容的提问来源于stack exchange,提问作者GenericName101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:11:01