0

「添え字代入の次元が一致しません。」linprog コーディングを実行するとき。

私のコードは

for M = 1 : size(PV_output,1)
for N = 1 : size(WT_output,2)


    f(:,M:N ) = [((CRF*CC_PV(M)/PVenergy(M)+OM_PV)); ((CRF*CC_WT(N))/WTenergy(N))+OM_WT];  % Objective function coefficients

    %A(:,:) = [-PV_output(:,:,K)  -WT_output(:,:,L)];
    A (:,M,N) = [-PV_output(:,M)  -WT_output(:,N) ];

    b(:,:)  = -Demand(:);

    lb = zeros(2,1);

    ub = [max_PV_area/PV_area; max_WT_area/WT_area]';

end
end 
[x, fval, exitflag] = linprog(f,A,b,[],[],lb,ub)

PV_output は 8760x1x27 で、WT_output は 8760x1x3 です

このコードで 27 と 3 の PV と WT のすべての組み合わせについて、以下の「f」係数を見つけようとしています。「f」にインデックスを付ける方法を知っている人はいますか?

ありがとうございました

4

1 に答える 1

0

最初の問題は、行列の 3 番目の次元のサイズを取得する必要があることです。

for M = 1 : size(PV_output,3) %# <---3, not 1  
    for N = 1 : size(WT_output,3) %# <---3, not 1 

次は欲しくない(:,M:N)けど(:,M,N)

f(:,M,N)

もっとありそうです。これで始められるはずです。デバッガーを使用して、マトリックスの次元のサイズを確認し、それらが本来あるべきサイズであることを確認します。たとえば、異なるサイズの行列を一緒に追加することはできないため、次元が同じであることを確認してください。

于 2012-06-21T18:16:12.560 に答える