簡體   English   中英

在 Python 中使用 Gekko,對於多目標優化問題,是否所有目標函數都必須具有相同的單位?

[英]Using Gekko in Python, for a multi-objective optimization problem, do all objective functions have to be of the same unit?

根據 Gekko 文檔,對多個目標函數求和,並求解一個總體目標值。 這是否意味着所有目標函數都必須具有相同的尺寸或單位(m3 或 USD 或 kg)? 如果是這樣,有沒有辦法讓不同單位的多個目標? 另外,附帶問題,是否可以輕松提取每個目標 function 的最佳目標值(除了求解器給出的總體目標值)?

Gekko 將目標函數一起添加到單個目標語句中。 Gekko 不跟蹤單位,因此像Maximize(flow1) in kg/hrMaximize(flow2) in gm/hr這樣的單位不會被 Gekko 縮放。 這是一個簡單的示例問題,顯示了如何解決多目標 function 語句:

from gekko import GEKKO
m = GEKKO(remote=False)
x = m.Var()
obj1 = m.Intermediate((x-3)**2)
obj2 = m.Intermediate((x-2)**2)
m.Minimize(obj1)
m.Minimize(obj2)
m.solve(disp=False)
print('Obj Total: ',m.options.OBJFCNVAL)
print('Obj1: ',obj1.value[0])
print('Obj2: ',obj2.value[0])
print('x: ',x.value[0])

正如預期的那樣,解決方案是x=2.5

Obj Total:  0.5
Obj1:  0.25
Obj2:  0.25
x:  2.5

將這兩個目標加在一起以創建總體目標。

暫無
暫無

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

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