首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指定在OR工具中打印的解决方案

指定在OR工具中打印的解决方案
EN

Stack Overflow用户
提问于 2020-10-21 18:47:25
回答 1查看 102关注 0票数 0

当我得到下面的解决方案时,例如在一个轮班安排的sat问题中,我如何用SolveWithSolutionCallback方法指定我想要打印的解决方案?

代码语言:javascript
复制
Solution 13, time = 37.58 s, objective = 82
Solution 14, time = 37.71 s, objective = 81
Solution 15, time = 37.87 s, objective = 80
Solution 16, time = 37.96 s, objective = 76

假设我想看看解决方案13和14产生了什么,有什么方法可以做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2020-10-21 19:31:41

您可以将解决方案存储在回调中的列表中,也可以将其记录到文件中,等等:

代码语言:javascript
复制
from ortools.sat.python import cp_model


class Callback(cp_model.CpSolverSolutionCallback):

    def __init__(self, variables):
        cp_model.CpSolverSolutionCallback.__init__(self)
        self.variables = variables
        self.solutions = []

    def on_solution_callback(self):
        self.solutions.append([self.Value(v) for v in self.variables])


if __name__ == "__main__":
    model = cp_model.CpModel()

    num_vals = 3
    x = model.NewIntVar(0, num_vals - 1, "x")
    y = model.NewIntVar(0, num_vals - 1, "y")
    z = model.NewIntVar(0, num_vals - 1, "z")

    model.Add(x != y)

    solver = cp_model.CpSolver()
    callback = Callback([x, y, z])
    solver.SearchForAllSolutions(model, callback)
    print(callback.solutions)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64461931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档