Modeling Ortools在求解时设置约束

Modeling Ortools在求解时设置约束,modeling,integer-programming,or-tools,operations-research,Modeling,Integer Programming,Or Tools,Operations Research,我正在使用ortools的CP-SAT解算器 我正在使用回调对象执行解算器 solver = cp_model.CpSolver() solution_agg = SolutionCollector(data, self.variables, self.products, self.vehicles) status = solver.SearchForAllSolutions(self.model, callback=solution_agg) 解agg应该过滤掉所有有一些错误赋值的解,我不

我正在使用ortools的CP-SAT解算器

我正在使用回调对象执行解算器

solver = cp_model.CpSolver()
solution_agg = SolutionCollector(data, self.variables, self.products, self.vehicles)
status = solver.SearchForAllSolutions(self.model, callback=solution_agg)
解agg应该过滤掉所有有一些错误赋值的解,我不能将它们建模为线性不等式

我所知道的是,生成的解决方案可以更快地收敛,并且可以减少对验证器的“点击”。如果我可以在回调中添加约束

我尝试在回调中这样做,添加了一个约束,以在小于最小容量的容量中寻找解决方案,直到现在

self.__model.Add(volume_expression <= min_found_yet)

self.\u model.Add(volume\u expression不直接添加。解算器是无状态的,在解算开始时读取cp\u模型一次


您所描述的似乎只是一个最小化属性。为什么不最小化体积表达式?

我想这样做,但SearchForAllSolutions不支持任何最小化。我需要所有可行的解决方案,以便该函数最适合。我可以通过CP SAT o的解算方法获得所有使表达式最小化的可行解决方案吗r MIP solver?如果您使用目标和解决方案回调进行求解,您将收集找到的所有解决方案,可能只有一个。现在,如果您最小化目标,存储最佳值,然后搜索没有任何目标的模型的所有解决方案,但在体积_表达式上有约束的情况下,您将找到接近最优值的所有解决方案艾尔。