Я пытаюсь выполнить параллельную обработку matlab, и во время этого я попытался применить эту вещь к своему коду. Ниже приведен код.Получение ошибки в parfor, но не в for-loop в matlab
matlabpool open 2
pop = create_population(match_matrix,PopSize);
ftns = zeros(PopSize,1);
parfor i=1:PopSize
ftns(i) = get_fitness(pop{i});
end
matlabpool close
Ошибка я получаю следующее
Error using parallel_function (line 589)
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error stack:
SWIFTga>(parfor body) at 127
Error in SWIFTga (line 126)
parfor i=1:PopSize
Я не подвожу никаких ошибок, если я заменю parfor с для. Пожалуйста, предложите, что может произойти неправильно ....
Эта ошибка предполагает, что результат get_fitness не является скалярным значением. Трудно сказать, в чем проблема, не видя кода в get_fitness и create_population. –
get_fitness дает скалярные значения, я проверил вручную, установив точку останова непосредственно перед parfor. Даже это не дает никакой ошибки, когда я реализую его в цикле for. После цикла for все элементы заполняются скалярными значениями. –
В parfor попробуйте сделать: test = get_fitness (pop {i}); disp (тест); , чтобы доказать, что вы получаете то, что ожидаете. –