预溶解阶段的Cplex极限时间

预溶解阶段的Cplex极限时间,cplex,Cplex,我正在使用Cplex 12.8,并试图解决ILP模型的硬时间限制,即总的解决时间不得超过某个阈值。我感兴趣的是找到可行解决方案的次数。我正在使用cplex python API。 我注意到,在某些情况下,这个约束没有得到尊重。 例如,考虑下面的CPLEX日志。 CPXPARAM_TimeLimit 30 CPXPARAM_Read_DataCheck 1 Tried aggregator

我正在使用Cplex 12.8,并试图解决ILP模型的硬时间限制,即总的解决时间不得超过某个阈值。我感兴趣的是找到可行解决方案的次数。我正在使用cplex python API。
我注意到,在某些情况下,这个约束没有得到尊重。 例如,考虑下面的CPLEX日志。

CPXPARAM_TimeLimit                               30
CPXPARAM_Read_DataCheck                          1
Tried aggregator 1 time.
MIP Presolve eliminated 71 rows and 0 columns.
MIP Presolve modified 2101 coefficients.
Reduced MIP has 2547 rows, 316485 columns, and 946792 nonzeros.
Reduced MIP has 316485 binaries, 0 generals, 0 SOSs, and 0 indicators.
Presolve time = 2.37 sec. (985.65 ticks)
Found incumbent of value 661.834300 after 4.66 sec. (2118.41 ticks)
Tried aggregator 1 time.
Reduced MIP has 2547 rows, 316485 columns, and 946792 nonzeros.
Reduced MIP has 316485 binaries, 0 generals, 0 SOSs, and 0 indicators.
Presolve time = 76.33 sec. (14585.95 ticks)

Root node processing (before b&c):
  Real time             =   81.22 sec. (16805.06 ticks)
Parallel b&c, 4 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                      ------------
Total (root+branch&cut) =   81.22 sec. (16805.06 ticks)
Cplex status= 107
即使解算器确认已设置了30秒的时间限制,但似乎预解算阶段忽略了该限制,并且时间限制仅在之后才会考虑

在这种特定情况下,Cplex状态表示已超过时间限制,但存在整数解决方案()

第一个解决方案可能包括禁用预解阶段,但我更希望保留该阶段,如果在预解的N秒内未找到整数解决方案,则只在时间限制返回状态中找到一个未找到整数的解决方案。

有没有办法实现这个目标

快速查看您的模型后(感谢您将其传递给我们),似乎该参数的默认行为是罪魁祸首。作为解决问题的一种方法,如果将参数设置为一个值,您的模型是否足够小,您可以将其以LP格式包含在此处(即,通过编辑您的问题)?如果在CPLEX interactive中运行模型,您会得到相同的行为吗?我刚刚尝试了交互式CPLEX,但仍然得到相同的行为
(预解算时间=61.67秒(12982.95滴答))
,即使解算器确认
CPLEX>以秒为单位的时间限制的新值:30
。模型很大(超过50MB),要把它添加到问题中有点困难。如果您愿意通过FTP(或其他方法)共享您的模型,您可以在rkersh的us.ibm.com向我发送电子邮件。如果不仔细观察,就很难弄清楚这里发生了什么。请记住,虽然这里可能确实存在问题,但CPLEX可能总是超出时间限制一小部分。无法保证会实施“硬时限约束”。