您能否在 OR-tools 求解器找到的不同解决方案之间提供外部数据?

Can you feed OR-tools solver external data inbetween different solutions it finds?

我正在尝试解决 min-SAT 问题的复杂变体。到目前为止,在这个过程中我有两个子问题,都给出了需要在 objective 函数中考虑的解决方案值。但是,我使用 OR-tools cp_model 模块只解决了两个问题中的一个。另一个是通过外部算法解决的。现在,理想情况下我会执行以下操作:

  1. cp-solver 找到第一个子问题的解,
  2. 暂停求解器,
  3. 使用外部算法解决第二个子问题,将 cp 求解器找到的解作为参数,
  4. 将外部算法的结果反馈给cp-solver,
  5. cp-solver 现在认为 objective 值是它自己找到的第一个子问题的解决方案与外部算法找到的解决方案的总和,
  6. cp-solver 进入下一次迭代并为新分配重复步骤 1-6

所以我的问题是:是否有 Google OR 工具的功能可以让我执行类似于步骤 1-6 的操作,其中求解器与外部算法合作运行并相应地提供值?我刚开始使用这个模块,所以我不知道我可以在 Google 上搜索哪些术语来找到我需要的东西。非常感谢我的朋友们。最好的问候,30cm.

在cp-sat求解器中,solve()是无状态的,是一个黑盒子。 你唯一能做的就是修改模型并解决。