如何在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
相关产品推荐
相关产品推荐

