将求解器 GRG 非线性函数转换为 PuLP
Transform Solver GRG Nonlinear function into PuLP
我的任务是将求解器中使用的 GRG 非线性问题转换为 python。由于我没有 NLP 经验,我正在尝试将其转换为 LP 问题。
我们有十二个变量代表一年中每月产生的太阳能,十二个常量代表每月电网消耗。 objective就是最大化十二个变量的总和。在 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 求解器对此约束没有问题,但我们不知道如何将其转换为 PuLP 约束。欢迎任何帮助。这是我的第一个问题,所以如果我能提供更多信息,请告诉我。谢谢
好的,所以我设法解决了它。结果我不得不再添加两个约束:
for i in range(12):
self_consumption[i] <= grid_consumption[i]
self_consumption[i] <= fv_i
由于是最大化类型的问题,每个变量的值都会低于电网消耗和太阳能发电量之间的最低值。
我的任务是将求解器中使用的 GRG 非线性问题转换为 python。由于我没有 NLP 经验,我正在尝试将其转换为 LP 问题。
我们有十二个变量代表一年中每月产生的太阳能,十二个常量代表每月电网消耗。 objective就是最大化十二个变量的总和。在 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 求解器对此约束没有问题,但我们不知道如何将其转换为 PuLP 约束。欢迎任何帮助。这是我的第一个问题,所以如果我能提供更多信息,请告诉我。谢谢
好的,所以我设法解决了它。结果我不得不再添加两个约束:
for i in range(12):
self_consumption[i] <= grid_consumption[i]
self_consumption[i] <= fv_i
由于是最大化类型的问题,每个变量的值都会低于电网消耗和太阳能发电量之间的最低值。