Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用CPLEX/AMPL it解决SOCP问题´;为什么用CPLEX/MATLAB求解时速度比用CPLEX/MATLAB求解时快10倍?_Matlab_Cplex_Ampl - Fatal编程技术网

用CPLEX/AMPL it解决SOCP问题´;为什么用CPLEX/MATLAB求解时速度比用CPLEX/MATLAB求解时快10倍?

用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

我解决了一个以二阶锥规划(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 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秒。