Matlab linprog错误 - A中的行数必须与b的元素数相同

时间:2012-06-17 21:02:19

标签: matlab linear-algebra mathematical-optimization linear-programming

您好我有以下代码进行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阵列,需求是365x24

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

然而,由于代码目前的情况,我不断收到错误 - “A中的行数必须与b的元素数相同。”

有人有任何建议吗?

2 个答案:

答案 0 :(得分:0)

The documentation of linprog声明:

  

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

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

如果你的问题是“为什么我的身材不好?”只是尝试在每一步打印矢量/矩阵的大小,以便查看错误的位置(例如,你忘记转置矩阵会发生很多事情)

答案 1 :(得分:0)

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