【问题标题】:Matlab linprog error - The number of rows in A must be the same as the number of elements of bMatlab linprog错误 - A中的行数必须与b的元素数相同
【发布时间】:2012-06-17 21:02:19
【问题描述】:

您好,我有以下用于 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 的元素数相同。”

有人有什么建议吗?

【问题讨论】:

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

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    The documentation of linprog 声明:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 2013-02-27
      相关资源
      最近更新 更多