'for'循环不会循环

时间:2012-07-03 15:21:04

标签: matlab loops for-loop mathematical-optimization

我有以下代码

for i = 1:8760
    A = [PVtech(i,:) WTtech(i,:)];
    b = demand(i);
    f = [CRF * PVtechcost(i,:) .* PVcap(i,:) ./ PVtech(i,:) CRF*WTtechcost(i,:) .* WTcap(i,:) ./ WTtech(i,:)];
    x(i) = linprog(f, A,b,[], [], lb);
end

我正在尝试优化linprog超过8760数据集,但似乎无法让每一行循环。
当我运行它时,我的尺寸为'A为1x30(当它应该是8760乘30)。

有没有人看到我错误编码的地方?

1 个答案:

答案 0 :(得分:1)

是的,每次运行它都会用单行覆盖A [PVtech(i,:) WTtech(i,:)]

试试这个:A = [A; PVtech(i,:) WTtech(i,:)];即垂直连接

使用预分配,您的代码将如下所示:

numRows = 8760;
A = zeros(numRows, 30);

for i = 1:numRows

    A(i,:) = [PVtech(i,:) WTtech(i,:)];

    b = demand(i);

    f = [CRF*PVtechcost(i,:).*PVcap(i,:)./PVtech(i,:) CRF*WTtechcost(i,:).*WTcap(i,:)./WTtech(i,:)];

    x(i) = linprog(f, A,b,[], [], lb);

end