我有一个优化问题,我正在使用或-tools cp_sat求解器。变量数约为3500个(均为布尔值),但约束的数量很大(~750000)。在3500个变量中,~3000直接依赖于其他500个变量。我测试了两种场景:
具有简单目标函数依赖于~3000约束的variables.
对于每一种情况,我们在求解器中加入了~500个变量的提示。
对于1,它不能在合理的时间内找到最优解。在运行30~45分钟后,对目标函数的改进可以忽略不计,但解决方案是令人满意的。
对于第二个人来说,行为是很奇怪的。大约一半的时间,它声称问题是不可行的,一半的时间,声称它找到了最优的解决方案,但只返回提示所暗示的解决方案。只有很少(不到两%的运行),它进行了一些优化,并返回可行的。
此外,案例1使用4-6 GB的内存,而案例2使用100-120 GB的内存。
第二种情况下的行为是预期的吗?我应该如何进行调试呢?
发布于 2020-08-04 21:01:22
对于案例2,问题变得非常大。您正在创建9M个布尔变量。
你在使用多线程吗?
你能试着缩小模型的大小,看看这个是否仍然是片状的吗?
问题创造是决定性的吗?
你用的系数很大吗?您是否可能遇到整数溢出错误?
谢谢
https://stackoverflow.com/questions/63251163
复制相似问题