【问题标题】:Pulp - LP Objective function formulation纸浆 - LP 目标函数公式
【发布时间】:2023-01-12 10:37:45
【问题描述】:
我正在努力解决电动汽车充电站的集合覆盖问题。我的目标是最大化充电站半径所覆盖的需求。
我有两个变量来构成目标函数。
Yij 表示需求位置 i 被充电站 j 的半径覆盖。
类似地,Xj 表示充电站 j 是否开放。
我正在寻找创建一个目标函数,如下所示:
最大化 OF = ((Y11 + Y21+ Y31 + .... Yn1) * X1) + ((Y12 + Y22+ Y32 + .... Yn2) * X2) + ....
我尝试了以下方法,但遇到了问题:
OptModel += lpSum(((Y[i,j] for i in range (I)) * X[j]) for j in range(J))
关于如何制定这个的任何想法?
【问题讨论】:
标签:
linear-programming
pulp
【解决方案1】:
你的描述不清楚为什么Y是一个变量?如果需求位置在某个来源的半径范围内,这听起来应该是一个参数(已知值)......关于为什么这不为人知,必须有一些其他的细微差别。 (如果能算出来,算出来,做成参数,你的问题就解决了。)
您提出的陈述是非法的,因为您将变量相乘并且使陈述非线性。你需要重新制定......
你有一个隐含的“和”条件,如果Y和X都为真,你只想获得信用,所以你需要一个额外的变量或者巧妙地关联X和@987654325 @ 因为你不能将它们相乘。
你为什么不添加这个约束:
Y[i, j] <= X[j] for each j
这将从根本上将 Y 的含义更改为“在工作充电器的范围内”。
还要意识到,如果您总结所有这些 Y 变量(或者您似乎在目标中试图做的那样),您将重复计算可以从多个站点收取的任何需求——不确定这是故意的还是不是。