【问题标题】:Is there any cost minimization algorithm for combining inverters in a solar power project?在太阳能项目中组合逆变器是否有任何成本最小化算法?
【发布时间】:2022-02-22 03:04:55
【问题描述】:

我在一家销售和安装 fotovoltaics 的公司工作。 在这里,我们有一个价格表,从 1 个面板的项目一直到 200 个面板。

对于这个定价表,我们在一个 Excel 电子表格上设置了一个简单的逻辑,根据面板的数量及其功率列出了该项目将使用的逆变器。

为简化起见,这些逆变器是根据面板的总功率选择的。 例如。 5 个 500 瓦 = 2500 瓦的面板将需要一个 2500 瓦的逆变器。 或者,100 个 500 瓦 = 50kW 的面板将需要 5 个 10000 瓦的逆变器。

我们今天拥有的 excel 电子表格已经可以根据面板数量和面板功率计算所需的逆变器。但要做到这一点,我们使用的逆变器必须始终相同,我们无法在列表中添加或删除逆变器。

如果我们更改逆变器列表,excel 公式就会中断。 此外,电子表格计算逆变器的方式没有考虑成本,只是简单地按升序组合。

例如在一个由 24 块 500 瓦的面板组成的太阳能项目中,我们拥有 12000 瓦的总面板功率。我们可以制作许多不同的逆变器组合。电子表格的升序将给我们一个 10000 瓦的逆变器(这是我们今天功率最高的逆变器)和另一个 2000 瓦的逆变器,总计 12000。但是这种组合并不是成本的最佳选择。更好的组合是 2 个 6000 瓦的逆变器。考虑到 2kW 逆变器的成本为 1949 美元,6kW 逆变器的成本为 3899 美元,10kW 逆变器的成本为 6179 美元(这些成本就是我们今天的成本)

我们今天使用的逆变器列表

电子表格结果示例,考虑到 530 瓦面板

我对编程不太了解,我只是想找到一种自动执行此操作的解决方案,我希望能够建立一个基于成本优化逆变器组合的逻辑,而且我可以在列表中添加或删除任何逆变器,而无需更改公式。

抱歉,文字太长了,但我试图以最好的方式描述我的问题。我接受任何形式的帮助或指导,除了 Excel 电子表格,我可以在这些方面做得更好,即使我可以得到帮助。提前感谢所有花时间阅读此问题的人。

【问题讨论】:

  • 我会将其设置为使用 Solver - 逆变器容量,即 kW 必须超过光伏容量并且成本必须最低。由于您的数据是图片形式,因此无法尝试,我没有时间将其输入。但是,我已经在这里完成了类似的 Solver 解决方案,因此您可以查找这些解决方案。
  • 这里是题外话,但是我对系统的类型很好奇。对于带有备用电池的住宅离网系统,我根据最大预期负载确定了逆变器的大小。
  • 这是典型的linear programming,带有整数变量。 max power 列有什么用吗?使用价格最小化,任何组合都不会选择 grw 3.0min 的逆变器。逆变器供应有限制吗?
  • @det 是的,“最大功率”列将确定可以添加以使逆变器过载的最大面板数量。但在这种情况下,我只会使用常规电源。逆变器 grw 3.0min 是一种特殊类型,因此它也将从本示例中删除,谢谢!逆变器电源没有限制。
  • @RonRosenfeld 我们的系统仅在电网上运行。

标签: excel optimization excel-formula


【解决方案1】:

由于我不使用excel并且您愿意接受建议,我将发布R解决方案:

所需的库

install.packages("tribble")
install.packages("lpSolve")

library(tribble)
library(lpSolve)

只需要第一次安装包。

data.frame 形式的数据

inverters <- tibble::tribble(
  ~Inverter,     ~Power,    ~Cost,
  "GRW 1.5",     1500,      1809,
  "GRW 2.0",     2000,      1949,
  "GRW 2.5",     2500,      2049,
  "GRW 3.0 MIC", 3000,      2229,
  "GRW 5.0",     5000,      3549,
  "GRW 6.0",     6000,      3899,
  "GRW 8.0",     8000,      4869,
  "GRW 10",      10000,     6179
)

data.frame 的列是不言自明的。添加新行将添加新逆变器,删除行将删除该逆变器。此外,现有逆变器的更新只需更改值即可。

最小功率值

min_power <- 12000

min_power是我们希望通过逆变器组合来超越的功率。

invertersmin_power 是用户输入。优化过程基于这些输入,不需要任何用户更改。

优化

res <- lpSolve::lp(
  direction = "min",
  objective.in = inverters$Cost,
  const.mat = matrix(inverters$Power, nrow = 1),
  const.dir = ">=",
  const.rhs = min_power,
  all.int = TRUE
)

解决方案

solution <- setNames(res$solution, inverters$Inverter)
solution <- solution[solution > 0]
solution_cost <- res$objval

对于您的示例解决方案及其成本:

GRW 6.0 
      2 
7798

【讨论】:

  • 这或多或少是我想象的代码中的样子,但我不熟悉这种编程语言,那是什么?关于我可以在哪里实施的任何想法?顺便说一句,感谢您的回答,这很有帮助!
  • 观看视频如何安装和运行它,例如:youtube.com/watch?v=TFGYlKvQEQ4
猜你喜欢
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多