将求解器GRG非线性函数转换为PuLP

问题描述 投票:1回答:1

我的任务是将Solver中使用的GRG非线性问题转换为python。由于我没有使用NLP的经验,因此我试图将其转换为LP问题。

我们有十二个代表一年中每月产生的太阳能的变量和十二个代表每月电网消耗的常数。目的是使十二个变量的总和最大化。在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约束。任何帮助都将受到欢迎。这是我的第一个问题,因此,如果我可以提供更多信息,请告诉我。谢谢。

我的任务是将Solver中使用的GRG非线性问题转换为python。由于我没有使用NLP的经验,因此我试图将其转换为LP问题。我们有十二个变量,...

python excel linear-programming solver pulp
1个回答
0
投票

好,所以我设法解决了。原来我不得不再添加两个约束:

© www.soinside.com 2019 - 2024. All rights reserved.