【发布时间】:2020-06-05 10:33:49
【问题描述】:
我的任务是将 Solver 中使用的 GRG 非线性问题转换为 python。由于我没有使用 NLP 的经验,我正在尝试将其转换为 LP 问题。
我们有 12 个变量代表一年中每月产生的太阳能发电量,还有 12 个常数代表每月的电网消耗。目标是最大化十二个变量的总和。在 PuLP 中,我们用以下方式表示这些变量:
problem = LpProblem("Test_Problem", LpMaximize)
grid_consumption = [190, 409, 273, 424, 351, 412, 360, 509, 280, 241, 263, 175]
total_grid_consumption = sum(consumo_odf)
fv_productions = LpVariable.dicts('fv', list(range(12)))
有五个约束,一些显式依赖变量,一些隐式依赖。
例如,其中一个约束条件是太阳能发电量不能大于电网消耗量,这是一个常数。在 PuLP 中,我们以这种方式表示此约束:
for i in range(12):
fv_i - grid_consumption[i] <= 0
让我们头疼的约束之一是,1/3 的自我消耗必须大于补偿能量。 每月自用电量低于太阳能发电量(fv_i)时等于电网用电量,否则等于太阳能发电量:
for i in range(12):
if(fv_i>grid_consumption[i]):
self_consumption[i] = grid_consumption[i]
else:
self_consumption[i] = fv_i
Excel Solver 对此约束没有任何问题,但我们不知道如何将其转换为 PuLP 约束。欢迎任何帮助。这是我的第一个问题,所以如果我可以提供更多信息,请告诉我。谢谢。
【问题讨论】:
-
您应该提供有关您的问题的更多背景信息。你的输入数据是什么?预期的结果是什么?你试过什么了?请检查此stackoverflow.com/help/how-to-ask,尤其是此stackoverflow.com/help/minimal-reproducible-example,并相应地编辑您的问题。
-
PuLP 仅适用于线性模型,所以我怀疑这是正确的工具。
-
x=max(a,b)的正确表述取决于细节。 -
@alec_djinn 我添加了更多信息。对LP了解不多所以不知道够不够
标签: python excel linear-programming solver pulp