CPLEX:如何以确定性的方式获得实时运行时间?(Python)

CPLEX:如何以确定性的方式获得实时运行时间?(Python),python,cplex,deterministic,Python,Cplex,Deterministic,我解决了一个MIP问题,使用BranchCallback(单线程)使解决过程在每个分支上休眠1秒。我从日志中注意到,以秒为单位测量的系统时间在每次运行时都会发生变化,而以滴答数为单位测量的确定时间则没有变化。然而,问题是后者甚至没有改变是否应用1秒睡眠。相反,系统时间确实记录了睡眠时间 我还尝试使用回调api获取确定性时间,但它只计算1秒睡眠的0.0个滴答声。睡眠模式没有问题,因为一段简单的代码对一个大数字进行计数时,也会显示0.0个刻度。我认为它可能不会记录代码的运行时间 在CPLEX中,确定

我解决了一个MIP问题,使用BranchCallback(单线程)使解决过程在每个分支上休眠1秒。我从日志中注意到,以秒为单位测量的系统时间在每次运行时都会发生变化,而以滴答数为单位测量的确定时间则没有变化。然而,问题是后者甚至没有改变是否应用1秒睡眠。相反,系统时间确实记录了睡眠时间

我还尝试使用回调api获取确定性时间,但它只计算1秒睡眠的0.0个滴答声。睡眠模式没有问题,因为一段简单的代码对一个大数字进行计数时,也会显示0.0个刻度。我认为它可能不会记录代码的运行时间


在CPLEX中,确定时间的具体测量是什么?是否有任何方法可以像系统时间那样测量实际运行时间(特别是实际回调运行时间),但以确定性的方式测量

确定性时间是CPLEX所做工作的近似值(您可以将其视为在CPLEX内执行的指令数)。不执行任何操作不会执行任何指令,因此不计入确定性时间

此外,确定性时间仅在CPLEX内部测量。它不考虑在回调等用户代码中花费的时间

如果您想测量回调中花费的时间,那么您必须自己进行测量(CPLEX没有必要跟踪这一点):只需在回调开始时标记一个时间戳,在回调结束时标记一个时间戳,然后计算差值。CPLEX回调函数具有获取时间戳的功能,请参阅参考文档


如果你想为你编写的代码设定一个确定的时间,那么你必须自己滚动,首先定义确定的时间对你的代码意味着什么。

确定的时间是CPLEX所做工作的近似值(你可以将其视为在CPLEX内执行的指令数)。不执行任何操作不会执行任何指令,因此不计入确定性时间

此外,确定性时间仅在CPLEX内部测量。它不考虑在回调等用户代码中花费的时间

如果您想测量回调中花费的时间,那么您必须自己进行测量(CPLEX没有必要跟踪这一点):只需在回调开始时标记一个时间戳,在回调结束时标记一个时间戳,然后计算差值。CPLEX回调函数具有获取时间戳的功能,请参阅参考文档

如果您想为您编写的代码确定一个确定的时间,那么您必须滚动自己的时间,首先定义确定的时间对您的代码意味着什么