複数のファイルからなるプログラム複合体があり.m
ます。プログラムはそのうちの 1 つ (メイン) を呼び出して実行tests.m
し、そこからoptFun.m
別のパラメーターを計算する場所を呼び出します。これらのパラメータはwhile
ループ内で計算され、値が一定回数 (たとえば 4500) 変更されないと終了します。プログラムは正常に動作しますが、200 の異なる値のセットを取得するには、200 回実行する必要があります。さらに、12 コアを超えるコンピューターを使用できるため.m
、ステートメントを含むメイン ファイルを少し変更してparfor
、matlab の 12 ワーカーをデプロイしました。私の目標は、1 回のラウンドで 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のワーカーのように見えるため、他のワーカーがソリューションを十分に改善するか、それらのいくつかの合計が正しいソリューションと見なされると停止します。何が起こっているのかを理解するのを手伝ってもらえますか?
よろしくお願いします。