在并行计算模式下使用fmincon时出错

时间:2018-02-19 13:34:37

标签: matlab optimization parallel-processing simulink fminsearch

我使用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显示错误

  

大小矢量应该是具有真实元素的行向量。

虽然没有UseParallel选项,但模拟工作正常。

1 个答案:

答案 0 :(得分:0)

问题很可能是由于您使用了global变量,应该避免这种变量,特别是在使用并行处理功能时。

globals and parfor上查看此问题,以及文档的最后一部分Troubleshoot Variables in parfor-Loops