0

嗨,我有以下用于 linprog 优化的代码。

for j = 1:2

 for i = 1:24
   for K = 1:3
      for M = 1:3

   PV_output(:,:,:) = real(PV_power_output(:,:,:));
         WT_output(:,:,:) =  WT_power_output(:,:,:);

         PVenergy = sum(sum(PV_output(:,:,1)));
         WTenergy = sum(sum(WT_power_output(:,:,1)));


          f= [((CRF*CC_PV)/PVenergy)+OM_PV; ((CRF*CC_WT)/WTenergy)+OM_WT];

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


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

           lb = zeros(2,1);


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

      end
   end
  end
 end

            x(:,j,i,K,M) = linprog(f,A,b,[],[],lb,ub)

其中 WT_output 和 PV_output 是 3 维 365x24 数组,Demand 是 365x24

我正在尝试为 Demand 的每个 365x24 元素和每个维度优化 x1 和 x2,以便找到最佳的 K 和 M 组合

但是,就目前的代码而言,我不断收到错误消息-“A 中的行数必须与 b 的元素数相同。”

有没有人有什么建议?

4

2 回答 2

0

的文件linprog指出:

x = linprog(f,A,b) 求解 min f'*x 使得 A*x ≤ b。

因此,显然 A 中的行数必须与 b 的元素数相同,因为 A 可以是矩阵,而 b 是向量

如果您的问题是“为什么我没有合适的尺码?” 只需尝试在每一步打印向量/矩阵的大小,以查看错误在哪里(例如,您经常忘记转置矩阵)

于 2012-06-17T23:16:33.260 回答
0

您的工作区对 A 和 B 的大小有何看法?ChrisJamesC 对.. 它也发生在我身上.. 我在执行操作时忘记了转置矩阵。尝试通过放置断点在每一步检查工作区。这可能会有所帮助

于 2012-06-18T05:55:43.193 回答