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

Matlab linprog错误-A中的行数必须与b中的元素数相同,matlab,linear-algebra,mathematical-optimization,linear-programming,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

嗨,我有以下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_输出和PV_输出为三维365x24阵列,需求为365x24

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

然而,由于代码当前的状态,我不断得到错误-A中的行数必须与b中的元素数相同

有人有什么建议吗?

说:

x=linprogf,A,b求解最小f'*x,使得A*x≤ b

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


如果你的问题是为什么我没有合适的尺码?只要试着在每一步打印向量/矩阵的大小,就可以看出错误在哪里。经常会发生这样的情况,即您忘记转置矩阵。例如,您的工作区对a和B的大小有什么看法?克里斯·贾姆斯:对。。这件事也发生在我身上。。我在执行操作时忘了转置矩阵。通过放置断点,尝试在每个步骤检查工作区。这可能会有所帮助

您好,您能否尝试提供一个较短的代码以了解您遇到的问题?您也可以很好地缩进它。如果您的问题只是linprog的使用,那么所有for循环都是无用的,您应该问一个与此问题完全相关的问题。然后,当您将有一个工作代码时,请随时回来询问有关优化的问题。