У меня есть генетический алгоритм, и я пытаюсь распараллелить генерацию населения. Мой реальный код:Проблемы Parfor с формированием популяции
Q = [];
parfor i=1:halfPop
pa = P(select(f),:);
pb = P(select(f),:);
...
Q = [Q; pa; pb];
end
Matlab дает мне ошибку Временная переменная Q в parfor не инициализирован.
Так я переписал это так:
Q = [];
parfor i=1:halfPop
pa = P(select(f),:);
pb = P(select(f),:);
Q(i,:) pa;
Q(i+halfPop,:) pb;
end
Но теперь я получаю ошибку Переменная Q в parfor не могут быть классифицированы.. В редакторе MATLAB мне сообщается, что я не могу индексировать двумя разными способами одну и ту же матрицу внутри parfor.
Что мне делать?
Почему у вас есть это внутри 'parfor' цикла? Является ли 'select' функцией, которая занимает много времени? Если нет, цикл 'for' может быть быстрее. – Jonas
Ну, я упростил код для задавания вопроса, на самом деле есть пара других занимающих много времени вещей – Enoon