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

问题描述 投票:0回答:1

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

我还尝试使用回调API来获得确定性的时间,但对于1秒的睡眠,它仅计0.0滴答。睡眠模式不是问题,因为一个简单的计算大量代码的代码也显示了0.0个滴答声。我认为它可能不会记录代码的运行时间。

CPLEX中的确定性时间究竟测量了什么?有什么方法可以像确定系统时间那样测量实际运行时间(尤其是实际回调运行时间),但是可以确定性的方式进行测量吗?

python cplex deterministic
1个回答
0
投票

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

此外,确定性时间仅在CPLEX中测量。它不考虑花费在用户代码(如回调)上的时间。如果要测量回调所花费的时间,则必须自己做(CPLEX没有必要跟踪此时间):只需在回调的开始处添加一个时间戳,在回调的末尾添加一个时间戳回调,然后计算差异。 CPLEX回调具有记录时间戳的功能,请参见参考文档。

如果要对编写的代码有确定的时间,那么必须自己动手,首先定义确定性的时间对代码意味着什么。

© www.soinside.com 2019 - 2024. All rights reserved.