在Python中使用Gekko,对于多目标优化问题,所有目标函数都必须是同一个单元吗



根据Gekko文档,将对多个目标函数求和,并为求出总体目标值。这是否意味着所有目标函数都必须具有相同的尺寸或单位(m3、USD或kg(?如果是的话,有没有一种方法可以让不同的单位有多个目标?此外,附带问题是,是否可以容易地提取每个目标函数的最佳目标值(除了求解器给出的总体目标值之外(?

Gekko将目标函数一起添加到一个目标语句中。Gekko不跟踪单元,所以像kg/hr中的Maximize(flow1)gm/hr中的Maximize(flow2)之类的东西不会被Gekko缩放。以下是一个简单的示例问题,展示了如何解决多目标函数语句:

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

这两个目标加在一起形成了总体目标。

最新更新