[英]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/hr
和Maximize(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.