根据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
这两个目标加在一起形成了总体目标。