Есть ли способ применить не зависящую от порядка переменную в цикле Parfor? - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь использовать параллельных рабочих в задаче оптимизации, но не могу определить V. Я хорошо знаю, что V не зависит от порядка, но такая переменная (как V) должна быть определена для любой совокупности. метод оптимизации на основе. Есть какие-нибудь советы или хитрости, которые вы можете придумать?

Я даже пытался сохранять X после каждой итерации и загружать его перед вычислением вектора V, но затем у меня возникает ошибка нарушения прозрачности.

clc; clear all; close all
T = 10;
Func = @sum;
Z = rand(1, 3);
X = rand(T, 3);
F=0.5;
parfor t=1:T
    R=randperm(T);
    R(find(R==t))=[];
    V=X(R(1),:)+F*(X(R(2),:)-X(R(3),:));
    TmpZ=Func(Z(1,:));TmpX=Func(X(t,:));
    if TmpZ < TmpX
        X(t,:)=Z(1,:); Y(t,1)=TmpZ;
    else
        X(t,:)=X(t,:); Y(t,1)=TmpX;
    end
end
...