python OR-当解决方案是数字列表时,打印解决方案的工具

xiozqbni  于 2023-05-05  发布在  Python
关注(0)|答案(1)|浏览(159)

当解决方案是一个2D数组时,我想在OR工具中打印解决方案,每次都有不同数量的对。
例如我有这样的代码

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]:
    ###############################
else:
    print('unsat')

我需要用什么来替换######'s,以打印出解决方案x_0 = 4,x_1 = 3,x_2 = 2 .........等

rdrgkggo

rdrgkggo1#

看起来你所做的就是创建一些变量,这些变量的范围可能从0到5。你永远不会对这些变量设置任何约束,因此求解后的变量将始终为false。下面是一些代码来显示一个变量在你的例子中永远不为真:

if status in [cp_model.OPTIMAL, cp_model.FEASIBLE]:
    for l in listOfPairs:
        for v in l:
            if solver.Value(v):
                print(v)

相关问题