MIP配方性能下降

问题描述

我正在研究一个MIP模型。该模型通常求解速度非常快,但是如果我尝试向模型中添加IF-THEN约束,则求解时间将成倍增加,以至于其无法在2000 s内获得可行的解决方案。我也尝试过指标约束,但没有任何运气。是否有IF-THEN约束的替代方案可以更快地解决?还是应该缩小问题范围来解决?还是有任何CPLEX参数在IF-THEN约束下表现更好?任何想法都欢迎

解决方法

您可以看一下技术说明

使用指标约束与大M公式之间的区别

https://www.ibm.com/support/pages/node/397209

如果您的模型是关于调度的,那么您可以看看

https://www.slideshare.net/PhilippeLaborie/planningscheduling-with-cp-optimizer

,

您是否通过DOcplex或OPL使用Cplex? 您在模型 building 或模型 solve 中遇到性能下降的问题吗?

要调查解决方案中的性能较慢,是否可以尝试尽可能减少问题并生成LP或SAV文件?谢谢。

,

DOcplex的if-then构造分配两个内部约束:一个等效约束定义if_ct状态变量,一个指示符约束将该状态变量链接到then_ct 。一天结束时,会生成两个指标约束。

如果条件包含一个针对0或1测试的布尔变量,则可以将其简化为一个指示符约束(实际上,此简化将在Docplex的下一版本中完成)。例如,这段代码分配了一个指标约束

 m.add_indicator_constraint(b,y>=3)

但是这个分配了两个:

m.if_then(b==1,y>=3)

这不是必须的。但是,如果条件约束不是简单的二进制变量测试,则可以使用if-then构造。

如果使用了大量的if-then构造,这是否可以解释解决性能问题?拥有Model.print_information打印的数字以查看您的模型实际有多大。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...