Ortools在求解时设置约束

时间:2019-03-12 10:49:55

标签: modeling integer-programming or-tools operations-research

我正在使用ortools的CP-SAT求解器 https://developers.google.com/optimization/cp/cp_solver

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

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)

这不会产生错误,但是验证者拒绝解决方案的次数仍然相同。

求解时是否可能形成约束?如果不在Ortools中,那么可以提供其他解决方案吗?

0 个答案:

没有答案