我有一個程序化合物的幾個.m
文件。該程序運行調用其中一個(主)名爲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');
我已經運行了12名工人MATLAB的,但現在程序似乎停止達到最佳的或正確的結果之前。看來我的程序的參數解決方案在達到while循環的4500次迭代之前被輸出。 雖然我獲得了12個不同的解決方案看起來像12名工作人員共享某些變量的值,所以當其他工作人員改進解決方案時足以停止或者其中幾個人的總和被認爲是正確的解決方案。 你能幫我理解發生了什麼嗎?
非常感謝你提前 問候
您可能想要提供一個代碼示例而不是描述代碼 –
您能否確保實際上發生意外的行爲?因此,請將其中一個輸入/輸出組合分開運行,看看它是否真的不同。 –
謝謝你的回答。我已經分開運行了,我意識到有什麼不對。我可以使用普通循環進行測試。該計劃需要一段時間才能獲得解決方案。感謝和問候。 – user1993416