用CPLEX/AMPL it解决SOCP问题´;为什么用CPLEX/MATLAB求解时速度比用CPLEX/MATLAB求解时快10倍?
我解决了一个以二阶锥规划(SOCP)为模型的最优潮流(OPF)问题。首先在AMPL语言中使用解算器CPLEX求解,取0.08s;然后我用CPLEX for Matlab(命令cplexqcp)解决了同样的问题,用了0.86秒。显示的时间仅对应于解算器(CPLEX)所需的时间。有人知道是什么造成了这样的时差吗? CPLEX/AMPL的时间结果:用CPLEX/AMPL it解决SOCP问题´;为什么用CPLEX/MATLAB求解时速度比用CPLEX/MATLAB求解时快10倍?,matlab,cplex,ampl,Matlab,Cplex,Ampl,我解决了一个以二阶锥规划(SOCP)为模型的最优潮流(OPF)问题。首先在AMPL语言中使用解算器CPLEX求解,取0.08s;然后我用CPLEX for Matlab(命令cplexqcp)解决了同样的问题,用了0.86秒。显示的时间仅对应于解算器(CPLEX)所需的时间。有人知道是什么造成了这样的时差吗? CPLEX/AMPL的时间结果: Elapsed AMPL time : 0.430s Elapsed Solve time : 0.080s Elapsed CPU ti
Elapsed AMPL time : 0.430s
Elapsed Solve time : 0.080s
Elapsed CPU time: 0.510s
CPLEX/MATLAB的时间结果:
:
tic
[x,fval]=cplexqcp([],f,[],[],Aeq,beq,l,Qc,r,Li,Ls);
toc
:
Elapsed time is 0.860856 seconds.
注意:这个问题有542个变量。如果不了解细节,很难说,但我的第一个猜测是预处理。在将问题传递给解算器之前,AMPL将尝试简化问题,例如消除依赖于其他变量的变量。这会对解决时间产生显著影响 (对于大型问题,它也会对AMPL和解算器之间的数据I/O时间产生重大影响,但对于542个变量来说,这可能不是什么大问题。)
另一种可能性是AMPL和Matlab使用不同的选项(例如,不同的解决方案公差)调用CPLEX。如果再次运行该Matlab代码,您是否仍看到相同的时间?通常,第一次运行函数时,MATLAB需要加载和解析一堆文件,这需要额外的时间。您是对的,但显示的时间已经与第二次对应。第一次是1.0秒。