我有几个.m
文件的程序组合。程序运行调用其中一个(main)命名tests.m
,然后从那里我调用另一个optFun.m
计算不同参数的地方。这些参数在一个while
循环内计算,当它们的值多次(例如 4500)没有变化时结束。该程序运行良好,但我必须执行 200 次才能获得 200 组不同的值。此外,我可以使用具有>12 个内核的计算机,因此我对.m
包含语句的主文件进行了一些更改parfor
,以部署 12 个 matlab 工作人员。我的目标是在一轮中获得 12 个不同的解决方案(初始程序的执行)。
function [] = tests(Num)
matlabpool open local 12;
y = zeros(itermax,15);
z = zeros(itermax,9);
parfor i = 1:itermax
[iternum tTot SolOpt ImpCostMAX minABFmax ABFmax ImportCosteABS] =...
optFun(N, K, AntNum,...
q, eps, Rt, Rs, theta, maxiter,...
strcat(particad,num2str(i)));
y(i,:) = [ i; iternum; tTot; SolOpt; ImpCostMAX(1); ImpCostMAX(2);...
q; eps; N; K; AntNum; maxiter;...
SolOpt/ImpCostMAX(1); SolOpt/ImpCostMAX(2); SolOpt/N];
z(i,:) = [ i; minABFmax(1); minABFmax(2); minABFmax(3); ABFmax(1);...
ABFmax(2); ABFmax(3);...
ImportCosteABS(1); ImportCosteABS(2)];
end %parfor
matlabpool close;
dlmwrite(nombre, y, 'delimiter', ' ','precision', '%9.5f');
dlmwrite(b, z, 'delimiter', ' ','precision', '%9.5f');
我已经运行了 matlab 的 12 名工作人员,但现在程序似乎在达到最佳或正确结果之前就停止了。似乎我的程序的参数解决方案是在达到 while 循环的 4500 次迭代之前输出的。虽然我获得了 12 种不同的解决方案,但似乎 12 名工作人员共享一些变量的值,因此当其他工作人员对解决方案进行了足够改进或其中几个人的总和被认为是正确的解决方案时,他们就会停止。你能帮我理解发生了什么吗?
非常感谢您的问候