0

嗨,我正在使用蛮力方法来检查“面板”和“涡轮机”的可能组合

我的代码是

 for number_panels = 0:5

for number_turbines = 0:10


    for n = 1:24 % number of hours per day



deficit(n) = Demand(n) - (PV_supply(n)*number_panels) -...
 (WT_supply(n)*number_turbines);% hourly power deficit

        if deficit(n)<0

            deficit(n) = 0;

        end

我上面的问题是我还没有弄清楚这段代码的正确索引。

我想做的是找到“number_panels”、“number_turbines”和“n”的“赤字”。就目前而言,我只能找到最后一个 for 循环的“赤字”。我如何编码以便可以选择访问第 n 行(或“n”组,即 1-24)以及“number_panels”“number_turbines”选项?


谢谢 - 为了找到每个赤字(n)值的总和,从而获得 24 小时内各自的总赤字,我做了以下事情,在我看来,这似乎能够做我所要求的,但我越来越不正确答案:

 daily_deficit(number_panels + 1, number_turbines + 1) =...
 sum(deficit(number_panels + 1, number_turbines + 1,n)) –
4

2 回答 2

0

您的问题是您deficit仅将结果存储为 value 的函数n,即每天的小时数。在您的内部循环n中,您每次都通过外部循环不断替换值,因此在运行结束时,您只有n = 1:24at number_panels= 5 和number_turbines= 10 的值。

试试这个:

deficit(number_panels+1, number_turbines+1, n) = ...

最后,您可以检查给定三个索引的任何组合。我在 number_panels 和 number_turbines 中添加了 1 的值,因为 MATLAB 使用基于 1 的索引。要获得特定数量的面板或涡轮机的结果,请确保在检查时加 1。

具体来说,对于一天中 5 小时的 3 个面板和 4 个涡轮机:

disp(deficit(3+1, 4+1, 5))

编辑:将 1 添加到 和 的值number_panelsnumber_turbines避免 0 索引。

于 2012-07-13T15:57:08.483 回答
0

函数 calcDeficit.m:

File Edit Options Buffers Tools ObjC Help                                                                              
function deficit = calcDeficit (Demand, PV_supply, WT_supply)

  % initialize the size (good practice)
  deficit = zeros(6,11,24);


  for number_panels = 0:5

    for number_turbines = 0:10

      for n = 1:24 % number of hours per day
        deficit(number_panels+1,number_turbines+1,:) = Demand(n) - (PV_supply(n)*number_panels) -...
          (WT_supply(n)*number_turbines);% hourly power deficit

        if deficit(n)<0 
          deficit(n) = 0;
        end
      end
    end
  end
return

示例调用:

Demand=randn(24,1); PV_supply=randn(24,1); WT_supply=randn(24,1); test(Demand,PV_supply,WT_supply)

您通过以下方式访问需求

Demand(panels+1,number_turbines+1,hour)
于 2012-07-13T16:07:44.443 回答