cplex中的实时运行时间 我有一个CPLEX C++代码,我在试图寻找真正的经过时间。我使用cplex.getTime(),但它返回CPU时间(我在UNIX系统上运行它)。我的第一个问题:CPU时间是否以秒为单位返回?就是说1500。是指1500秒吗?第二个问题:有没有一种方法可以在C++中获得真正的经过时间?p> cplex.getTime()应该以秒为单位返回“已用”时间,但通常需要使用“挂钟时间”设置。较新的手册并不能很清楚地说明两者之间的区别,但较旧的手册在这方面更好。例如,CPLEX 10手册说明:

cplex中的实时运行时间 我有一个CPLEX C++代码,我在试图寻找真正的经过时间。我使用cplex.getTime(),但它返回CPU时间(我在UNIX系统上运行它)。我的第一个问题:CPU时间是否以秒为单位返回?就是说1500。是指1500秒吗?第二个问题:有没有一种方法可以在C++中获得真正的经过时间?p> cplex.getTime()应该以秒为单位返回“已用”时间,但通常需要使用“挂钟时间”设置。较新的手册并不能很清楚地说明两者之间的区别,但较旧的手册在这方面更好。例如,CPLEX 10手册说明:,c++,unix,cplex,C++,Unix,Cplex,时钟类型参数确定ILOG CPLEX的测量方式 计算时间。默认情况下,CPU时间在以下情况下最合适 使用一个处理器。它报告CPU花费的时间量 代表应用程序执行计算。平行 执行时,CPU时间取决于系统,通常不会反映 所需的度量。在一些并行系统上,它可以测量聚合 CPU时间,即所有处理器使用的时间之和。在其他方面,, 它可能只报告一个进程的CPU时间。简言之,它可能会给出 你可能会误解平行速度的指示 另一种类型,挂钟时间,通常更适合 并行计算,因为它测量总的物理时间 手术开始后。当多个进程处于活动状

时钟类型参数确定ILOG CPLEX的测量方式 计算时间。默认情况下,CPU时间在以下情况下最合适 使用一个处理器。它报告CPU花费的时间量 代表应用程序执行计算。平行 执行时,CPU时间取决于系统,通常不会反映 所需的度量。在一些并行系统上,它可以测量聚合 CPU时间,即所有处理器使用的时间之和。在其他方面,, 它可能只报告一个进程的CPU时间。简言之,它可能会给出 你可能会误解平行速度的指示

另一种类型,挂钟时间,通常更适合 并行计算,因为它测量总的物理时间 手术开始后。当多个进程处于活动状态时,以及 当并行优化器处于活动状态时,挂钟时间可能非常长 与CPU时间不同

您可以在以下位置选择时钟设置的类型:

交互式优化器,命令集为clocktype i。音乐会 技术,使用IloCplex方法setParam(时钟类型,i)。可调用 库,带有例程CPXsetintparam(env,CPX_PARAM_CLOCKTYPE,i)。 将i替换为值1以指定CPU时间,或将i替换为值2以指定CPU时间 挂钟时间


或者,只需使用标准的系统库调用来获取开始和结束时间,然后自己进行减法。我做了很多。在C++中,

,使用下面的代码:

IloNum start;
start=cplex.getTime();
cplex.solve();
cplex.out() << "solution time=" << cplex.getTime()-start << endl;
IloNum启动;
start=cplex.getTime();
cplex.solve();
cplex.out()