gpt4 book ai didi

matlab - Parfor 人口生成问题

转载 作者:行者123 更新时间:2023-12-04 05:12:05 26 4
gpt4 key购买 nike

我正在运行遗传算法,并且正在尝试并行化种群生成。
我的实际代码:

Q = [];
parfor i=1:halfPop
pa = P(select(f),:);
pb = P(select(f),:);
...
Q = [Q; pa; pb];
end

Matlab 给了我错误 parfor 中的临时变量 Q 未初始化。

所以我把它改写成这样:
Q = [];
parfor i=1:halfPop
pa = P(select(f),:);
pb = P(select(f),:);
Q(i,:) pa;
Q(i+halfPop,:) pb;
end

但现在我收到错误 parfor 中的变量 Q 无法分类。 .在编辑器中,MATLAB 告诉我不能以两种不同的方式索引 parfor 中的同一个矩阵。

我能做什么?

最佳答案

parfor尝试拆分 Q分成与迭代次数一样多的切片,因此每次迭代都会获得 Q 的一个切片.在你的情况下,每次迭代应该得到两个切片,其中 parfor无法处理(还)。

为了解决这个问题,你可以定义两个变量,QaQb ,您可以在 parfor 结束后合并循环。

[Qa,Qb] = deal(zeros(halfPop,size(P,2)));
parfor i=1:halfPop
pa = P(select(f),:);
pb = P(select(f),:);
Qa(i,:) = pa;
Qb(i,:) = pb;
end

Q = zeros(2*halfPop,size(P,2));
Q(1:2:end,:) = Qa;
Q(2:2:end,:) = Qb;

关于matlab - Parfor 人口生成问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14787677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com