【问题标题】:How to get the variable and constraint of a cpsolver when using ortools使用ortools时如何获取cpsolver的变量和约束
【发布时间】:2021-01-16 07:26:53
【问题描述】:

作为题目,我在使用ortools的时候,想序列化cpsolver、CpSolverSolutionCallback和cpmodel,实现多线程计算。但是,我不能直接序列化这些对象,我认为我只需要序列化它们的配置并在每个线程中重置配置,例如 cpmodel 中的所有约束和变量以及 cpsolver 中的参数。这就是问题,如何使用 ortools 获取所有这些值?有api什么的吗?我在 Google 上搜索时找不到它。

【问题讨论】:

  • 哪种语言?

标签: or-tools


【解决方案1】:

每种语言都在协议缓冲区文件之上实现了一个瘦包装器。

此文件描述为here

可以从每个 CpModel 类访问此模型。

现在您可以直接使用此原型分发工作。您需要查看 CpSolver 类以了解如何调用 c++ Solve 方法。

见蟒蛇solve method

实现您的请求的方式。

  1. 正常创建模型。
  2. 提取底层协议缓冲区模型并将其用于并行/分发。
  3. Solve 将返回一个 CpSolverResponse 对象。要在响应中获取变量的值,请调用response.Value(var.Index()),或存储相关变量的索引并在Value() 方法调用中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    相关资源
    最近更新 更多