在并行计算模式下使用 fmincon 时出错
Error while using fmincon in parallel computing mode
我正在使用 UseParallel
命令在 fmincon
中进行并行计算,因为正常计算需要花费大量时间。但是在使用
np = 6
Cost = @(u)cost_min( u, CNT, u_in, y_in, Last );
options = optimoptions( 'fmincon', 'UseParallel', true );
[ufinal,fval,exitflag,output,grad] = fmincon( Cost, u, A, B, [], [], lb, ub, [], options );
function Cost = cost_min(u,CNT,u_in,y_in,Last)
global np
for i = 1
Costi(i) = (y(i) - yref(i))'*Q(i,i)*(y(i) - yref(i)) + (u(i)- u0)'*R(i,i)*(u(i)- u0);
end
for i = 2:np
Costi(i) = (y(i) - yref(i))'*Q(i,i)*(y(i) - yref(i)) + (u(i)- u(i-1))'*R(i,i)*(u(i)- u(i-1));
end
Cost = sum(Costi);
Simulink 显示错误
Size vector should be a row vector with real elements.
虽然没有 UseParallel
选项,但模拟工作正常。
问题很可能是由于您使用了 global
变量,通常应避免使用该变量,尤其是在使用并行处理功能时。
在 globals and parfor, and the last section of the documentation Troubleshoot Variables in parfor-Loops 上查看此问题。
我正在使用 UseParallel
命令在 fmincon
中进行并行计算,因为正常计算需要花费大量时间。但是在使用
np = 6
Cost = @(u)cost_min( u, CNT, u_in, y_in, Last );
options = optimoptions( 'fmincon', 'UseParallel', true );
[ufinal,fval,exitflag,output,grad] = fmincon( Cost, u, A, B, [], [], lb, ub, [], options );
function Cost = cost_min(u,CNT,u_in,y_in,Last)
global np
for i = 1
Costi(i) = (y(i) - yref(i))'*Q(i,i)*(y(i) - yref(i)) + (u(i)- u0)'*R(i,i)*(u(i)- u0);
end
for i = 2:np
Costi(i) = (y(i) - yref(i))'*Q(i,i)*(y(i) - yref(i)) + (u(i)- u(i-1))'*R(i,i)*(u(i)- u(i-1));
end
Cost = sum(Costi);
Simulink 显示错误
Size vector should be a row vector with real elements.
虽然没有 UseParallel
选项,但模拟工作正常。
问题很可能是由于您使用了 global
变量,通常应避免使用该变量,尤其是在使用并行处理功能时。
在 globals and parfor, and the last section of the documentation Troubleshoot Variables in parfor-Loops 上查看此问题。