假设“I”如下:(指示符)
列代表充电器 1 和充电器 2。
行代表 EV1、EV2、EV3。
时间戳等于 6。
每辆电动汽车只能用一个充电器充电。例如,对于 EV 1:在时间 0 处,I = [0,1],在时间 1 处,I = [1,0],这不是有效情况。我想在充电器数量大于2时实现它。
什么样的约束可以满足这个要求?
I= [[[0.0], [1.0]],
[[0.0], [1.0]],
[[0.0], [1.0]]],
[[[1.0], [0.0]],
[[1.0], [0.0]],
[[1.0], [0.0]]],
[[[0.0], [0.0]],
[[0.0], [0.0]],
[[0.0], [0.0]]],
[[[0.0], [0.0]],
[[0.0], [0.0]],
[[0.0], [0.0]]],
[[[0.0], [0.0]],
[[0.0], [0.0]],
[[0.0], [0.0]]],
[[[0.0], [0.0]],
[[0.0], [0.0]],
[[0.0], [0.0]]]], dtype=object)
最佳答案
解决此类问题的典型方法是创建一个变量数组以供充电器使用,例如I = m.Array(m.Var,(3,6),integer=True,lb= 0,ub=1)
3 个 EV 和 6 个时间段。如果只有一个充电器,则可以使用每个时间段的方程式创建约束,例如:
for i in range(6):
m.Equation(m.sum(I[:,i])==1)
其中一辆车的指示变量I
只能为1(正在充电)。有关如何形成 scheduling optimization problems with integer programming 的其他信息.
关于python - GEKKO - 作为问题约束的变量列的指示变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68765720/