簡體   English   中英

GEKKO - 作為問題約束的變量列的指示變量

[英]GEKKO - Indicator Variable for Columns of Variables as Constraints of Problem

假設“我”如下:(指標)

列代表充電器 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對於其中一輛車輛只能是一個(充電)。 還有關於如何使用 integer 編程形成調度優化問題的附加信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM