Java CP-SAT中的终端检测

Java CP-SAT中的终端检测,java,constraint-programming,or-tools,Java,Constraint Programming,Or Tools,我正在探索CP-SAT API,以获取给定约束集的所有解决方案 根据API文档,找到的每个解决方案都会调用onSolutionCallback()函数。但是,如果我需要找到给定模型的所有解决方案,是否有方法通过onSolutionCallback()函数或其他方式检测最后一个解决方案或不再存在解决方案的可行性 我发现可以使用searchAllSolutions()API,我们可以根据时间或解决方案的数量设置终止条件。假设我可以无限期地等待,我如何检测到没有更多可行的解决方案 另一个相关问题:

我正在探索CP-SAT API,以获取给定约束集的所有解决方案

根据API文档,找到的每个解决方案都会调用onSolutionCallback()函数。但是,如果我需要找到给定模型的所有解决方案,是否有方法通过onSolutionCallback()函数或其他方式检测最后一个解决方案或不再存在解决方案的可行性

我发现可以使用searchAllSolutions()API,我们可以根据时间或解决方案的数量设置终止条件。假设我可以无限期地等待,我如何检测到没有更多可行的解决方案

另一个相关问题: CP SAT解算器是否有机会运行到非确定性状态或运行到无限循环(或类似情况),即使给定的约束集存在可行的解决方案? 我计划将CPSAT用于生产用例,因此希望了解其决定论和执行上限


编辑:添加了第二个问题。

我真的不明白这个问题,你不能等到
searchAllSolutions
完成吗?据我所知,searchAllSolutions()是一个异步API。Solver为找到的每个解决方案调用onSolutionCallback()函数一次。无法确定是否所有解决方案都已找到,或者我们需要等待更长的时间。实际上,当所有解决方案都已找到且搜索已正常终止时,Solve()将返回最优。看,我一直是个笨蛋。我误解了文档,并假设searchAllSolutions()有时会返回“可行”,我认为没有办法强制它搜索所有解决方案。另一个相关问题:CP SAT解算器是否有可能运行到非确定性状态或无限循环(或类似情况)即使对于给定的约束集存在可行的解决方案?我真的不理解这个问题,您不能等到
searchAllSolutions
完成吗?根据我的理解,searchAllSolutions()是一个异步API。Solver为找到的每个解决方案调用onSolutionCallback()函数一次。无法确定是否所有解决方案都已找到,或者我们需要等待更长的时间。实际上,当所有解决方案都已找到且搜索已正常终止时,Solve()将返回最优。看,我一直是个笨蛋。我误解了文档,并假设searchAllSolutions()有时会返回“可行”,我认为没有办法强制它搜索所有解决方案。另一个相关问题:CP SAT解算器是否有可能运行到非确定性状态或无限循环(或类似情况)即使对于给定的约束集存在可行的解决方案?