Sliced variable issue - variable cannot be classified
Show older comments
Dear All,
I'm trying to use parallel workers in an optimization problem but I cannot define X and Y as sliced variables. X contains the population, Y contains the fitness values. As the error message says: variable X & Y in a parfor cannot be classified.
First I define X, (it has to be outside the parfor loop otherwise I get new X-es in every single loop); than parfor follows:
parfor t=1:T
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
Thanks
Accepted Answer
More Answers (1)
Axel Groniewsky
on 7 May 2019
2 Comments
Edric Ellis
on 7 May 2019
This code is not order-independent, and cannot run inside parfor. Basically, the problem is that you're accessing elements of X that might or might not yet have been updated.
Axel Groniewsky
on 8 May 2019
Categories
Find more on Surrogate Optimization in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!